การดีบักจอแสดงผล LCD ขนาด 16x2 บน Arduino


9

ฉันมีจอแสดงผลแอลซีดีมาตรฐาน 16x2 (ผมเชื่อว่ามันเป็น Hitachi HD44780 เข้ากันได้ - ดูข้อมูลสรุปและข้อกำหนดด้านล่าง) ติดยาเสพติดไปยัง Arduino Uno ใช้ 4 ข้อมูลหมุดตามที่อธิบายไว้ที่นี่แต่ผมได้เพิ่ม 2x 220ohm ต่อต้านในแบบคู่ขนาน (เช่น ตัวต้านทาน 110ohm) ที่ขา 16 (กราวด์แบ็คไลท์) และแทนที่ Pot ด้วยตัวต้านทานแบบสแตติกเพื่อสร้าง 4V บน Vo

ในระยะสั้น RW มีสายเข้ากับพื้นดินและ RS, เปิดใช้งานและ Data4-7 เชื่อมต่อกับหมุด Arduino ในขณะที่ข้อมูล 0-3 ลอยอยู่

ฉันมีสิ่งอื่น ๆ (เซ็นเซอร์ทรานซิสเตอร์ที่มี SSR optoisolated และรีเลย์ไฟเมนปุ่มบางปุ่ม) เชื่อมต่อกับหมุดต่าง ๆ บน Arduino รหัสที่ฉันใช้เขียนข้อความไปยังจอแสดงผลหลายครั้งต่อวินาทีและโดยปกติแล้วหน้าจอจะทำงานได้อย่างสมบูรณ์แบบ

อย่างไรก็ตามเมื่อรีเลย์ปิด (ใช้เวลาประมาณ 10 มิลลิแอมป์และถูกควบคุมโดยทรานซิสเตอร์ซึ่งจะถูกควบคุมจากขา Arduino หนึ่ง) บางครั้งจอ LCD จะอ่านไม่ออก มันจะยังคงสับสนอยู่โดยปกติจนกว่ารีเลย์จะปิดต่อไป แต่บางครั้งเมื่อรีเลย์เปิดขึ้นหรือหลังจากวงจรเปิด / ปิดอีกสองสามรอบเพื่อรีเซ็ต garbling เริ่มและหยุดในเวลาเดียวกันเสมอเมื่อรีเลย์เปิดหรือปิด

โดย "garbled" ฉันหมายถึงทุกครั้งที่ฉันเขียนมันหลังจากที่มันกลายเป็นอ่านไม่ออกแทนที่จะเขียนตัวอักษรภาษาอังกฤษฉันจะได้รับสตริงของตัวละครที่ฉันมักจะไม่สามารถระบุในแผ่นข้อมูล (แม้ว่าฉันจะทำได้) สตริงของอักขระที่อ่านไม่ออกนี้มีแนวโน้มที่จะเลื่อนไปทางซ้ายตามหน้าจอขณะที่ฉันเขียนข้อความใหม่ไปที่ LCD

ฉันมั่นใจว่าไม่ใช่ Arduino เองที่สับสนเนื่องจากฉันเขียนข้อความเดียวกันไปยังจอภาพ Serial ในเวลาเดียวกันและมันไม่อ่านไม่ออก

ฉันได้ทดลองใช้สาย RW pin ไปยังเอาต์พุต Arduino และ Data0-3 ลงกราวด์ แต่สิ่งนี้ไม่ช่วย ฉันใช้พลังงานทั้งอุปกรณ์ด้วยแบตเตอรี่ 9V หรือ USB และมันก็ไม่ได้ช่วยอะไร ฉันเปลี่ยนแบตเตอรี่ ... ไม่มีการเปลี่ยนแปลง

สิ่งเดียวที่ดูเหมือนว่าจะใช้งานได้คือไม่มีการเสียบปลั๊กโหลดเข้ากับรีเลย์ แต่นั่นก็เอาชนะวัตถุประสงค์ :-)

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

แผ่นข้อมูลสรุป LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

ข้อมูลจำเพาะของ LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

ตัวอย่างของข้อความที่อ่านไม่ออก: ข้อความที่อ่านไม่ออก


1
ลองเพิ่มตัวเก็บประจุอย่างน้อย 1 ยูเอฟเข้ากับรางไฟของคุณนั่นคือปลายด้านหนึ่งของตัวเก็บประจุไปยัง Vcc และอื่น ๆ คือ GND ระวังด้วยทิศทางของตัวเก็บประจุถ้าเป็นอิเล็กโทรไลต์ :)
abdullah kahraman

1
นี่มันแปลกประหลาดจริงๆ คุณไม่ได้ขับรีเลย์ขนาดใหญ่นั้นโดยตรงกล่องรีเลย์ที่คุณซื้อนั้นมี DIP SSR ขนาดเล็กซึ่งกำลังเปลี่ยนกระแสไฟฟ้าเป็นรีเลย์ขนาดใหญ่และรีเลย์ขนาดใหญ่วิ่งออกจากสาย AC ดังนั้นจึงไม่ควรมีวิธีที่ back-emf ที่รีเลย์สร้างขึ้นเพื่อเข้าสู่วงจรของคุณ
Connor Wolf

มีกลิ่นเหมือนปัญหาสายดิน / ดีคัปปี้ คุณมีความจุมากเกินไปบนรางไฟฟ้าของคุณบนเขียงหั่นขนมหรือไม่?
Connor Wolf

นอกจากนี้กล่องถ่ายทอดไปยังวงจรควบคุมระยะไกลแค่ไหน คุณสามารถใส่ลวดสองสามฟุตระหว่างกล่องรีเลย์และวงจรที่เหลือได้หรือไม่? ที่จะลบความเป็นไปได้ของการมีเพศสัมพันธ์แม่เหล็กใด ๆ
Connor Wolf

ขอบคุณสำหรับคำตอบ คุณถูกต้องว่ารีเลย์นั้นแยกจากกันด้วย SSR และส่วนประกอบอื่น ๆ ฉันลองไดโอดแล้วต่อมาฉันก็ลองตัวเก็บประจุด้วยไฟฟ้า 220uF ระหว่าง 5V และ GND บนรางไฟฟ้าใกล้กับจอ LCD ทั้งสองอย่างดูเหมือนจะไม่มีผล ฉันยังไม่ได้ลองทั้งสองเลย
Richard Russell

คำตอบ:


5

คุณมีไดโอดในรีเลย์ของคุณหรือไม่? หากไม่มีการเหนี่ยวนำแบบแหลมในการปิด / เปิดอาจทำให้เกิดปัญหาได้

เมื่อคุณเช่นหยุดกระแสที่ไหลผ่านรีเลย์มันจะพยายามให้มันทำงานต่อไปหากไม่มีเส้นทางของการปล่อยมันจะสร้างแรงดันไฟฟ้าขนาดใหญ่
สูตรเฉพาะคือ V = L (dI / dT) ซึ่งหมายความว่าตัวเหนี่ยวนำต่อต้านการเปลี่ยนแปลงของกระแสผ่านมันโดยการพัฒนาแรงดันไฟฟ้าข้ามมันเป็นสัดส่วนกับอัตราการเปลี่ยนแปลงของกระแส

ลองวางไดโอดข้ามรีเลย์ปรับทิศทางเพื่อต่อต้านกระแสไฟปกติ

แก้ไข - ตรวจสอบหน้าผลิตภัณฑ์ที่ดูเหมือนว่าเป็นรีเลย์ "พร้อมใช้งานแล้ว" ในกล่องที่มีส่วนประกอบต่อพ่วงเพิ่มดังนั้นจึงไม่น่าจะเป็นข้างต้น ถึงอย่างนั้นฉันก็ลองวางไดโอดข้ามพลังงานไปที่รีเลย์
ตรวจสอบให้แน่ใจว่าอุปทานของคุณมีการกรองที่ดีตามที่ระบุไว้ในความคิดเห็น วางตัวเก็บประจุสองสามตัวขึ้นไปอย่างน้อย 1uF ถัดจากไอซีและจอแอลซีดีและฝาขนาดใหญ่> 100uF ที่ไหนสักแห่ง (จากอำนาจสู่พื้นดิน)


ดูแผ่นข้อมูลสำหรับ "รีเลย์" อินพุตไปยังรีเลย์กำลังขับ SSR ขนาดเล็กซึ่งจะเปลี่ยนพลังงานจริงไปยังรีเลย์เอง เนื่องจากอินพุตไปยังอุปกรณ์รีเลย์เป็นอินพุต SSR ฉันไม่เห็นไดโอดทำอะไรจริงๆ
Connor Wolf

ฉันได้ดู (ฉันหามันไม่พบมาก่อน) และฉันเห็นด้วยมันเป็นเพียงคำแนะนำประเภท "ไม่เจ็บ" โดยไม่มีข้อมูลเพิ่มเติม หวังว่าเราจะได้รับการอัปเดตในไม่ช้าว่าเป็นอย่างไรกับการเพิ่มตัวแยกสัญญาณ
Oli Glaser

ขอบคุณสำหรับคำตอบ คุณถูกต้องว่ารีเลย์นั้นแยกจากกันด้วย SSR และส่วนประกอบอื่น ๆ ฉันลองไดโอดแล้วต่อมาฉันก็ลองตัวเก็บประจุด้วยไฟฟ้า 220uF ระหว่าง 5V และ GND บนรางไฟฟ้าใกล้กับจอ LCD ฉันยังไม่ได้ลองทั้งสองเลย
Richard Russell

ฉันพยายามย้ายวงจร AC อย่างมีสติประมาณหนึ่งฟุตห่างจากวงจร 5V เหลือเพียงสายสัญญาณรีเลย์ 5V ที่ต่อเข้ากับพวกเขา แต่นี่ก็ไม่ได้ช่วยอะไร ในการทดลองของฉันฉันพบว่าโหลดเล็ก ๆ บนรีเลย์ (หลอดฮาโลเจน 85W) ดูเหมือนจะไม่มีผลต่อจอแสดงผลมากนัก แต่ถ้าฉันมีโหลดขนาดใหญ่ (กาต้มน้ำ 2000W) ก็มีแนวโน้มที่จะเกิดข้อผิดพลาด ฉันเคยเห็นปัญหานี้กับโคมไฟก่อนหน้านี้ แต่นาน ๆ ครั้ง
Richard Russell

ฝาเซรามิกที่มี 1uF หรือมากกว่านั้นจะดีกว่าสำหรับการเปลี่ยนผ่านชั่วคราวเพิ่มอีกหนึ่งขนานกับ 220uF ลองเพิ่มอีกหนึ่งหรือสองครั้ง> 100uF cap ด้วยเช่นกันใน + 5V และ GND ใกล้กับสายรีเลย์ คุณช่วยให้เราเห็นภาพการติดตั้งที่ดีขึ้นของเราได้ไหม
Oli Glaser

1

ฉันมีปัญหาเดียวกันกับจอแสดงผล LCD ขนาด 16x4 เมื่อ Arduino ยังควบคุมบอร์ดรีเลย์แบบแยก opto ของ SainSmartคณะกรรมการถ่ายทอดทุกอย่างทำงานได้ดีกับหน้าสัมผัสรีเลย์ที่ไม่ได้เชื่อมต่อ แต่เมื่อรีเลย์เปลี่ยนโหลดอุปนัย (รีเลย์ไฟฟ้า 24 VAC) จอแสดงผลจะอ่านไม่ออก ไม่มีการแยกพลังงานและตัวเก็บประจุตัวกรองช่วย

สิ่งที่แก้ไขปัญหาได้คือ snubber (ตัวเก็บประจุและตัวต้านทานในซีรีย์) ทั่วหน้าสัมผัสรีเลย์ของ SainSmart ฉันใช้ตัวกรอง Cornell Dubilier EMI / RFI ที่ผ่านการทำแพคเกจเพื่อความเรียบร้อย แต่ตัวเก็บประจุที่หลากหลายในสวน 0.1 ufd ในซีรีย์ที่มีตัวต้านทาน 47 โอห์มก็น่าจะใช้ได้เช่นกัน


ฉันขอดูแผนภาพวงจรเกี่ยวกับวิธีที่คุณตั้งค่าตัวเก็บประจุและตัวต้านทานด้วยรีเลย์ ขอบคุณ
Jam Ville

1

ฉันทุบหัวของฉันทำไม LCD ของฉัน "อ่านไม่ออก" และมันกลับกลายเป็นว่าฉันไม่ได้เชื่อมต่อ Arduino GND ของฉันกับเขียงหั่นขนม ความนับถือ


สิ่งนี้ไม่ได้เพิ่มความคิดเห็นที่มีอยู่มากนัก
David

-1

ใช้สายเคเบิลหุ้มฉนวนที่เอาต์พุตและต่อสายดิน มันแก้ไขปัญหาให้ฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.