20x4 LCD komische Zeichen

Hallo zusammen,

ich heiße Stefan und bin neu in die tolle Arduino Welt eingestiegen. Nach sehr viel Recherche und Bastelarbeit habe ich es geschafft eine Steuerung für meine Brauanlage aufzubauen. Ich hoffe es ist nicht zu plump direkt mit einem Problem hier einzusteigen :wink:

Mein Aufbau (vereinfacht): Arduino, Relais, Temperatursensor, 20x4 LCD Display.

Funktion der Steuerung: Diese soll den Maischevorgang steuern. Wenn die Maische zu kalt ist, dann geht die Herdplatte an. Ist die Maische zu warm geht die Herdplatte aus. Zudem werden die einzelnen Temperaturen angefahren.

Mein Problem ist, dass ich auf dem Bildschirm völlig sporadisch Fehler angezeigt bekomme. Ich habe die Befürchtung, dass die Induktionskochplatte ein Störfeld erzeugt. Daraufhin habe ich die Steuerung einen halben Meter weiter weg positioniert aber der Fehler tritt immernoch auf.

Dann habe ich noch das Relais mit Alufolie abgeschirmt und diese geerdet, leider auch ohne Erfolg.

Nun gehe ich davon aus, dass durch das An- und Ausschalten der Induktionsplatte und der damit verbundenen hohen Last von 3500W ein Feld erzeugt wird, welches die Störung verursacht. Das Programm läuft im Hintergrund übrigens störungsfrei weiter. Es ist wirklich nur ein Visualisierungsproblem.

An der Hardware möchte ich eigentlich nichts ändern. Wäre es möglich den Bildschirm einfach ständig neu zu initialisieren (z.B.: alle paar Sekunden)? Das würde den Fehler zwar nicht verhindern, aber er würde dann auf dem Bildschirm wieder verschwinden.

Im Anhang findet Ihr ein Bild von dem Fehler und dem Relais, welches ich nutze!

Über Ratschläge würde ich mich sehr freuen :-)!

Beste GRüße
Stefan

Relais Forum.PNG

Unter anderm kann es auch der Lichtbogen beim abschalten sein der dieses Problem erzeugt.
Ich wäre bei so hohen Lasten und Elektronik eher der auf ein Solid State Relais gegangen.
Gruß
DerDani

tabledancer:
Wäre es möglich den Bildschirm einfach ständig neu zu initialisieren (z.B.: alle paar Sekunden)?

Selbstverständlich geht das. Das Wie hängt von der Struktur Deines Programms ab.

Damit willkommen im Forum!

agmue:
Selbstverständlich geht das. Das Wie hängt von der Struktur Deines Programms ab.

Damit willkommen im Forum!

Danke für die schnelle Antwort und die freundliche Aufnahme :-)!

Am Anfang meines Sketches initialisiere das Display und zwar so:

//LCD Initialisierung ----------------------------------------------

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address

Jetzt stehe ich leider auf dem Schlauch, wie ich das wiederhole und zwar so, dass mein Programm danach trotzdem noch weiterläuft.

Beste Grüße und Danke

Die Initialisierung brauchst Du wahrscheinlich nicht zu wiederholen, nur mittels LCD.print den Text erneuern. Wäre zumndest mein Ansatz.

Bleit dieses Problem immer bestehn oder reicht ein regelmäliges LCD.clear() um wieder "vernünfiges" zu sehen.
Muss es neu initialisiert werden.

Wenn es mit dem lcd.clear() nicht funktioniert versuche es mal mit erneutem Aufruf von

lcd.begin(16,2); // initialize the lcd for 16 chars 2 lines

Nätrülich mit deinen Parametern wie sie im void setup() stehen.

Gruß
DerDani

Sind die Kabel zum Display möglichst kurz und haben einwandfreien, sicheren Kontakt. Sonst können leicht Störungen ins Display kommen. Zur Störungsverminderung könntest du möglichst nah ans Dispay einen 100-500nF Blockkondesator plus einen Elko von beispielsweise 100µF parallel zwischen GND und Versorgungsspannung einbauen.

Ich tippe auf lange I2C-Kabel und keine vorhandenen Pullup-Widerstände (4,7k) an I2C.

Und poste mal den kompletten Sketch. In Fragmenten kann man keine Fehler finden.

agmue:
Die Initialisierung brauchst Du wahrscheinlich nicht zu wiederholen, nur mittels LCD.print den Text erneuern. Wäre zumndest mein Ansatz.

und dann würde ich diesen Befehl einfach Zwischendurch in den Sketch schreiben oder kann man den Befehl so anpassen, dass sich dieser alle X Sekunden selbst aufruft?

Wie lang sind denn die I2C-Kabel zum Display?
Und sind Widerstände drin?

Dieser Fehler sieht sehr nach einer Störung im I2C aus, der beseitigt werden kann.

HotSystems:
Wie lang sind denn die I2C-Kabel zum Display?
Und sind Widerstände drin?

Dieser Fehler sieht sehr nach einer Störung im I2C aus, der beseitigt werden kann.

Es sind solche Kabel (Länge 20cm): http://www.ebay.de/itm/201150961422?_trksid=p2055119.m1438.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Wie wäre denn die Hardwarelösung?

Besten Dank schon einmal :slight_smile:

tabledancer:
Es sind solche Kabel (Länge 20cm): http://www.ebay.de/itm/201150961422?_trksid=p2055119.m1438.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Wie wäre denn die Hardwarelösung?

Besten Dank schon einmal :slight_smile:

Die 20 cm können bei deinen Störimpulsen schon deutlich zu lang sein.
Der I2C-Bus ist für geräteinterne Verkabelung gedacht.

Dieses Problem hatten wir hier schon öfter.
Bringe je einen 1 kOhm ( 1 - 4,7 k) Widerstand an die I2C-Leitungen (SDA - SCL) gegen +5Volt.
Wobei je kleiner desto besser.

HotSystems:
Die 20 cm können bei deinen Störimpulsen schon deutlich zu lang sein.
Der I2C-Bus ist für geräteinterne Verkabelung gedacht.

Dieses Problem hatten wir hier schon öfter.
Bringe je einen 1 kOhm ( 1 - 4,7 k) Widerstand an die I2C-Leitungen (SDA - SCL) gegen +5Volt.
Wobei je kleiner desto besser.

So ist es jetzt:
LCD Arduino
5V ----- 5V
SDA ----- A4
SCL ----- A5
GND ----- GND

Konkret soll es dann wie sein?
LCD Arduino
5V ----- 5V
SDA
SCL
GND ----- GND

Sorry aber mir fehlt der link, wie ich nun den Widerstand einbauen soll.

Beste Grüße & Danke

Hallo,
mit 220Ω laufen bei mir I2C-Slave´s bis 7m Leitungslänge ohne Probleme.
Ein kleiner 10µF Elektrolytkondensator in die Spannungsversorgung direkt am
I2C-Slave wäre auch nicht schlecht.
Gruß und Spaß
Andreas
P.S. beide Widerstände auf +5v. Die andere Seite eines Widerstand auf SDA, die des anderen Widerstand
auf SCL.

tabledancer:
So ist es jetzt:
LCD Arduino
5V ----- 5V
SDA ----- A4
SCL ----- A5
GND ----- GND

Sorry aber mir fehlt der link, wie ich nun den Widerstand einbauen soll.

Das hatte ich doch schon beschrieben:

Die Leitung bleibt wie sie ist, es kommt nur jeweils ein Widerstand gegen +5Volt hinzu.

Z.B. so: Pullup-Widerstand

HotSystems:
Das hatte ich doch schon beschrieben:

Die Leitung bleibt wie sie ist, es kommt nur jeweils ein Widerstand gegen +5Volt hinzu.

Z.B. so: Pullup-Widerstand

Demnach so, richtig?:
LCD Arduino
5V ------------------------ 5V
SDA ---- Widerstand ---- 5V
SCL ----- Widerstand -----5V
SDA ----------------------- A4
SCL ----------------------- A5
GND ----- -----------------GND

Das werde ich dann mal austesten :-)! Besten Dank schon einmal

tabledancer:
Demnach so, richtig?:
LCD Arduino
5V ------------------------ 5V
SDA ---- Widerstand ---- 5V
SCL ----- Widerstand -----5V
SDA ----------------------- A4
SCL ----------------------- A5
GND ----- -----------------GND

Das werde ich dann mal austesten :-)! Besten Dank schon einmal

Ja, genau so ist es richtig.

Was du noch probieren kannst, Widerstände am (Kabelseite) Arduino oder am LDC.
Hier tippe ich auf LCD.

Und die Werte kannst du auch austesten. Bei hat es mit 1 kOhm immer sauber funktioniert.
Aber wie SkobyMobil schrieb, geht auch 220 Ohm.

Jetzt weiß ich zwar, was und wie es zu tun ist, allerdings habe ich noch Verständnisschwierigkeiten, warum es dann funktioniert.

Warum verhindert ein Pull-Up Widerstand Störzeichen auf dem Bildschirm?

Beste Grüße

tabledancer:
Jetzt weiß ich zwar, was und wie es zu tun ist, allerdings habe ich noch Verständnisschwierigkeiten, warum es dann funktioniert.

Warum verhindert ein Pull-Up Widerstand Störzeichen auf dem Bildschirm?

Der Widerstand zieht die Leitung auf einen definierten Spannungswert, damit können Störspannungen nicht so leicht die Pegel auf der Leitung verschieben.
Daraus resultiert eine höhere Störfestigkeit und die übertragenen Zeichen bleiben erhalten.

Hi,

Ich habe gerade wie wild mit 4,7kohm probiert. Leider ohne Erfolg.

Falls ihr noch weitere Tipps habt, würde mich das freuen.

Beste Grüße