Hi, also ich hab jetzt auch das Problem, dass mein Arduino einfach
stehen bleibt.
Online finde ich dazu nur, dass daran Interferenzen schuld sein können.
Der Arduino hat ohne Probleme einen Ventilator 230V über einen
Optokoppler ein und ausgeschalten, je nachdem ob eine gewisse Temperatur
überschritten wurde.
Jetzt habe ich ein display dazugehängt, welches die Temperatur anzeigt,
seitdem hängt er sich regelmäßig auf.
Da beim Abschalten des Relais auch ein knacken in den PC Lautsprechern
zu hören ist, denke ich, dass da gewaltige Interferenz zurückkommt.
Kann man beim Arduino noch etwas auslesen das eventuell Debug Infos
anzeigt?
Bevor ich hier anfange Schaltpläne zu zeichnen und hochzuladen.
Ganz einfach gesagt:
Arduino steuert über 5V eben das Relais mit Pin.
Danach hängen noch 2 Temp Sensoren DHT 22 dran.
Und eben das mini display zum Anzeigen der Temperatur.
Seitdem das Display dran hängt, passiert das.
Zuvor hat sich nur manchmal der DHT22 aufgehängt, aber das lies sich mit
einer simplen DHT Reset Anweisung beheben.
Freilauf Diode hängt zumindest beim Relais dran zwischen +5V und GND.
Muss da zwischen Pin und GND auch eine ran?
Markus schrieb:> Seitdem das Display dran hängt, passiert das.
Firmwarebug?
Markus schrieb:> Der Arduino
Arduino != Arduino. Welcher uC?
Markus schrieb:> Kann man beim Arduino noch etwas auslesen das eventuell Debug Infos> anzeigt?
Mit einem geeigneten Debugger.
Du könntest z.B. innerhalb des Programms Statuswörter oder Nummern
(1,2,3,4,5) verteilen und die auf dem Display ausgeben. Wenn es dann
hängen bleibt siehst du das Statuswort und kannst gucken an welcher
Stelle im Programm das passiert ist.
Wenns immer die selbe Stelle ist wirds wohl am Code liegen.
Markus schrieb:> Bevor ich hier anfange Schaltpläne zu zeichnen
Das solltest du eigentlich schon vor dem Schaltungsaufbau gemacht
haben. Jetzt ist die zweitbeste Zeit dafür. Gib allen Bauteilen eigene
Namen (R1, R2, OK1, Relais2, ModulX, ...) und schreibe die
Typen/Bestellbezeichnungen dazu. Wenn möglich gib für Module einen Link,
wo du sie herhast.
> und hochzuladen.
Lade doch auch gleich ein (paar) Foto(s) vom realen Aufbau mit hoch.
Denn selbst super Schaltpläne können wirklich untauglich in Hardware
umgesetzt werden...
Markus schrieb:> Hi, also ich hab jetzt auch das Problem, dass mein Arduino einfach> stehen bleibt.
Definiere das.
In der Regel arbeitet nämlich die CPU munter weiter. Nur ist ein Zustand
eingetreten, den der Programmierer an dieser Stelle nicht erwartet hat,
z.B. ein Störimpuls an einem Eingang. Die CPU wartet dann ewig und 3
Tage, bis eine Bedingung erfüllt ist.
Die Abhilfe besteht darin, solche Stellen zu identifizieren und mit
einem Timeout zu sichern. Läuft der Timeout ab, muß das signalisiert
werden, z.B. durch eine blinkende LED.
Kann man einen Debugger anschließen, dann kann man sich dort bequem
anzeigen lassen, wo die CPU gerade rum-idled.
Und generell sollte man während der Entwicklung alle Stromsparmodi
erstmal disablen.
derjaeger schrieb:> Mikrocontroller-Watchdog aktivieren
Beste Methode, um Programmierfehler zu verschleiern.
Nach einem Watchdogreset wird alles getilgt, was Hinweise auf die
Fehlerursache geben könnte.
derjaeger schrieb:> Mikrocontroller-Watchdog aktivieren
Das ist das allerletze, was man macht, nachdem das System einige Wochen
ohne Probleme gelaufen ist.
Die Frickelbrüder, die sich für ihren regulären Softwareablauf auf den
WD verlassen, die sollten kein Geld für ihre Software bekommen.
Wo ich den WD als probates Mittel zum Zweck ansehe, ist z.B. bei
stromsparenden Systemen, wenn im "Standby" der µC komplett ausgeschaltet
ist, nur der WD läuft und alle 200ms den µC kurz neu startet, um
abzufragen, ob eine Taste betätigt oder die Batteriespannung zu weit
abgesunken ist.
Lothar M. schrieb:> nur der WD läuft und alle 200ms den µC kurz neu startet, um> abzufragen, ob eine Taste betätigt oder die Batteriespannung zu weit> abgesunken ist.
Dann aber mit WD-Interrupt und nicht mit Reset.
Dyson schrieb:> Dann aber mit WD-Interrupt und nicht mit Reset.
Ja, seit es den Enhanced Watchdog Timer gibt. Zitat aus der Appnote
AVR132:
"The WDT in all new AVR devices also has the ability to
generate interrupts instead of resetting the device."
Bei den alten AVR war zum Verlassen des Power Down per Watchdog
tatsächlich noch ein Systemreset nötig...
Markus schrieb:> Freilauf Diode hängt zumindest beim Relais dran zwischen +5V und GND.> Muss da zwischen Pin und GND auch eine ran?
Direkt zwischen +5V und GND kommt nie eine Freilaufdiode! Sie kommt
parallel zur Spule des Relais.
Diek schrieb:> Du könntest z.B. innerhalb des Programms Statuswörter oder Nummern> (1,2,3,4,5) verteilen und die auf dem Display ausgeben. Wenn es dann> hängen bleibt siehst du das Statuswort und kannst gucken an welcher> Stelle im Programm das passiert ist.> Wenns immer die selbe Stelle ist wirds wohl am Code liegen.
Hmm dachte tatsächlich das hängt an hardware, nicht an software, aber
hab das dennoch mal probiert ... hängt sich bei display.display() auf
...
Hab das jetzt mal auskommentiert und mal gucken wann ich mich darum
kümmern kann.
Markus schrieb:> hängt sich bei display.display() auf
Dann hängt vielleicht dein I²C Bus. Hast du vielleicht Pull-Up
Widerstände vergessen? Auf den China Modulen sind manchmal welche drauf,
aber meist zu hochohmig.
Markus schrieb:> Jetzt habe ich ein display dazugehängt, welches die Temperatur anzeigt,> seitdem hängt er sich regelmäßig auf.
Und das Display über lange, ungeschirmte Kabel, die nah am Relais und am
230V-Ventilator vorbeiführen, angeschlossen?
Markus schrieb:> Bevor ich hier anfange Schaltpläne zu zeichnen und hochzuladen.
Für die erste Beurteilung reicht meist ein Foto des Aufbaus.
Εrnst B. schrieb:> Markus schrieb:>> Jetzt habe ich ein display dazugehängt, welches die Temperatur anzeigt,>> seitdem hängt er sich regelmäßig auf.>> Und das Display über lange, ungeschirmte Kabel, die nah am Relais und am> 230V-Ventilator vorbeiführen, angeschlossen?>> Markus schrieb:>> Bevor ich hier anfange Schaltpläne zu zeichnen und hochzuladen.>> Für die erste Beurteilung reicht meist ein Foto des Aufbaus.
Nein, das Kabel zum Temp Sensor ist geschirmt ... das Ungeschirmte was
zum Relais führt war tatsächlich direkt über das Relais gelegt... hab
das mal behoben.
Markus schrieb:> Nein, das Kabel zum Temp Sensor ist geschirmt
hoffentlich ist der Schirm nicht an die GND-Leitung der Schaltung
angeschlossen sondern korrekt am Metallgehäuse.
Gruß Anja
Markus schrieb:> Das Entfernen der Leitung zum Relais das über dem Relais gelegen ist,> hat nun geholfen.
Der Nachbar hat den "Knack" weiterhin im Radio.
EAF schrieb:> Markus schrieb:>> Das Entfernen der Leitung zum Relais das über dem Relais gelegen ist,>> hat nun geholfen.>> Der Nachbar hat den "Knack" weiterhin im Radio.
Rache dafür das ich jeden morgen seinen Wecker klingeln höre? :D