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 ^^
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......
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.