SIM800 + Mega 2560, hängt sich auf

Guten Morgen,

ich habe eine Diesel-Standheizung dessen Steuerung über halb duplex uart bei 25000baud funktioniert. Ich höre die Kommunikation zwischen Controller und Heizung ab und lese so den aktuellen Status ab. Wenn ich per SMS "heaton" oder "heatoff" sende, gibt sich der Arduino als Controller aus indem er 100ms nach dem letzten Datenpaket einen simulierten "Heizung an" und "Heizung aus" Befehl injectet. Alle 800ms kommunizieren Controller+Heizung miteinander. Das funktioniert auch wunderbar und zuverlässig.
Im Auto allerdings braucht der MEGA manchmal 2..3 Neustart-Versuche bis er auf SMSe reagiert und am nächsten Tag funktioniert es auf jeden Fall nicht mehr. Bedeutet im Prinzip, er reagiert nicht mehr auf "heaton" und "heatoff" SMSe.
Schließe ich aber meinen Laptop an den Atmega 2560 per USB an, resettet er beim connecten und es geht wieder. Auch ohne Laptop geht es dann eine Weile, bis es wieder aufhört zu funktionieren.

Liegt es am Code, oder ist eventuell das SIM800C Modul zu Nah am Arduino und stört den Atmega2560 wodurch er irgend wann abstürzt? Das GSM-Modul habe ich an die Rückseite des Arduinos geklebt.

Ich würde mich sehr über eure Hilfe freuen. Vielen Dank!

Viele Grüße,

Chris

sketch_dec09a_atmega2560.ino (9.83 KB)

Zeige uns bitte ein Schaltbild, wie du alles verdrahtet hast.
Ich vermnute, da liegt ein Fehler in der Spannungsversorgung vor.

Guter Hinweis! Dies würde erklären wieso es zusätzlich am Laptop angeschlossen funktioniert. Die Controller-Leitung von der Heizung zum Controller ist auch doch relativ lang und wer weiß wie belastbar die 5V-Versorgung überhaupt ist.
Ich schließe den Atmega nach der Arbeit noch zusätzlich an einen KFZ-USB-Ladeadapter an und versuche es so.

Vielen lieben Dank für deine Hilfe!

lavao:
Guter Hinweis! Dies würde erklären wieso es zusätzlich am Laptop angeschlossen funktioniert. Die Controller-Leitung von der Heizung zum Controller ist auch doch relativ lang und wer weiß wie belastbar die 5V-Versorgung überhaupt ist.
Ich schließe den Atmega nach der Arbeit noch zusätzlich an einen KFZ-USB-Ladeadapter an und versuche es so.

Vielen lieben Dank für deine Hilfe!

Leider kann man auf deinen Fotos nicht erkennen, wie die Kabel verlaufen.
Ein echtes Schaltbild wäre da schon wichtg.

Und vorsichtig, ich würde die Boards nicht einfach an 2 Spannungsquellen anschließen. Damit kannst du einiges zerstören, wenn die Schaltung des Boards nicht bekannt ist.

Wenn der Schaltplan der Standheizung stimmt, soll ein LM2596S die 5V für die gesamte Elektronik zur Verfügung stellen. Den Schaltplan findet man auch in einer offenen Facebook-Gruppe, die es für diese chinesischen Nachbau-Standheizungen gibt.
Der Regler kann zwar schon 3A und ist immerhin ein Schaltregler, aber wenn da noch die ganze restliche Elektronik dran hängt könnts trotzdem etwas knapp werden.

Ich denke ich trenne testweise die +5V von der Heizung zu meinem Arduino+GSM-Modul und versorge es separat. Wenn es dann funktioniert, bekommt der Arduino ein eigenes fertiges LM2596-Modul.
Oder würde auch schon ein größerer low esr Elko mit 4400µF oderso ausreichen? Der müsste dann aber in der Nähe des Reglers sitzen und nicht 3M weiter am Controller denke ich, wegen Impedanz usw., oder?
Laut Schaltplan gibts am Ausgang des LM2596 nämlich gar keinen Elko. Sonst funktioniert die Standheizung ja prima, nur mein Gebastel möchte nicht

HeaterSchematic.pdf (68.8 KB)

Ein Schaltbild, wie du es verdrahtet hast, fehlt leider immer noch.

Ich würde in jedem Fall die Versorgung der Teile auftrennen und einen eigenen Stepdown einsetzen.
Ob nur ein Elko an der Stelle reicht, kann ich nicht sagen. Könnte man probieren.
Für das GSM-Modul würde ich in jedem Fall einen Elko zusätzlich einbauen.

Hi

Wie stehen die Chancen, daß Zeile 215

      sms = String("Status: " + heaterstate[heaterstatenum] + "\nCurr/Set-Temp: " + (int)currtemp + "C/" + (int)settemp + "C\nBodyTemp: " + exchtemp + "C\nBattVolt: " + battvolt + "V\nPump/Fan: " + pumphz + "Hz/" + fanrpm + "RPM");

etwas mit dem unerklärlichem Verhalten auf sich hat?
Wobei Das ja nur ausgeführt wird, wenn eine Status-SMS an den Arduino gesendet wurde.
... wie oft fragst Du den Status ab?

Sonst wäre mir beim Überfliegen kein größeres 'NoGo' aufgefallen.

Ist das Versagen reproduzierbar?
Kannst Du dem Arduino 50 SMS am Stück schicken, Die Er klaglos ausführt, aber am nächsten Morgen ist trotzdem Alles tot?

MfG

Guten Abend zusammen,

ich habe heute drei 2200µF 10V low esr Elkos parallel nah an das GSM-Modul gehängt und es scheint nun problemlos zu funktionieren. Bisher reagierte er sofort auf jede Steuer-SMS und er antwortete auch auf eine "ping"-SMS innerhalb von Sekunden mit einer "pong"-SMS. Vorher brauchte ich manchmal 2..3 SMSe bis er auf sie reagierte und auch mit einer SMS antwortete.
Ich schaue mal ob der Arduino nach 24h noch auf die SMSe reagiert. Bis jetzt stieg er zuverlässig spätestens am nächsten Morgen aus.

Falls das Problem doch wieder auftritt, bekommt meine Steuerung einen eigenen Stepdown-Regler. Der Tipp mit der Versorgung war gut, danke!

Den Status frage ich nur bei Bedarf ab, um zu schauen ob meine Heizung wirklich an geht und um die Autobatterie-Spannung und Innenraumtemperatur abzufragen.
Die Länge der Status-SMS waren meine ich maximal 140 Zeichen

Vielen lieben Dank für eure Hilfe!

Viele Grüße,

Chris

lavao:
Vielen lieben Dank für eure Hilfe!

Prima, freut mich, dass wir helfen konnten.