Forum: Mikrocontroller und Digitale Elektronik How to do: Regelung DC-Motor Richtungswechsel?


von Richard (nbger)


Lesenswert?

Hallo zusammen,

im Rahmen eines Hobby-Arduino-Projektes will ich ein paar 
DC-Getriebe-Motoren per PID-Regler regeln. Als Drehsensoren habe ich 
AS5600; der Motortreiber ist ein Motorshield V2.

Ich hänge gerade an dem Thema Richtungsumkehr 
(clockwise/counterclockwise).

Der Motortreiber erwartet einen PWM-Wert (0..255) und eine 
Richtungsangabe:
run(FORWARD/BACKWARD);
setSpeed(0..255);

Meine App gibt eine Drehzahl vor U/Min -300 ... +300 
(Vorzeichen-->Richtung)

Weiterhin benutze ich die PID-Regler-Lib von Arduino.
Ich kann den Regler so parametrieren, dass ich die Drehzahl direkt 
vorgebe (mit Vorzeichen) und einen Output +/- habe für PMW.
damit kann ich den Motortreiber ansteuern:

run((pid_output<0)?BACKWARD:FORWARD);
setSpeed(abs(pid_output));

Das funktioniert im Prinzip auch; allerdings mit einem Nebeneffekt: Beim 
Regeln wechselt ab und zu das Vorzeichen des pid_output (wird z.B. 
negativ beim Abbremsen; dann bekommt der Motor einen Impuls in die 
Gegenrichtung!

Meine andere Idee wäre, ich lass den Regler nur den absoluten PWM-Wert 
berechnen (0..255) und kümmere mich um den Richtungswechsel ausserhalb 
des Reglers. Dann stellt sich aber auch die Frage, wann schalte ich die 
Richtung um, um nicht das selbe Verhalten zu haben? Soll ich z.B. erst 
auf 0 regeln und dann erst in die Gegenrichtung?

Wie löse ich das schöner bzw. professionell?

Noch ein Hinweis:
Am Ende soll ein Positions/Lageregler rauskommen (Stichwort: 
Kaskadenregler). Da kommt es ja schon öfter zu Richtungswechseln, wenn 
man positionieren möchte.

Vielen Dank schon mal!

: Verschoben durch Admin
von BinDannMalWeg (Gast)


Lesenswert?

Dein Treiber sollte eine H Brücke beherbergen. Bei diesen wird die 
Richtungsumkehr normalerweise durch High/Low an den entsprechenden 
Pins CW und CCW gesetzt.
Ein Blick ins Datenblatt hilft.

von Richard (nbger)


Lesenswert?

BinDannMalWeg schrieb:
> Dein Treiber sollte eine H Brücke beherbergen. Bei diesen wird die
> Richtungsumkehr normalerweise durch High/Low an den entsprechenden
> Pins CW und CCW gesetzt.
> Ein Blick ins Datenblatt hilft.

die Richtungsumkehr an sich funktioniert ja (über die Arduino-Library). 
Es geht mir ja um die Regelung, damit beim Bremsen der Motor nicht hin 
und her zappelt

von MaWin (Gast)


Lesenswert?

Richard R. schrieb:
> Beim Regeln wechselt ab und zu das Vorzeichen des pid_output (wird
> z.B. negativ beim Abbremsen; dann bekommt der Motor einen Impuls in
> die Gegenrichtung!

Das ist völlig richtig und völlig normal. Der Motor wird zum Abbremsen 
wenn es shcnellgehen muss teilweise in Gegenrichtung bestromt.

So lange es 'zappelt' stimmen deine PID-Werte noch nicht mit 
Masseträgheit und Drehmoment des Motors überein.

von Richard (nbger)


Lesenswert?

MaWin schrieb:
> ....
> So lange es 'zappelt' stimmen deine PID-Werte noch nicht mit
> Masseträgheit und Drehmoment des Motors überein.

ja, mit den PID-Werten hast Du recht! Wirklich noch nicht optimal!
Ich bin gerade erst dabei, mir die Grundlagen zu schaffen, den Regler 
beurteilen zu können--> Logging der Daten und Ausgabe in einer 
Chart-View am PC.

bisher sehe/höre ich nur am Motorverhalten, dass es noch nicht passt.

: Bearbeitet durch User
Beitrag #6329600 wurde von einem Moderator gelöscht.
von wer (Gast)


Lesenswert?

NurGeldZähltImLeben schrieb im Beitrag #6329600:
> Die Regelstreckee eines DC-Motors ist ein triviales PT2, damit ist auch
> die Regelung trivial.

Jaja man nehme eine kugelförmige Kuh im Vakuum...

Gerade um Drehzahl = 0 ist ein Bürsten-DC-Motor alles andere als trivial 
zu regeln.

Beitrag #6329717 wurde von einem Moderator gelöscht.
von wer (Gast)


Lesenswert?

NurGeldZähltImLeben schrieb im Beitrag #6329717:
> was willst du da regeln die drehzahl? LOL

Jop. Wenn du das nicht verstehst, Pech gehabt.
Bleib mal schön in deiner linearen, stetig differenzierbaren Theorie, da 
bist du besser aufgehoben.

von NurGeldZähltImLeben (Gast)


Lesenswert?

wer schrieb:
> NurGeldZähltImLeben schrieb:
> was willst du da regeln die drehzahl? LOL
>
> Jop. Wenn du das nicht verstehst, Pech gehabt.
> Bleib mal schön in deiner linearen, stetig differenzierbaren Theorie, da
> bist du besser aufgehoben.

umadbro?

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.