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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Richard R. (nbger)


Bewertung
0 lesenswert
nicht 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!

: Bearbeitet durch User
von BinDannMalWeg (Gast)


Bewertung
0 lesenswert
nicht 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 R. (nbger)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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 R. (nbger)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.