Forum: Mikrocontroller und Digitale Elektronik EMV-Problem ATMEGA48. Watchdogtimer?


von Thomas R. (r3tr0)


Angehängte Dateien:

Lesenswert?

Hallo liebe Gemeinde,

haben bei uns eine Dauerlaufsteuerung gemacht, welche 2x24V-DC Motoren 
ansteuert.
Diese Motoren fahren eine Spindel auf Endschalter, und danach wieder 
hinunter auf andere Endschalter. Immer hin und her.
Dort werden vom µC ATMEGA48-20A eigentlich nur Transistoren angesteuert, 
welche Relais auf einer externen Platine ansteuern welche wiederrum die 
Motoren durchsteuern.

Das Programm sagt im Endeffekt nur: 30 Sekunden die Relais schalten zum 
Hochfahren, danach 30 Sekunden schalten zum Hinunterfahren. Das ganze 
geht so immer weiter, um unsere Mechanik zu testen.

Nun ist es so, dass die Dauerlaufsteuerung nach unterschiedlichen Zyklen 
immer aufhört zu funktionieren. Die Motorplatine ist Serie und dort sind 
leider keinerlei Freilaufdioden etc verschaltet. Bei den 
Einschaltmomenten und Ausschaltmomente entstehen Peaks von -100V bis zu 
+100V. Ich gehe hiervon aus, dass die Peaks EMV Störungen erzeugen und 
mir den Controller auf der Dauerlaufsteuerung zum aufhängen bringen.
An der Platine vom Motor kann ich leider nichts ändern.

Der Vorgänger wird wohl auch die Dauerlaufsteuerung nicht wirklich EMV 
konform gelayoutet haben, diese kriegt sogar die Spannungsversorgung von 
der Motorplatine.
Netzteil 24V-> Relaisplatine für Motoren -> Dauerlaufplatine. Hier 
könnte es ja gut sein, dass die Störungen gut übertragen werden. zudem 
fehlt sogar ein Widerstand vom Reset-Pin zu VCC. Den habe ich händisch 
nachgelötet(5kOhm), und die Steuerung läuft schon einmal länger. 
Trotzdem hängt sie sich nach ein paar Stunden/Tage einfach auf.

Jetzt kam mir die Idee: Akiviere doch den Watchdogtimer, falls sich das 
Programm aufhängt, soll der WDT den µC reseten und das Programm kann 
einfach weiter laufen. Hier ist dann aber das Problem, die 
Dauerlaufsteuerung startet nur, sobald ich eine Taster drücke.

Sobald der WDT nun auslösen würde, müsste man immer wieder den Taster 
drücken, damit das Dauerlaufprogramm startet.


-> Jetzt kommen wir zur eigentlichen Frage:
Ist es möglich, beim WDT erst einen Interrupt auszuführen und noch 
keinen Reset, welcher mir ins EEPROM schreibt, ob das Dauerlaufprogramm 
auf 1 war, und dann erst den Watchdog Reset akiviert. (WDE auf 1 
setzen).
Da die Timervariable nun im Programm ja nicht mehr zurückgesetzt wird, 
müsste der Reset ja auslösen, oder?
Und sobald das Programm resetet hat, möchte ich aus dem EEPROM auslesen, 
das Dauerlaufprogramm auf 1 war. Wenn ja -> direkt starten mit 
Dauerlauf, ansonsten einfach nichts machen, bis ich den Taster betätige.

Somit müsste ja theoretisch das Programm dauerhaft weiterlaufen, und 
sobald es sich aufhängt neu Starten.

Hatte mit den AVRs nur in der Ausbildung zum Elektroniker zu tun, und 
jetzt bleibt mir wohl nichts anderes übrig, mich damit zu beschäftigen 
:)
Die Fehler treten nur auf, da der Motor immer nachtaktet, da auf den 
Spindeln einiges an Gewicht drückt. Somit fährt die Spindel auf 
Endschalterposition, das Gewicht lässt den Motor leicht zurück drehen, 
ist wieder vom Endschalter unten und fährt wieder nach oben. Kann leider 
nicht auslesen, ob ein Endschalter gedrückt wird, deshalb eben 30Sek 
nach oben, 30Sek nach unten. Beim Nachtakten gibt es dann eben öfters 
diese Peaks.

Hoffe mir kann einer bestätigen, ob das mit dem WDT so machbar wäre, 
oder eine andere Idee hätte, das ganze hinzubekommen.
An der Dauerlaufplatine könnte ich Theoretisch noch einiges ändern.

Grüße

Thomas

von Nop (Gast)


Lesenswert?

Thomas R. schrieb:

> Sobald der WDT nun auslösen würde, müsste man immer wieder den Taster
> drücken, damit das Dauerlaufprogramm startet.

Ich weiß es nur vom Cortex-M4, aber der kann selber rausfinden, wieso er 
neu gestartet ist. Zu den möglichen Gründen zählt auch Watchdog-Restart. 
Damit kannste das dann so machen, daß er nicht auf den Tasterdruck 
wartet, wenn er via Watchdog restartet hat. Das wäre die 
quick&dirty-Lösung für das Problem.

von m.n. (Gast)


Lesenswert?

So ganz verstanden, welche Schaltungsteile fest und welche noch variabel 
sind, habe ich nicht.
Ein Blick auf das Layout zeigt, daß das GND-Signal extrem schlecht 
ausgeführt ist. Dadurch ist die Schaltung sehr störanfällig.

Sorge dafür, daß die Masseflächen flächendeckend mit GND belegt sind. 
Die jetzigen Störungen per Software zu minimieren, ist viel zu früh. 
Sofern Dein Layout 1-lagig ist, verwende am besten eine 2. Lage nur für 
GND.

von samy (Gast)


Lesenswert?

Leider finde ich hier keinen Schaltplan oder Software-Listing.

Grundsätzlich gilt aber:

Vernünftige störsichere Schaltung + Vernünftiges störsicheres Layout + 
Vernünftige störsichere Software = Einwandfreie Funktion

von Pandur S. (jetztnicht)


Lesenswert?

> Ich gehe hiervon aus, dass die Peaks EMV Störungen erzeugen und
mir den Controller auf der Dauerlaufsteuerung zum aufhängen bringen.
An der Platine vom Motor kann ich leider nichts ändern.

Allenfalls Dioden ueber den Motoren ?
Und sonst ... in die Tonne. Ein netter Versuch Dumme abzuzocken. (nice 
try)
So eine Steuerung ist fahrlaessiger Abfall. Man sollte gar nicht erst 
versuchen EMV Probleme mit Software zu beheben.

von HildeK (Gast)


Lesenswert?

Thomas R. schrieb:
> Ist es möglich, beim WDT erst einen Interrupt auszuführen und noch
> keinen Reset, welcher mir ins EEPROM schreibt, ob das Dauerlaufprogramm
> auf 1 war, und dann erst den Watchdog Reset akiviert. (WDE auf 1
> setzen).

Ich meine mich zu erinnern, wenn beides aktiv sein soll, wird immer nach 
Ablauf der Zeit der Interrupt ausgelöst. Dort muss dann WDE neu gesetzt 
werden, damit beim nächsten mal ein Reset ausgelöst wird.
Was ich nicht weiß: ob der IRQ auch durch regelmäßiges Rücksetzen des 
WD-Timers verhindert werden kann - vermutlich.

> Sobald der WDT nun auslösen würde, müsste man immer wieder den Taster
> drücken, damit das Dauerlaufprogramm startet.
Es gibt (zumindest beim Tiny [MCUSR – MCU Status Register]) ein 
Register, das einem sagt, welche Art von Reset ausgeführt wurde. Dort 
ist erkennbar, ob es ein WD-Reset oder Power-On-Reset war und so 
könntest du ggf. die Tastenabfrage überspringen.

von Peter D. (peda)


Lesenswert?

m.n. schrieb:
> Ein Blick auf das Layout zeigt, daß das GND-Signal extrem schlecht
> ausgeführt ist.

Auf dem winzigen Bild ist ja kaum was zu erkennen. Es scheint, GND geht 
ums halbe Dorf. Sogar die interne Verbindung des MCs scheint als aktive 
GND-Verbindung herhalten zu müssen. Das ist absolutes NoGo!

von HildeK (Gast)


Lesenswert?

Peter D. schrieb:
> Sogar die interne Verbindung des MCs scheint als aktive
> GND-Verbindung herhalten zu müssen.

So was könnte man bei bestehendem Layout durch ein Drähtchen beheben. 
Wenn ich den TO richtig verstanden habe

Thomas R. schrieb:
> Der Vorgänger wird wohl auch die Dauerlaufsteuerung nicht wirklich EMV
> konform gelayoutet haben,

besteht das (schlechte) Layout bereits und er versucht, mit diesem die 
Schaltung zum Laufen zu bringen. Vielleicht hilft hier auch noch ein 
zusätzliches LC-Filter in der Versorgungsspannungszuführung.

Wenn er bereit ist, das zu überarbeiten, sind eure Tipps natürlich sehr 
hilfreich.

von Thomas R. (r3tr0)


Lesenswert?

HildeK schrieb:
> besteht das (schlechte) Layout bereits und er versucht, mit diesem die
> Schaltung zum Laufen zu bringen. Vielleicht hilft hier auch noch ein
> zusätzliches LC-Filter in der Versorgungsspannungszuführung.
>
> Wenn er bereit ist, das zu überarbeiten, sind eure Tipps natürlich sehr
> hilfreich.

Das verbockte Layout besteht bereits, und die ganzen Steuerungen wurden 
so schon bestellt, ist aber auch schon 2 Jahre her. Ist vorher auch noch 
nie aufgefallen, jedoch fällt es jetzt bei der Belastung auf.

Der gute Herr ist nun nicht mehr in der Firma und ich darf mich darum 
kümmern, aber ich werde wohl das Layout von grundauf neu machen.

Danke schon einmal für die Tipps!
Dann werde ich mich an das Layout machen und erst danach an die 
Software.
Jetzt ist auf jedenfall wieder ein Dauerläufer gestaret, bei dem ich 
jede Groundverbindung mit Drätchen nachgelötet habe, damit alles eine 
bessere Anbindung hat.

Grüße

von Thomas (kosmos)


Lesenswert?

Hast du nur 5 kOhm als Pullup nachgelötet oder auch den empfohlenen 
100nF Kerko?

Löte doch die nötigen Freilaufdioden an den Relais nach oder werden die 
mit Wechselspannung angesteuert?

Wie bereits empfohlen ein LC Filter in die Versorgung setzen um kurze 
Impulse zu glätten.

Steht ein Oszi zur Verfügung?

von m.n. (Gast)


Lesenswert?

Thomas R. schrieb:
> Jetzt ist auf jedenfall wieder ein Dauerläufer gestaret, bei dem ich
> jede Groundverbindung mit Drätchen nachgelötet habe, damit alles eine
> bessere Anbindung hat.

Wenn Du ein sofortiges, kleines Erfolgserlebnis haben möchtest, dann 
kontaktiere die diversen Masseflächen(-inseln) untereinander nicht mit 
Drähtchen, sondern mit Draht.

Thomas R. schrieb:
> Der gute Herr ist nun nicht mehr in der Firma und ich darf mich darum
> kümmern, aber ich werde wohl das Layout von grundauf neu machen.

Das dürfte doch eher eine Fingerübung sein, die mit ein wenig Erfahrung 
in < 30 Minuten erledigt sein sollte. Im einfachsten Fall hift die 
erwähnte 2. Lage.
Bei dem neuen Layout verwende auf jeden Fall für die 
Versorgungsleitungen dickere Leiterbahnen.

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Der Mega48 kann doch wahlweise einen Watchdog-Interrupt, einen 
Watchdog-Reset oder einen kombinierten Mode!
Im MCU Status Register kann sogar nachgesehen werden, woher der Reset 
kam.

Wo ist das Problem?

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

Thomas R. schrieb:
> Das verbockte Layout besteht bereits

Das ist ein klassisches Beispiel für die leider viel zu oft verbreitete 
Methode:
- sich nicht um ordentliches Massekonzept kümmern
- ganz zum Schluss durch Fluten Masseflächen erzeugen
- annehmen, dass jetzt alles perfekt ist
- nicht kontrollieren, was hier nicht in Ordnung ist

Das Massekonzept muss immer vorher überlegt werden, und es muss genügend 
Platz dafür bereitgestellt werden.

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.