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