Forum: Mikrocontroller und Digitale Elektronik 16x2 Display an Arduino Mega gibt manchmal komische Zeichen.


von Matthias G. (matthias_g96)


Angehängte Dateien:

Lesenswert?

Hallo Leute!
Ich möchte euch mal ein Projekt von mir vorstellen, und im gleichen 
Atemzug um eine kleine Hilfe dabei bitten ;)

Es geht um meine Heizungstelemetrie. Sie besteht aus einem Arduino 
Mega2560, einem 16x2 LCD, einer Relais-Platine, diversen DS18S20, ein 
paar optokopplern, Tasten usw.
Der momentane Stand ist dass ich Temperaturen von 9 Temperatursensoren 
bekomme, der Status meines (Holzvergaser)kessels wird per OK gelesen, 
der OK-Ausgang vom Stromzähler wird gemessen, und die Relais-Platine 
kann gesteuert werden (Momentan ist nur eine Funktion zum zuschalten der 
elektrischen Heizpatrone eingebaut, deren Schütz allerdings noch nicht 
am Netz hängt. Später möchte ich bei Bedarf evtl noch Pumpen manuell 
schalten können).
Was noch dazukommt ist, den Status diverser Pumpen zu erfassen, aber das 
ist momentan noch nicht allzu wichtig.

Sämtliche Daten werden sowohl auf dem Display ausgegeben (Per Taster 
anwählbar) als auch übers Netzwerk in die Datenbank meines Servers 
geschossen, um sie dann grafisch anzeigen zu können, auf der gleichen 
Seite kann ich die Schaltausgänge ansteuern, allerdings erst nachdem ich 
eingeloggt bin ;)

Soweit funktioniert die ganze Sache super, kommt auch mit den 
schwierigeren Bedingungen im Heizungsraum gut zurecht. Die 
Stromversorgung für LCD, Relais und DS18S20 kommt mittlerweile direkt 
aus dem stabilisierten 5V-Netzteil, da vorher der 5V-Ausgang den Arduino 
wohl damit überfordert war (bei 13V eingangsspannung und 30° 
Raumtemperatur kein Wunder) und dann regelmäßig nach ein paar Minuten in 
eine Reset-Loop gefallen ist.

So, lange Rede kurzer Sinn, das Display macht mir noch ein bisschen 
Sorgen. Manchmal zeigts plötzlich wirre Zeichen an, manchmal schon 1 
Minute nach einem Reset, manchmal auch einen Tag später. Momentan läuft 
die Sache schon den 2. Tag ohne Fehler.
Die Zeichen verschwinden bei neuen Daten fürs Display nicht, sie ändern 
sich nur.

Ich denke auf den Fotos sieht man das recht gut. Das Ding wird sicher 
auch keinen Schönheitswettbewerb gewinnen, aber das macht nix, es muss 
nur funktionieren, und der ganze Heizungsraum ist sowieso hässlich.

Was man aber auf den Fotos auch sieht ist, dass ich ein ordentliches 
Kabel-Wirrwarr fabriziert hab. Was auch erkennbar ist, die Steuerung 
sitzt direkt neben meiner kleinen Unterverteilung.
Ich gehe also davon aus dass der Fehler durch Einstreuungen aus dem Netz 
verursacht wird.
Würde es sinn machen einfach die Kabel zum Display irgendwie 
abzuschirmen? Oder könnte ein Kondensator in der Stromzufuhr zum Display 
schon helfen?
Oder sollte ich lieber das Display selbst irgendwie abschirmen? Wie 
würdet ihr hier anfangen?

Ich bin für jden Tipp dankbar.
Und danke auch jedem der sich jetzt die Zeit genommen hat das alles zu 
lesen ^^

von Toxic (Gast)


Lesenswert?

Das sieht mir zu 80% nach einem Softwarefehler aus.Stelle sicher, dass 
auch immer wirklich die von dir gewuenschten Datenbytes nach 
Tabellenberechnungen etc an das Display gesendet werden.Ich hatte selber 
schon immer wieder mit solchen "LCD-Widerlichkeiten" zu kaempfen gehabt 
und in erster Linie grundsaeztlich Microchip die Schuld gegeben..... ;-)

Matthias Gassner schrieb:
> Die Zeichen verschwinden bei neuen Daten fürs Display nicht, sie ändern
> sich nur.
Das ist verstaendlich wenn sich einmal - durch was auch immer - z.B eine 
Basisadresse fuer eine Tabellenberechnung veraendert hat und sich erst 
nach einem Reset neu initialisiert.

Geh den deinen Code nochmal sorgfaeltig durch bevor du anfaengst viel 
Zeit in Hardwareveraenderungen zu investieren.Ich weiss dass dein Code 
genauso 100%-ig ist wie meiner aber leider gibt es da auch noch Murphy's 
Law......

von Matthias G. (matthias_g96)


Lesenswert?

Danke, aber darauf dass mein Code 100%ig ist würd ich mich nicht 
verlassen ;)
Aber dank Arduino IDE und fertigen Libarys ist es eigentlich ziemlich 
Idiotensicher. Ich kann mir nicht vorstellen wie sich hier noch ein 
Fehler einschleichen kann.
Mir ist es allerdings schonmal passiert dass der Code beim Hochladen 
anscheinend nicht richtig übertragen wurde, und sich dann deswegen 
seltsam verhalten hatte. Aber das kann ich hier getrost ausschließen, 
weil ich inzwischen schon mehrere Versionen meines Codes aufgespielt 
hab.
Könnte evtl die Libary beschädigt sein? Ich werde mal eine neue laden 
und testen.
Aber wenn es ein Fehler im Code wäre, müsste es sich ja durch bestimmte 
Konstellationen reproduzieren lassen! Und es tritt ja wie gesagt 
zufällig auf, manchmal in den ersten Minuten nach Programmstart, 
momentan läuft die Sache seit zwei Tagen fehlerfrei...

von Wolfgang (Gast)


Lesenswert?

Matthias Gassner schrieb:
> Was man aber auf den Fotos auch sieht ist, dass ich ein ordentliches
> Kabel-Wirrwarr fabriziert hab

Ack, da fehlt dringend ein Verdrahtungskonzept. Drähte irgendwie 
anklemmen führt nach ein paar Mal öffnen leicht zu abgerissenen und 
nicht mehr zuordnbaren Leitungen.

Beim Display tippe ich auf einen Absturz des Prozessors. Hast du mal 
versucht, das Display ab und zu neu zu Initialisieren?
Nicht schön, aber es hilft oft.

von Matthias G. (matthias_g96)


Angehängte Dateien:

Lesenswert?

Wolfgang schrieb:
> Beim Display tippe ich auf einen Absturz des Prozessors. Hast du mal
> versucht, das Display ab und zu neu zu Initialisieren?
> Nicht schön, aber es hilft oft.

Genau das wollte ich eigentlich vermeiden, ist halt eigentlich nicht die 
feine Art ^^
Aber ich werd da mal probeweise eine funktion einbauen, mit der ich das 
LCD per knopfdruck resetten kann...

Mit dem Verdrahtungskonzept muss ich dir vollkommen recht geben ;) Aber 
ich bin immer ein bisschen faul was da angeht. Und ich hab auch nicht 
vor das ding öfter aufzumachen, wenn alles läuft schraubt da niemand 
mehr dran rum.

Allerdings gesellt sich noch ein anderes Problem dazu, heute morgen 
haben sämtliche Sensoren -0,13° ausgegeben, sieht irgendwie blöd aus auf 
der Grafik. Das Display dagegen hat brav getan was es soll.
Das ist bisher erst einmal passiert, aber ich würde auf die gleiche 
Ursache tippen wie beim Display.
Das ist ein größeres Problem als beim Display, allerdings könnte ich den 
Fehler per software erkennen und den Arduino dann automatisch resetten. 
Ist aber mindestens genauso unschön...


Edit: Also ein einfaches lcd.begin(16,2); wirkt schonmal wunder was das 
display angeht. lässt sich denn softwareseitig irgendwie feststellen ob 
der controller abgestürzt ist? dann könnte man das automatisch machen ^^
der komplette reset mittels wdt_enable(WDTO_15MS); funktioniert 
allerdings nicht, aber vielleicht reicht mir auch schon 
sensors.begin();, ich werd bei gelegenheit noch ein bisschen 
rumprobieren ;)

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.