Programm auf dem Arduino hängt sich auf

Moin, dass ist das erste mal das ich das Forum für eine Frage nutze. Ich hoffe ihr könnt mir helfen.

Ich habe inzwischen ein relativ großes Programm für einen Prototypen geschrieben. Ich verwende einen Arduino Uno um mehrere Relais und eine Pumpe über PWM zu steuern. Dazu verwende ich Schwimmerschlater, verschiedene Sensoren und eine RTC (DS3231). Später wollte ich dann Datenlogs auf eine SD Karte schreiben um eine Langzeitauswertung zu machen. Dazu fehlten mir dann jedoch Ausgänge auf dem Arduino Uno. Daher habe ich zuerst einen MCP23017 eingebaut um darüber die Relais (7 Stück) zu schalten. Seit dem ich den eingebaut habe hängt sich aber von Zeit zu Zeit das Programm auf. Dann bleibt der Arduino in seinem Zustand stehen und die Relais Schalten nicht mehr ab sofern sie an geschaltet sind. Das war jedoch meistens nicht so schlimm. Nach einem neustart lief alles wieder.

Vor einer Woche habe ich dann das SD Karten Shield angeschlossen. Dieses macht jedoch auch Probleme. unter gewissen Umständen funktioniert der CS Pin am SD Shield nicht mehr. Das habe ich erstmal umgangen in dem ich CS mit GND verbunden hab. Da ich keine weitern Module mit SPI ansteuere macht das kein Problem. Nur die Abstürze die ich habe seit dem ich den MCP23017 zur Steuerung von den Relais nehme unterbrechen immer mein Datenlog auf der SD-Karte.

Kann es Probleme mit den I2C Modulen (RTC und Porterweiterung) geben? Mein Code ist leider zu groß um den hier zu Posten.

wolbers:
Kann es Probleme mit den I2C Modulen (RTC und Porterweiterung) geben?

ja

wolbers:
Mein Code ist leider zu groß um den hier zu Posten.

mach ihn so klein, dass er das Problem zeigt, und poste ihn hier. Außerdem kannst du auch Anhänge posten.
Wenn du einen Code postest, gib an welche Abhängigkeiten / Libraries du verwendest. ALLE mit einem Link wo du sie her hast. Umso weniger Libraries du verwendest, desto größer ist die Chance dass sich das jemand ansieht. Was also wieder dafür spricht, dass du einen minimalen Sketch machst um das Problem nachvollziehen zu können.

Weiters brauchen wir ein Schaltbild und ein Echtbild deines Aufbaus.
Nur wenn alle drei Bedingungen (Code, Schaltbild, Echtbild) erfüllt sind, ist eine wirkliche Hilfe möglich.

Ansonsten beschränkt es sich auf Raterei ala:
-I2C Leitungen wirr/zu lang
-Schlechte Stromversorgung
-Wackelkontakte
-Verwendung von Arduino String variablen ohne .reserve
-nur int Variablen statt überlegtem Einsatz der richtigen Variablentypen
-Index-Überschreitungen

  • = statt ==
    ...

wolbers:
Dazu fehlten mir dann jedoch Ausgänge auf dem Arduino Uno. Daher habe ich zuerst einen MCP23017 eingebaut ...

Welche PullUp-Widerstände verwendest Du? MCP23017 als IC oder auf einer Platine?

Hallo,
hast Du an den Relais schon was angeschlossen, dann hast Du eventuell EMV Probleme. Klemm das mal alles ab und schalte nur die Relais. Was sind das für Relais, haben die eine Freilaufdiode ?

ist Dein Programm so groß das der Speicher zu klein wird und das die Ursache ist. ?

Heinz

Für mich gilt:

Kein_Code + Kein_Schaltplan = Keine_Hilfe

Kein_Code + Kein_Schaltplan = Keine_sinnvolle_Hilfe

Nur rumstochern im Nebel.

Ich würde auch auf Probleme mit den Pullupwiderständen der I2C tippen.

Aber die Wahrscheinlichkeit eines richtigen Tipps ist proprtional zu den Infos die amn vorher bekommt.

Grüße Uwe

agmue:
Welche PullUp-Widerstände verwendest Du? MCP23017 als IC oder auf einer Platine?

Das Teil ist auf einer Platine: DEBO IO BOARD: Entwicklerboards - I - O-Erweiterungsboard, MCP23017 bei reichelt elektronik

Ich werde mich morgen ran setzen und den Code reduzieren, damit ich den hier hochladen kann

wolbers:
Das Teil ist auf einer Platine:

10 kΩ PullUps auf der Platine: Wie lang sind die I2C-Verbindungen?

wolbers:
Ich werde mich morgen ran setzen und den Code reduzieren, damit ich den hier hochladen kann

ZIP-Datei geht auch.

Spekulativ Hardware: siehe #1 -> Schaltplan und Fotos!
Spekulativ Software: Verwendung von String-Objekten, denn die fragmentieren den Speicher.

ZIP-Datei geht auch.

Bitte nicht. Dann lieber eine txt-Datei, die kann man auch mobil öffnen.

Spekulativ auch, an den Relais fehlen die Freilaufdioden.
Welche Spannung schaltest du mit den Relais ?
Evtl. hilft da, wenn du einen Snubber an die Kontakte anschließt.

Aber auch hier alles spekulativ, da wir die Schaltung nicht kennen.

Ups...die Frage mit der Freilaufdiode wurde schon gestellt. Warum wurde die noch nicht beantwortet ?
Sorry, aber wenn keine Antworten kommen, wird die Hilfe schwer.

HotSystems:
Ups...die Frage mit der Freilaufdiode wurde schon gestellt. Warum wurde die noch nicht beantwortet ?

Vollkommen nprmal, wenn man nicht weiß, was das ist und es nicht zugeben möchte.

HotSystems:
Sorry, aber wenn keine Antworten kommen, wird die Hilfe schwer.

Nein, sie ist unmöglich. Aber der TO lebt in Australien und träumt gerade süß. Also ist Geduld angesagt.

Wer nach einem Softwarefehler fragt, möchte auch eine Reparatur der Software. Das ist die Erwartungshaltung, der wir leider nicht gerecht werden.

Ein Freund besuchte mich mehrmals und vermutete das Problem in seinem Programm. Ich aber fing immer bei der Spannungsversorgung an zu suchen. Nicht selten bin ich fündig geworden, was mit einem "Ich sollte es inzwischen gelernt haben!" kommentiert wurde.

agmue:
Wer nach einem Softwarefehler fragt, möchte auch eine Reparatur der Software. Das ist die Erwartungshaltung, der wir leider nicht gerecht werden.

Wenn es wirklich um die Software geht, hätte der TO die schon längst posten können.
Was die Freilaufdioden betrifft, da kann man auch nachfragen, oder anonym danach googeln. :wink: