สารบัญ:

โมดูลควบคุม LCD Uber I2C: 6 ขั้นตอน
โมดูลควบคุม LCD Uber I2C: 6 ขั้นตอน

วีดีโอ: โมดูลควบคุม LCD Uber I2C: 6 ขั้นตอน

วีดีโอ: โมดูลควบคุม LCD Uber I2C: 6 ขั้นตอน
วีดีโอ: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, กรกฎาคม
Anonim
โมดูลควบคุม LCD Uber I2C
โมดูลควบคุม LCD Uber I2C
โมดูลควบคุม LCD Uber I2C
โมดูลควบคุม LCD Uber I2C
โมดูลควบคุม LCD Uber I2C
โมดูลควบคุม LCD Uber I2C

คำนำ

คำแนะนำนี้มีรายละเอียดเกี่ยวกับวิธีการสร้างโมดูลคอนโทรลเลอร์ที่ใช้ LCD HD44780 (รูปที่ 1 ด้านบน) โมดูลนี้อนุญาตให้ผู้ใช้ควบคุมทุกด้านของ LCD โดยทางโปรแกรมผ่าน I2C ซึ่งประกอบด้วย LCD และจอแสดงผล คอนทราสต์และความเข้มของแสงด้านหลัง แม้ว่า Arduino Uno R3 จะใช้เพื่อสร้างต้นแบบ แต่ก็จะทำงานได้ดีพอๆ กันกับไมโครคอนโทรลเลอร์ที่รองรับ I2C

บทนำ

ดังที่ได้กล่าวไว้ข้างต้น บทความนี้จัดทำเอกสารเกี่ยวกับการสร้าง I2C LCD Controller Module โดยพื้นฐานแล้วมีวัตถุประสงค์เพื่อเป็นแบบฝึกหัดการออกแบบเพื่อกำหนดระยะเวลาในการสร้าง PCB ที่ใช้งานได้จริง

การออกแบบแทนที่โมดูลคอนโทรลเลอร์ทั่วไปมาตรฐาน (รูปที่ 3 ด้านบน) และวาดบน Instructables และไลบรารี่ที่ฉันได้สร้างไว้ก่อนหน้านี้

จากต้นแบบแนวคิดเริ่มต้น (รูปที่ 2 ด้านบน) ไปจนถึง PCB ที่ทดสอบอย่างสมบูรณ์ (รูปที่ 1 ด้านบน) เสร็จสมบูรณ์แล้ว ใช้เวลาทั้งหมด 5.5 วัน

ต้องใช้อะไหล่อะไรบ้าง?ดูรายการวัสดุที่แนบมาด้านล่าง

ฉันต้องการซอฟต์แวร์อะไร

  • Arduino IDE 1.6.9,
  • Kicad v4.0.7 หากคุณต้องการปรับเปลี่ยน PCB มิฉะนั้น เพียงแค่ส่ง 'LCD_Controller.zip' ไปยัง JLCPCB

ฉันต้องการเครื่องมืออะไร?

  • กล้องจุลทรรศน์อย่างน้อย x3 (สำหรับการบัดกรี SMT)
  • หัวแร้ง SMD (พร้อมปากกาฟลักซ์เหลวและหัวแร้งบัดกรี)
  • แหนบที่แข็งแรง (สำหรับการบัดกรี SMT)
  • คีมละเอียด (ปลายแหลมและจมูกดูแคลน)
  • DMM พร้อมการตรวจสอบความต่อเนื่องของเสียง

ฉันต้องการทักษะอะไร?

  • ความอดทนมาก,
  • ความคล่องแคล่วในการใช้งานและการประสานมือและตาที่ยอดเยี่ยม
  • ทักษะการบัดกรีที่ยอดเยี่ยม

หัวข้อที่ครอบคลุม

  • บทนำ
  • ภาพรวมวงจร
  • การผลิต PCB
  • ภาพรวมซอฟต์แวร์
  • การทดสอบการออกแบบ
  • บทสรุป
  • ข้อมูลอ้างอิงที่ใช้

ขั้นตอนที่ 1: ภาพรวมวงจร

ภาพรวมวงจร
ภาพรวมวงจร

แผนภาพวงจรเต็มรูปแบบของอุปกรณ์อิเล็กทรอนิกส์ทั้งหมดแสดงไว้ในภาพที่ 1 ด้านบนพร้อมกับ PDF ด้านล่าง

วงจรนี้ได้รับการออกแบบมาให้ใช้แทนโมดูลคอนโทรลเลอร์ LCD PCF8574A I2C มาตรฐานได้อย่างแม่นยำ โดยมีการปรับปรุงดังต่อไปนี้

  • ผู้ใช้ I2C สามารถเลือกความเข้ากันได้ 3v3 หรือ 5v,
  • การควบคุมคอนทราสต์แบบดิจิตอลหรือการตั้งค่าหม้อแบบธรรมดา
  • การเลือกความเข้มของแสงด้านหลังที่ปรับเปลี่ยนได้พร้อมการควบคุมฟังก์ชัน Quartic easing เพื่อให้ได้แสงที่ซีดจางอย่างราบรื่น

การควบคุมจอแสดงผล LCD

นี่คือโทรสารของ I2C LCD Controller Module มาตรฐานที่ใช้ PCF8574A (IC2) สำหรับ I2C เป็นการแปลงแบบขนาน

ที่อยู่ I2C เริ่มต้นสำหรับสิ่งนี้คือ 0x3F

ความเข้ากันได้ 3v3 หรือ 5v I2C

สำหรับการดำเนินการ 3v3 ให้พอดีกับ Q1, Q2 ROpt1, 2, 5 & 6, IC1, C2 และ C2

หากจำเป็นต้องใช้การทำงาน 5v ไม่ควรใส่ส่วนประกอบ 3v3 ใด ๆ ให้แทนที่ด้วยตัวต้านทาน 0 โอห์ม ROpt 3 และ 4

ความคมชัดดิจิตอล

การควบคุมคอนทราสต์แบบดิจิตอลทำได้โดยใช้โพเทนชิออมิเตอร์แบบดิจิตอล U2 MCP4561-103E/MS และ C4, R5

หากจำเป็นต้องใช้โพเทนชิออมิเตอร์แบบธรรมดา สามารถติดตั้งกับ PCB, RV1 10K แทน U2, C4 และ R5 ได้ ดู BoM สำหรับโพเทนชิออมิเตอร์ที่เข้ากันได้

โดยการเชื่อมจัมเปอร์ J6 ที่อยู่ I2C คือ 0x2E มันถือว่าสำหรับการทำงานปกตินี่คือสะพาน

การเลือกความเข้มของแสงด้านหลังแบบปรับได้

ความเข้มของแสงด้านหลังที่ปรับได้นั้นควบคุมโดยการปรับ PWM ของไฟ LED ด้านหลัง LCD ผ่าน U1 pin 6 และ ATTiny85 เพื่อรักษาความเข้ากันได้อย่างสมบูรณ์กับโมดูลคอนโทรลเลอร์ LCD I2C มาตรฐาน R1 จึงใช้ T1 R7 และ T2 เพื่อมอดูเลตรางจ่าย +ve

ที่อยู่ I2C เริ่มต้นสำหรับสิ่งนี้คือ 0x08 ผู้ใช้สามารถเลือกได้ ณ เวลาคอมไพล์ก่อนการเขียนโปรแกรม U1

ขั้นตอนที่ 2: การผลิต PCB

การผลิต PCB
การผลิต PCB
การผลิต PCB
การผลิต PCB
การผลิต PCB
การผลิต PCB
การผลิต PCB
การผลิต PCB

ดังที่กล่าวไว้ก่อนหน้านี้คำแนะนำนี้เป็นแบบฝึกหัด โดยมีจุดประสงค์หลักเพื่อกำหนดระยะเวลาในการออกแบบให้เสร็จสมบูรณ์ (ซึ่งมีจุดประสงค์ในทางปฏิบัติ)

ในกรณีนี้ ข้าพเจ้านึกถึงแนวคิดแรกเริ่มในบ่ายวันเสาร์ และทำต้นแบบเสร็จภายในเย็นวันเสาร์ที่ 1 รูปที่ 1 ด้านบน ความคิดของฉันตามที่ระบุไว้คือการสร้างโมดูลคอนโทรลเลอร์ I2C LCD ในแบบฉบับของตัวเองโดยมีรอยเท้าเหมือนกัน โดยให้การควบคุมแบบเป็นโปรแกรมเต็มรูปแบบของ LCD ผ่าน I2C

แผนผังไดอะแกรมและเลย์เอาต์ PCB ได้รับการพัฒนาด้วย Kicad v4.0.7 รูปที่ 2 และ 3 เสร็จสมบูรณ์ในบ่ายวันอาทิตย์และชิ้นส่วนได้รับคำสั่งจาก Farnell และ PCB ถูกอัปโหลดไปยัง JLCPCB ในเย็นวันอาทิตย์

ส่วนประกอบมาจาก Farnell ในวันพุธ ตามด้วย PCB จาก JLCPCB ในวันพฤหัสบดี (ฉันใช้บริการจัดส่งของ DHL เพื่อเร่งความเร็ว) รูปที่ 4, 5, 6 & 7

ในเย็นวันพฤหัสบดี บอร์ดสองบอร์ด (รุ่น 3v3 และ 5v) ได้ถูกสร้างขึ้นและทดสอบบนจอ LCD ขนาด 4 x 20 เรียบร้อยแล้ว ภาพที่ 8, 9 และ 10

5.5 วันอันน่าทึ่งตั้งแต่แนวคิดเริ่มต้นจนถึงเสร็จสิ้น

มันทำให้ฉันประหลาดใจว่า JLCPCB สามารถสั่งซื้อ ผลิต PCB PTH สองหน้า และส่งไปยังสหราชอาณาจักรได้เร็วเพียงใด รอผลิต 2 วัน อีก 2 วันส่งค่ะ ซึ่งเร็วกว่าผู้ผลิต PCB ในสหราชอาณาจักรและในราคาเพียงเศษเสี้ยว

ขั้นตอนที่ 3: ภาพรวมซอฟต์แวร์

ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์
ภาพรวมซอฟต์แวร์

มีส่วนประกอบหลักสามส่วนสำหรับซอฟต์แวร์ที่จำเป็นในการควบคุมโมดูลคอนโทรลเลอร์ I2C LCD;

1. LiquidCrystal_I2C_PCF8574 Arduino Library

มีจำหน่ายที่นี่

เพื่อใช้ในการสเก็ตช์ Arduino เพื่อควบคุมจอ LCD

หมายเหตุ: ใช้งานได้ดีพอๆ กันกับ Generic I2C LCD Module Controller มันให้ฟังก์ชันการทำงานมากกว่าไลบรารีอื่นเท่านั้น

2. MCP4561_DIGI_POT Arduino Library

เพื่อใช้ในการสเก็ตช์ของคุณเพื่อควบคุมความคมชัดของ LCD โดยทางโปรแกรม

มีจำหน่ายที่นี่

3. การควบคุมระดับแสงด้านหลัง LCD โดยใช้โปรแกรมโดยใช้ PWM และ Quartic easing function เพื่อให้สีซีดจางอย่างราบรื่น

ดังที่ได้กล่าวไว้ก่อนหน้านี้ บอร์ดนี้มี ATTiny85 เพียงตัวเดียวที่ใช้ในการควบคุมการซีดจางของแสงด้านหลังจอแสดงผลอย่างค่อยเป็นค่อยไป

รายละเอียดของซอฟต์แวร์นี้มีให้ใน 'Smooth PWM LED Fading With the ATTiny85' ที่สอนได้ก่อนหน้านี้

ในกรณีนี้ เพื่อรักษาขนาด PCB สุดท้ายให้เหมือนกับโมดูลคอนโทรลเลอร์ LCD ทั่วไป จึงเลือกรุ่น SOIC ของ ATTiny85 ภาพที่ 1 และ 2 แสดงให้เห็นว่า ATTiny85 SOIC ได้รับการตั้งโปรแกรมและทดสอบในชุดต้นแบบอย่างไร

รหัสที่ตั้งโปรแกรมไว้ใน ATTiny85 คือ 'Tiny85_I2C_Slave_PWM_2.ino' มีให้ที่นี่

สำหรับรายละเอียดเกี่ยวกับวิธีสร้างโปรแกรมเมอร์ ATTiny85 ของคุณเอง โปรดดูที่ 'การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP'

ขั้นตอนที่ 4: ทดสอบการออกแบบ

การทดสอบการออกแบบ
การทดสอบการออกแบบ
การทดสอบการออกแบบ
การทดสอบการออกแบบ

เพื่อทดสอบการออกแบบ ฉันได้สร้างสเก็ตช์ชื่อ 'LCDControllerTest.ino' ซึ่งอนุญาตให้ผู้ใช้ตั้งค่าพารามิเตอร์เฉพาะ LCD ใดๆ ได้โดยตรงผ่านการเชื่อมต่อเทอร์มินัลอนุกรม

สามารถดูแบบร่างได้ที่ที่เก็บ GitHub ของฉัน I2C-LCD-Controller-Module

ภาพที่ 1 ด้านบนแสดงการกดบอร์ดที่สอดคล้องกับ 5v I2C ที่ติดตั้ง LCD ขนาด 4 x 20 และภาพที่ 2 เป็นการแสดงผลเริ่มต้นเมื่อเรียกใช้รหัสทดสอบเป็นครั้งแรก

ใช้ค่าเริ่มต้นต่อไปนี้สำหรับแสงด้านหลังและความคมชัด

  • #define DISPLAY_BACKLIGHT_LOWER_VALUE_DEFAULT ((ไม่มีเครื่องหมายยาว) (10))
  • #define DISPLAY_CONTRAST_VALUE_DEFAULT ((uint8_t) (40))

ฉันพบว่าสิ่งเหล่านี้ทำงานได้ดีกับจอ LCD ขนาด 4 คูณ 20 ที่ฉันมีอยู่

ขั้นตอนที่ 5: บทสรุป

เมื่อผมเริ่มเข้าสู่อุตสาหกรรมอิเล็กทรอนิกส์/ซอฟต์แวร์เมื่อไม่นานนี้เอง ผมให้ความสำคัญอย่างมากกับการใช้ลวดพันหรือโครงสร้างเวโรบอร์ดสำหรับการสร้างต้นแบบด้วยวิศวกรรมที่มากเกินไปในวงจรสุดท้ายในกรณีที่คุณทำผิดพลาด โดยพิจารณาจากราคาและระยะเวลาของการหมุนบอร์ดใหม่

ความผิดพลาดมักทำให้คุณเสียเวลาตามกำหนดเวลาสองสามสัปดาห์และทำให้ส่วนต่างกำไร (และอาจเป็นไปได้ที่งานของคุณ)

PCBs ถูกเรียกว่า 'งานศิลปะ' เพราะมันเป็นงานศิลปะอย่างแท้จริง สร้างขนาดเต็มสองครั้งโดยใช้เทปเครปสีดำเหนียวโดย 'ผู้ตามรอย' หรือคนเขียนแบบ และปรับลดรูปถ่ายโดย fab house เพื่อให้ภาพถ่ายต้านทานลายฉลุ

ไดอะแกรมวงจรถูกสร้างขึ้นโดยตัวติดตามและวาดด้วยมือจากบันทึกการออกแบบของคุณ สำเนาถูกถ่ายโดยภาพนิ่งและเรียกว่า 'พิมพ์สีน้ำเงิน' เพราะพวกมันมีสีฟ้าสม่ำเสมอ

ไมโครคอนโทรลเลอร์ยังอยู่ในช่วงเริ่มต้นและโดยทั่วไปแล้วจะมีการจำลองวงจรหากบริษัทของคุณสามารถจ่ายได้ในสภาพแวดล้อมการพัฒนาที่ซับซ้อนและมีราคาแพง

ในฐานะผู้ผลิตในขณะนั้น ต้นทุนเพียงของห่วงโซ่เครื่องมือการพัฒนาซอฟต์แวร์เป็นสิ่งต้องห้าม คุณถูกบังคับให้ต้องกระตุ้นค่าฐานสิบหกโดยตรงใน EPROM (RAM/Flash หากคุณโชคดีมาก) อย่างหลีกเลี่ยงไม่ได้ จากนั้นใช้เวลาหลายชั่วโมงในการตีความพฤติกรรมผลลัพธ์เพื่อพิจารณาว่าสิ่งใด รหัสของคุณกำลังทำงานอยู่ถ้ามันไม่ทำงานตามที่คาดไว้ (บิต 'กระดิก' หรือการพิมพ์แบบอนุกรมเป็นเทคนิคการดีบั๊กที่ได้รับความนิยมมากที่สุด บางสิ่งไม่เคยเปลี่ยนแปลง) โดยปกติคุณต้องเขียนห้องสมุดของคุณเองทั้งหมดเนื่องจากไม่มี (ไม่มีแหล่งข้อมูลที่สมบูรณ์เช่นอินเทอร์เน็ต)

ซึ่งหมายความว่าคุณใช้เวลามากในการพยายามทำความเข้าใจว่าบางสิ่งทำงานอย่างไร และใช้เวลาน้อยลงในการสร้างสรรค์

ไดอะแกรมทั้งหมดของคุณวาดด้วยมือ ซึ่งโดยทั่วไปแล้วจะเป็นขนาด A4 หรือ A3 และต้องพิจารณาอย่างละเอียดถี่ถ้วน ทำให้พวกมันมีการไหลตามตรรกะของเส้นทางสัญญาณจากซ้ายไปขวา การแก้ไขมักจะหมายความว่าคุณจำเป็นต้องเริ่มด้วยแผ่นงานใหม่

ส่วนใหญ่วงจรสุดท้ายของคุณได้รับการพัฒนาโดยใช้ veroboard เพื่อความคงเส้นคงวา และติดตั้งในกล่อง ABS ที่เรียบง่ายเพื่อให้ 'สัมผัสอย่างมืออาชีพ'

ในทางตรงกันข้าม ฉันพัฒนาโครงการทั้งหมดนี้ใน 5.5 วันโดยใช้ฟรีแวร์คุณภาพสูง ส่งผลให้ PCB มาตรฐานระดับมืออาชีพ หากความปรารถนาได้นำพาฉันไป ฉันก็สามารถติดตั้งมันลงในกล่องที่พิมพ์ 3 มิติของตัวฉันเองได้

สิ่งที่คุณฝันได้ไม่ถึงทศวรรษที่ผ่านมา

สิ่งต่าง ๆ เปลี่ยนไปในทางที่ดีขึ้นได้อย่างไร

ขั้นตอนที่ 6: ข้อมูลอ้างอิงที่ใช้

KiCAD Schematic capture และการออกแบบ PCB

KiCAD EDA

เครื่องมือพัฒนาซอฟต์แวร์ Arduino ORG

Arduino

LiquidCrystal_I2C_PCF8574 Arduino Library

ที่นี่

MCP4561_DIGI_POT Arduino Library

ที่นี่

PWM LED Fading อย่างราบรื่นด้วย ATTiny85

ที่นี่

การเขียนโปรแกรม ATTiny85, ATTiny84 และ ATMega328P: Arduino As ISP

แนะนำ: