Ich habe ein Standard-16x2-LCD-Display (ich glaube, es ist mit Hitachi HD44780 kompatibel - siehe Zusammenfassung und Spezifikation unten), das wie hier beschrieben mit 4 Datenpins an ein Arduino Uno angeschlossen ist , obwohl ich parallel 2x 220-Ohm-Widerstände hinzugefügt habe (dh a 110 Ohm Widerstand) an Pin 16 (Hintergrundbeleuchtung Masse) und ersetzte den Pot durch statische Widerstände, um 4 V an Vo zu erzeugen.
Kurz gesagt, RW ist mit Masse verbunden, und RS, Enable und Data4-7 sind mit Arduino-Pins verbunden, während Data 0-3 schwebend sind.
Ich habe andere Dinge (Sensoren, einen Transistor mit einem optoisolierten SSR und einem Netzrelais, einige Tasten) an verschiedene Pins des Arduino angeschlossen. Der von mir verwendete Code schreibt mehrmals pro Sekunde Text in die Anzeige, und normalerweise funktioniert die Anzeige einwandfrei.
Wenn das Relais jedoch schließt (es dauert ungefähr 10 mA und wird von einem Transistor gesteuert, der wiederum von einem der Arduino-Pins gesteuert wird), wird das LCD manchmal verstümmelt. Es bleibt normalerweise verstümmelt, bis das Relais das nächste Mal schließt, aber manchmal, wenn das Relais öffnet oder nach einigen weiteren Zyklen des Öffnens / Schließens zum Zurücksetzen. Das Verstümmeln beginnt und stoppt immer gleichzeitig mit dem Öffnen oder Schließen des Relais.
Mit "verstümmelt" meine ich, dass ich jedes Mal, wenn ich darauf schreibe, nachdem es verstümmelt wurde, anstatt englische Zeichen zu schreiben, eine Zeichenfolge erhalte, die ich normalerweise nicht im Datenblatt identifizieren kann (obwohl ich einige kann). Diese Reihe verstümmelter Zeichen bewegt sich normalerweise links entlang des Bildschirms, wenn ich neuen Text auf das LCD schreibe.
Ich bin zuversichtlich, dass das Arduino selbst nicht verwirrt wird, da ich zur gleichen Zeit denselben Text auf den seriellen Monitor schreibe und er nicht verstümmelt ist.
Ich habe seitdem experimentiert, den RW-Pin mit einem Arduino-Ausgang und Data0-3 mit Masse zu verbinden, aber das hilft nicht. Ich habe das gesamte Gerät mit einer 9-V-Batterie oder mit USB betrieben, und es hilft nicht. Ich habe die Batterie ausgetauscht ... keine Änderung.
Das einzige, was zu funktionieren scheint, ist, dass keine Last an das Relais angeschlossen ist, aber das macht den Zweck zunichte :-)
Ich habe keinen Signalanalysator oder etwas Anspruchsvolleres als ein Multimeter, einen Laptop und ein Arduino ... Hat jemand Hinweise, wie ich das beheben kann?
LCD-Übersichtsblatt: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf
LCD-Spezifikation: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf
Beispiel für verstümmelten Text: