Ich habe es geschafft einen Regler zu entwerfen, der ziemlich gut passt, jedenfalls solange der Roboter langsam bleibt. Wenn er jetzt balanciert bleibt er relativ lange auf einer Stelle, sobald er aber etwas schneller wird, passt der Regler nicht mehr und der Roboter kippt um.
Ich habe jetzt aber leider noch ein ganz anderes Problem:
Die Motortreiber fallen manchmal aus. Das ist nicht völlig neu, aber bis jetzt kam es nur vereinzelt vor. Oft läuft einfach ein Motor nicht, manchmal auch alle nicht. Meistens tritt dieser Fehler mitten beim Balancieren auf, selten auch schon von Anfang an. Ich vermute, dass es an den hohen Strömen liegt, besonders, wenn die Motoren plötzlich umgepolt werden.
Bis jetzt habe ich ausprobiert:
- Reset-Pin direkt auf VCC
- 100nF und 47µF an jeden Motortreiber
- Watchdog aktiviert
- Brown-Out aktiviert
Das hat leider alles nicht geholfen. Es kommt mir auch nicht so vor, als ob der µC einfach resettet. Meistens läuft die Kommunikation über I²C weiter, aber der Motor wird nicht mehr angesteuert. Ich glaube eher, dass z.B. die PWM-Erzeugung aufhört oder manche Pins nicht mehr als Ausgang konfiguriert sind.
Sobald länger als 250ms keine Daten mehr an den Motortreiber gesendet werden, führt der Watchdog einen Reset durch, danach geht wieder alles.
Der µC ist leider an einer schlechten Stelle im Layout. Auf beiden Seiten neben ihm befinden sich die Mosfets für die Motoransteuerung. Kann es sein, dass diese ihn stören?
Lesezeichen