Debugging Layar LCD 16x2 pada Arduino

9

Saya memiliki layar LCD 16x2 standar (saya percaya itu adalah kompatibel dengan Hitachi HD44780 - lihat ringkasan dan spesifikasi di bawah), terhubung ke Arduino Uno menggunakan 4 pin data, seperti yang dijelaskan di sini , meskipun saya telah menambahkan 2x220ohm resistor secara paralel (yaitu 110ohm resistor) pada pin 16 (Backlight ground), dan mengganti Pot dengan resistor statis untuk membuat 4V pada Vo.

Singkatnya, RW disambungkan ke ground, dan RS, Enable, dan Data4-7 terhubung ke pin Arduino, sementara Data 0-3 mengambang.

Saya memiliki hal-hal lain (sensor, transistor dengan SSR optoisolated dan relay listrik, beberapa tombol) yang terhubung ke pin yang berbeda pada Arduino. Kode yang saya gunakan menulis teks ke layar beberapa kali per detik, dan biasanya, layar berfungsi dengan baik.

Namun, ketika relai ditutup (dibutuhkan sekitar 10mA, dan dikontrol oleh transistor yang pada gilirannya dikendalikan dari salah satu pin Arduino), terkadang LCD menjadi kacau. Itu tetap kacau biasanya sampai relay berikutnya ditutup, tetapi kadang-kadang ketika relay membuka, atau setelah beberapa siklus lagi buka / tutup untuk mengatur ulang. Kericuhan selalu dimulai dan berhenti pada saat yang sama dengan relay membuka atau menutup.

Dengan "kacau", maksud saya bahwa setiap kali saya menulisnya menjadi kacau, daripada menulis karakter bahasa Inggris, saya mendapatkan serangkaian karakter, yang biasanya saya tidak dapat mengidentifikasi dalam lembar data (meskipun beberapa saya bisa). String karakter yang kacau ini cenderung bergerak ke kiri di sepanjang layar ketika saya menulis teks baru ke LCD.

Saya yakin itu bukan Arduino itu sendiri menjadi bingung, karena saya menulis teks yang sama ke monitor Serial pada saat yang sama, dan itu tidak kacau.

Sejak itu saya bereksperimen dengan menghubungkan pin RW ke output Arduino, dan Data0-3 ke ground, tetapi ini tidak membantu. Saya telah memberi daya seluruh perangkat dengan baterai 9V atau dengan USB, dan itu tidak membantu. Saya sudah mengganti baterai ... tidak ada perubahan.

Satu-satunya hal yang tampaknya berfungsi adalah tidak memiliki beban yang terhubung ke relay, tetapi itu mengalahkan tujuannya :-)

Saya tidak memiliki penganalisa sinyal atau sesuatu yang lebih canggih dari multimeter, laptop dan Arduino ... Apakah ada yang punya petunjuk untuk membantu saya men-debug ini?

Lembar Ringkasan LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

Spesifikasi LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

Contoh teks yang kacau: teks kacau

Richard Russell
sumber
1
Coba tambahkan setidaknya 1 uF kapasitor ke rel listrik Anda, yang merupakan salah satu ujung kapasitor ke Vcc dan yang lainnya adalah ke GND. Hati-hati dengan arah kapasitor jika itu adalah elektrolitik :)
abdullah kahraman
1
Ini benar-benar aneh. Anda tidak mengemudikan relay besar itu secara langsung, kotak relay yang Anda beli sebenarnya memiliki DIP SSR kecil yang mengalihkan daya ke relay besar, dan relay besar tersebut mengalir keluar dari saluran AC. Dengan demikian, seharusnya tidak ada jalan bagi back-emf yang dihasilkan oleh penggerak relay untuk masuk ke sirkuit Anda.
Connor Wolf
Ini bau seperti masalah pentanahan / decoupling. Hoe banyak kapasitansi yang Anda miliki di rel listrik Anda di papan tempat memotong roti?
Connor Wolf
Juga, seberapa dekat kotak relay dengan sirkuit papan tempat memotong roti? Bisakah Anda meletakkan beberapa kaki kawat di antara kotak relai dan sisa rangkaian? Itu akan menghilangkan kemungkinan kopling magnetik.
Connor Wolf
Terima kasih atas tanggapannya. Anda benar bahwa relai dipisahkan dengan SSR dan berbagai komponen lainnya. Saya memang mencoba dioda, dan kemudian saya mencoba kapasitor elektrolitik 220uF antara 5V & GND pada power rails dekat LCD. Tak satu pun dari ini tampaknya memiliki efek. Saya belum (belum) mencoba keduanya bersama-sama.
Richard Russell

Jawaban:

5

Apakah Anda memiliki dioda di relay Anda? Jika tidak lonjakan induktif pada penutupan / pembukaan kemungkinan akan menyebabkan masalah.

Ketika Anda misalnya menghentikan arus yang mengalir melalui relai, ia mencoba untuk membuatnya tetap berjalan, jika tidak ada rute pelepasan itu akan membuat tegangan besar (pada dasarnya itu akan terus naik sampai menemukan rute).
Secara khusus rumusnya adalah V = L (dI / dT). Ini berarti induktor menentang perubahan arus yang melalui itu dengan mengembangkan tegangan yang sebanding dengan laju perubahan arus.

Coba letakkan dioda melintasi relai, yang diorientasikan untuk menentang aliran arus normal.

EDIT - memeriksa halaman produk tampaknya itu adalah relai "siap digulung" dalam sebuah kotak dengan komponen periferal yang ditambahkan, jadi sepertinya tidak seperti di atas. Meski begitu saya akan mencoba menempatkan dioda melintasi daya ke relay.
Pastikan juga pasokan Anda difilter dengan baik seperti yang disebutkan dalam komentar. Tempatkan beberapa kapasitor minimal 1 uF di sebelah IC dan LCD, dan tutup sebagian besar> 100 uF di suatu tempat (semua dari daya ke ground)

Oli Glaser
sumber
Lihatlah lembar data untuk "Relay". Input ke relai sebenarnya menggerakkan SSR kecil, yang mengalihkan daya aktual ke relai itu sendiri. Karena input ke thingie relay adalah input SSR, saya tidak melihat dioda benar-benar melakukan apa pun.
Connor Wolf
Saya telah melihat (saya tidak bisa menemukannya sebelumnya) dan saya setuju, itu hanya jenis saran "tidak ada salahnya" tanpa info lebih lanjut. Semoga kita akan segera mendapatkan pembaruan tentang bagaimana penambahan decoupling.
Oli Glaser
Terima kasih atas tanggapannya. Anda benar bahwa relai dipisahkan dengan SSR dan berbagai komponen lainnya. Saya memang mencoba dioda, dan kemudian saya mencoba kapasitor elektrolitik 220uF antara 5V & GND pada power rails dekat LCD. Saya belum (belum) mencoba keduanya bersama-sama.
Richard Russell
Saya juga mencoba secara sadar memindahkan sirkuit AC sekitar satu kaki dari sirkuit 5V, hanya menyisakan kawat sinyal relay 5V yang menghubungkan mereka, tetapi ini tidak membantu. Dalam eksperimen saya, saya menemukan bahwa beban kecil pada relai (lampu halogen 85W) tampaknya tidak banyak berpengaruh pada tampilan, tetapi jika saya memiliki beban besar (ketel 2000W), ini lebih cenderung menyebabkan kesalahan. Saya telah melihat masalah dengan lampu ini sebelumnya, meskipun jarang.
Richard Russell
Tutup keramik 1uF atau lebih akan lebih baik untuk transien, tambahkan satu secara paralel dengan 220uF. Coba tambahkan satu atau dua> 100uF batas (s) juga, di + 5V dan GND dekat kabel relay. Bisakah Anda menunjukkan kepada kami gambar yang lebih baik dari pengaturan Anda?
Oli Glaser
1

Saya memiliki masalah yang sama dengan layar LCD 16x4 ketika Arduino juga mengendalikan papan relay SainSmart opto-terisolasi . Semuanya bekerja dengan baik dengan kontak relai yang tidak terhubung. Tetapi ketika relai mengalihkan beban induktif (relai daya 24 VAC), layar rusak. Tidak ada jumlah isolasi daya dan kapasitor filter yang membantu.

Apa yang memecahkan masalah adalah snubber (kapasitor dan resistor secara seri) di kontak relay SainSmart. Saya menggunakan filter EMI / RFI Cornell Dubilier yang telah dikemas sebelumnya untuk kerapian, tetapi kapasitor 0,1 ufd kebun-seri secara seri dengan resistor 47-ohm mungkin akan bekerja dengan baik.

Len Shustek
sumber
mungkin saya melihat diagram rangkaian tentang bagaimana Anda seri kapasitor dan resistor dengan relay. Terima kasih
Jam Ville
1

Saya membenturkan kepala mengapa LCD saya "kacau" dan ternyata saya belum menghubungkan GND Arduino saya ke papan tempat memotong roti (jika ini bisa membantu seseorang). Salam

bobe
sumber
Ini tidak menambah banyak komentar yang ada.
David
-1

gunakan kabel berpelindung pada output dan ground. Itu memecahkan masalah bagi saya.

pengguna25091
sumber