Hallo,
[QUOTE=Geistesblitz;612287Derzeit ist es leider so, dass der Regler im Interrupt der UART läuft, da ich nicht weiß, wie ich das Ganze sonst synchron zum Rechner halten soll. Eigentlich wäre es besser, wenn der Regler mit einem eigenen Timer läuft und den Rechner nach neuen Werten fragt anstatt umgekehrt. Was passiert dann aber, wenn der Rechner dann nix von sich hören lässt?[/QUOTE]
Im UART-Interrupt nimmst du den Sollwert entgegen und legst den in einer globalen Variablen ab, zudem setzt du noch ein Flag.
Der Regler, eigentlich wie jetzt, läuft im Timerinterrupt.
Einzige Änderung ist, dass der Regler sich das Flag anschaut. Wenn es gesetzt ist, wird der neuen Sollwert übernommen und das Flag zurückgesetzt.
Der Regler kann dann noch ein Flag setzen, welches anzeigt, dass die Soll-Position erreicht wurde.
Mit einem weiteren Flag kannst du den Regler auch noch abschalten.
MfG Peter(TOO)
---------------------------- 17.2.2015 01:18 ----------------------------------------------
Eine Kleinigkeit habe ich übersehen:
Der Regler sollte in den Interrupt der PWM, evtl. kannst du per Software untersetzen, also nur bei jedem 10ten PWM-Zyklus einen neuen Stellwert berechnen. Hängt aber von den Zeitkonstanten ab (PWM, Motorträgheit).
Andernfalls kannst du Schwebungen bekommen, zwischen PWM- und Abtastfrequenz, wenn die beiden Frequenzen nahe beieinander liegen.
MfG Peter(TOO)
Lesezeichen