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:
Antworten:
Haben Sie eine Diode über Ihrem Relais? Wenn nicht, verursachen die induktiven Spitzen beim Schließen / Öffnen wahrscheinlich Probleme.
Wenn Sie beispielsweise den durch ein Relais fließenden Strom stoppen, versucht er, ihn am Laufen zu halten. Wenn es keinen Entladungsweg gibt, wird eine große Spannung erzeugt (im Wesentlichen steigt er weiter an, bis er einen Weg findet).
Insbesondere lautet die Formel V = L (dI / dT). Dies bedeutet, dass der Induktor Stromänderungen durch ihn entgegenwirkt, indem er eine Spannung über ihm entwickelt, die proportional zur Änderungsrate des Stroms ist.
Versuchen Sie, eine Diode über dem Relais zu platzieren, die so ausgerichtet ist, dass sie dem normalen Stromfluss entgegenwirkt.
BEARBEITEN - Wenn Sie die Produktseite überprüfen, scheint es sich um ein "fertig gerolltes" Relais in einer Box mit hinzugefügten Peripheriekomponenten zu handeln. Daher ist es unwahrscheinlich, dass dies der Fall ist. Trotzdem würde ich versuchen, die Diode über die Stromversorgung des Relais zu legen.
Stellen Sie außerdem sicher, dass Ihr Vorrat gut gefiltert ist, wie in den Kommentaren erwähnt. Platzieren Sie einige Kondensatoren mit mindestens 1 uF neben den ICs und dem LCD und eine Bulk-Kappe mit> 100 uF irgendwo (alle von Strom bis Masse).
quelle
Ich hatte das gleiche Problem mit einem 16x4 LCD - Display , wenn der Arduino wurde auch ein SainSmart Steuerung opto-isolierte Relaiskarte . Bei nicht angeschlossenen Relaiskontakten funktionierte alles einwandfrei. Als das Relais jedoch eine induktive Last (ein 24-VAC-Leistungsrelais) schaltete, verstümmelte die Anzeige. Es half keine Menge an Leistungsisolation und Filterkondensatoren.
Was das Problem löste, war ein Dämpfer (Kondensator und Widerstand in Reihe) über den SainSmart-Relaiskontakten. Ich habe einen vorverpackten Cornell Dubilier EMI / RFI- Filter verwendet, um die Sauberkeit zu gewährleisten, aber ein 0,1-ufd-Kondensator der Gartenvariante in Reihe mit einem 47-Ohm-Widerstand würde wahrscheinlich genauso gut funktionieren.
quelle
Ich habe mir den Kopf geschlagen, warum mein LCD "verstümmelt" ist, und es stellte sich heraus, dass ich mein Arduino GND nicht mit dem Steckbrett verbunden habe (wenn dies jemandem hilft). Grüße
quelle
Verwenden Sie ein abgeschirmtes Kabel am Ausgang und erden Sie es. Es hat das Problem für mich gelöst.
quelle