Regelung DC Motor

Gast #3271247
Lesenswert?

Hallo,

nach dem ich mittlerweile mit meinem Mikrokontroller Atmega44 die 
Drehzahl eines bürstenbehafteten Gleichstrommotors messen kann, habe ich 
mich gleich an eine Drehzahlregelung gemacht was mit einem PI Regler 
auch super geklappt hat.
Jetzt möchte ich etwas anspruchvolleres machen bei dem ich nochmals 
bezüglich der Regelung eure Hilfe erhoffe.

Ich möchte 2 bürstenbehaftete Gleichstrommotoren an einer Welle 
betreiben und bezüglich Moment und Drehzahl regeln. Also das bedeutet 
ich möchte die Welle mit einer Drehzahl n laufen lassen und die 
Momentenverteilung der beiden Motoren auch vorgeben können, also dass 
zuzm Bsp einer 2/3 des Moments an der Welle erzeugt und der andere 1/3. 
Hierbei versteht sich natürlich, dass Drehzahl und Drehmoment geregelt 
werden.

Hardwarmäßiger Aufbau:

Der Mikrocontroller steuert zwei H-Brücken mittels getrennten 
PWM-Signalen an und die Drehzahl der Welle wird mit Inkrementalgeber 
gemessen.

Könntet Ihr mir bei der Reglerauslegung Tipps geben?

Danke vielmals.

Liebe Grüße

Wolfgang
Gast #3271423
Lesenswert?

Danke! Ein Problem mit der Kaskadenreglereinstellung habe ich noch.
Ich hoffe Ihr könnt mir nochmals helfen.
Also ich habe einen Kaskadenregler für Motor 1 programmiert, aber der 
hat bei auftreten eines Lastmoments ein riesen Dauerschwingen.
Ich verwende als Regler für die Kaskade 2 PI Regler.
Wie stelle ich denn am besten ein?
Ich habe bis jetzt immer durch probieren eine gute Regelung bekommen, 
aber das will jetzt leider nicht funktionieren.

Danke!
#3271441
Lesenswert?

@ Wolfgang (Gast)

>hat bei auftreten eines Lastmoments ein riesen Dauerschwingen.

Regler schwingen immer, Oszillatoren nie ;-)

>Ich verwende als Regler für die Kaskade 2 PI Regler.
>Wie stelle ich denn am besten ein?

http://de.wikipedia.org/wiki/Kaskadenregelung

http://de.wikipedia.org/wiki/Faustformelverfahren_%28Automatisierungstechnik%29

>Ich habe bis jetzt immer durch probieren eine gute Regelung bekommen,
>aber das will jetzt leider nicht funktionieren.

Im Prinzip macht man das oft so, man muss zuerst den inneren 
(Strom)regler stabil kriegen, danach den äußeren Drehzahlregler.
Gast #3271474
Lesenswert?

Falk Brunner schrieb:
> Im Prinzip macht man das oft so, man muss zuerst den inneren
> (Strom)regler stabil kriegen, danach den äußeren Drehzahlregler.

außerdem sollte der stromregler (innere) i.d.R. schneller sein als der 
äußere Regler, da dieser ja den Sollwert für den inneren vorgibt. Im 
Idealfall merkt der äußere vom inneren nichts. Ist das nicht der Fall 
fangen die an "gegeneinander" zu arbeiten und das führt zu Schwingungen 
bzw. Instabilität.
Gast #3272535
Lesenswert?

Danke für eure Antworten!

Ich habe jetzt mal klein angefangen und einen Stromregler realsiert. Er 
erreicht beim Anfahren schnell den gewünschten Sollwert und haltet ihn 
auch bei leichten Lastmomenten recht gut. Wird das Lastmoment allerdings 
größer so beginnt er zu schwingen und dann kommt er völlig aus dem 
Gleichgewicht.

Soll ich da noch eine Stellgrößenbegernzung programmieren?

Ich habe auch schon probiert mit dem aktuellen Stromregler eine 
Kaskadenregelung zu machen, aber bei höheren Lastmomenten schwingt er 
sich auch bei Drehzahlsollwertvorgabe komplett auf.

Danke!

MfG
#3272586
Lesenswert?

@Wolfgang (Gast)

>Ich habe jetzt mal klein angefangen und einen Stromregler realsiert. Er
>erreicht beim Anfahren schnell den gewünschten Sollwert und haltet ihn
>auch bei leichten Lastmomenten recht gut.

Wie misst du das? Mit dem Oszi?

> Wird das Lastmoment allerdings
>größer so beginnt er zu schwingen und dann kommt er völlig aus dem
>Gleichgewicht.

Also instabil. Der klassische Ansatz ist, einen Last oder Sollwertsprung 
auf den Regler zu geben und die Reaktion zu messen. AKA Sprungantwort.

Schwingen -> sehr schlecht
gedämpftes Überschwingen -> schlecht
Aperiodisches Einschwingen -> meist optimal.

>Soll ich da noch eine Stellgrößenbegernzung programmieren?

Kann man von hier aus nicht sagen, ohne Messwerte / Sprungantworten.

>Ich habe auch schon probiert mit dem aktuellen Stromregler eine
>Kaskadenregelung zu machen, aber bei höheren Lastmomenten schwingt er
>sich auch bei Drehzahlsollwertvorgabe komplett auf.

Erstmal muss der Stromregler stabil sein, sonst wird das nix. Das kann 
man nur mit einer Mindestlast messen, sonst geht die Drehzahl zu hoch.
Gast #3272765
Lesenswert?

Hallo,

> Wie misst du das? Mit dem Oszi?
Ja ich beobachte das PWM vom Controller an der H-Brücke.


So ich habe ihn jetzt soweit, dass die Stromregelung nicht schlecht 
funktioniert. Bei der Drehzahlregelung bleibt er im Leerlauf sehr gut 
auf der Solldrehzahl stehen, allerdings wenn ein Moment ausgeübt wird 
und sich die Drehzahl verringert so beginnt er noch zu schwingen.

MfG Wolfgang
#3272796
Lesenswert?

@ Wolfgang (Gast)

>> Wie misst du das? Mit dem Oszi?
>Ja ich beobachte das PWM vom Controller an der H-Brücke.

Da sieht man aber nicht sooo viel. Dazu muss man MINDESTENS einen 
passend dimensionierten RC-Filter davorschalten, damit man den 
Mittelwert der PWM sieht und nicht die PWM selber. Gleiches gilt für den 
Motorstrom.

>So ich habe ihn jetzt soweit, dass die Stromregelung nicht schlecht
>funktioniert.

Wie prüfst du das?

> Bei der Drehzahlregelung bleibt er im Leerlauf sehr gut
>auf der Solldrehzahl stehen, allerdings wenn ein Moment ausgeübt wird
>und sich die Drehzahl verringert so beginnt er noch zu schwingen.

Wenn der Stromregler WIRKLICH stabil ist, musst du halt jetzt die 
Parameter des Drehzahlreglers optimieren. Dieser ist meisten um Faktor 
5-10 langsamer als der Stromregler.
Gast #3272844
Lesenswert?

> Da sieht man aber nicht sooo viel. Dazu muss man MINDESTENS einen
> passend dimensionierten RC-Filter davorschalten, damit man den
> Mittelwert der PWM sieht und nicht die PWM selber. Gleiches gilt für den
> Motorstrom.
Ja ich habe kein RC Glied mit hineingeschaltet. nur das PWM selbst.
Ich sehe weiters auf einem LCD den aktuellen Strom und die Drehzahl.
Dann habe ich den Sollstrom zBsp auf 100mA eingestellt und mit 
veränderbarer Last den Strom beobachtet. Er hat in immer schon auf 100mA 
gehalten und das PWM hat nicht geschwungen. Dann habe ich es noch für 
größere Ströme probiert und es hat ebenfalls funktioniert.


> Wenn der Stromregler WIRKLICH stabil ist, musst du halt jetzt die
> Parameter des Drehzahlreglers optimieren. Dieser ist meisten um Faktor
> 5-10 langsamer als der Stromregler.

Alles klar ich probiers! Das bedeutet, dass das KP des Drehzahlreglers 
um das fünffache kleiner sein soll als das kp des Stromreglers oder?
#3272917
Lesenswert?

@ Wolfgang (Gast)

>Ja ich habe kein RC Glied mit hineingeschaltet. nur das PWM selbst.

also siehst du nur wildes Zappeln, wenn die PWM sind beim Sprung ändert.

>Ich sehe weiters auf einem LCD den aktuellen Strom und die Drehzahl.

Und du glaubst alles, was auf irgendwelchen LCDs angezeigt wird? Ich 
nicht.

>Dann habe ich den Sollstrom zBsp auf 100mA eingestellt und mit
>veränderbarer Last den Strom beobachtet. Er hat in immer schon auf 100mA
>gehalten und das PWM hat nicht geschwungen. Dann habe ich es noch für
>größere Ströme probiert und es hat ebenfalls funktioniert.

Warum hast du nicht den Test mit dem Sprung gemacht, wie ich es dir 
empfohlen habe? Nur dann sieht man, wie (in)stabil dein Regler ist.

Erzeuge per Software diesen Sprung mit 1s Pulsbreite, immer wieder. Dann 
stell die Parameter ein und beobachte die Änderung. MIT RC-Filter für 
PWM und Stromsignal!

>> Parameter des Drehzahlreglers optimieren. Dieser ist meisten um Faktor
>> 5-10 langsamer als der Stromregler.

>Alles klar ich probiers! Das bedeutet, dass das KP des Drehzahlreglers
>um das fünffache kleiner sein soll als das kp des Stromreglers oder?

Nein, auch die Integrationszeit des I-Anteils ist größer. Aber der 
Regler allein bestimmt das nicht, da ist auch noch der Drehzahlsensor.
Gast #3272943
Lesenswert?

Wolfgang schrieb:
> Ich sehe weiters auf einem LCD den aktuellen Strom und die Drehzahl.

d.h. du hast ein A/D wandler der Strom und Drehzahl in einen digitalwert 
umwandelt. Kannst du dann nicht einfach dein Oszi an den A/D wandler 
Eingang klemmen und so die von Falk empfholenen Sprungantworten 
aufnehmen. Mit PWM und LCD Beobachtung befindest du dich mehr oder 
weniger im Blindflug. So wird das nichts.
Gast #3276898
Lesenswert?

Danke für eure Antworten!

>>Ja ich habe kein RC Glied mit hineingeschaltet. nur das PWM selbst.
>
> also siehst du nur wildes Zappeln, wenn die PWM sind beim Sprung ändert.

Ja ich sehe einfach ein wildes Zappeln bei den PWM Flanken.

>>Ich sehe weiters auf einem LCD den aktuellen Strom und die Drehzahl.
>
> Und du glaubst alles, was auf irgendwelchen LCDs angezeigt wird? Ich
> nicht.

Nein natürlich nicht! Ich bin einfach noch nicht so fit bezüglich der 
Regelungstechnik.

>
>>Dann habe ich den Sollstrom zBsp auf 100mA eingestellt und mit
>>veränderbarer Last den Strom beobachtet. Er hat in immer schon auf 100mA
>>gehalten und das PWM hat nicht geschwungen. Dann habe ich es noch für
>>größere Ströme probiert und es hat ebenfalls funktioniert.
>
> Warum hast du nicht den Test mit dem Sprung gemacht, wie ich es dir
> empfohlen habe? Nur dann sieht man, wie (in)stabil dein Regler ist.
>
> Erzeuge per Software diesen Sprung mit 1s Pulsbreite, immer wieder. Dann
> stell die Parameter ein und beobachte die Änderung. MIT RC-Filter für
> PWM und Stromsignal!
>

Ich werde als nächstes den Versuch mit der Sprungantwort machen.
Ich werde dazu mit meinem Funktionsgenerator einen Sprung mit einer 
sekunde Pulsbreite erzeugen und das auf die H-Brücke geben.
Gast #3276902
Lesenswert?

Ich habe die erste Sprungantwort aufgenommen.
Dazu habe ich wie besprochen auf einen Motor den Sprung gegeben und den 
anderen Motor habe ich dabei auf die Welle gekoppelt und die 
Motorklemmen offen gelassen.

CH1: PWM
CH2: der Strom

Ich hoffe das hilft schon. Ich werde jetzt noch eine Sprungantwort mit 
der Drehzahl aufnehmen. Mal schauen wie ich das mache. Ich habe sie ja 
nur digital über den Inkrementalgeber
Angehängte Dateien:
Gast #3276914
Lesenswert?

Hm, ja das ist jetzt nur eine auf die Strecke...

Laut dem Ausschnitt soll es sicherlich ein Sprung auf den Regler mit 
Strecke sein:

> Erzeuge per Software diesen Sprung mit 1s Pulsbreite, immer wieder. Dann
> stell die Parameter ein und beobachte die Änderung. MIT RC-Filter für
> PWM und Stromsignal!

Also fang ich mal nochmal an! Entschuldigung für meine Unwissenheit.
#3276918
Lesenswert?

@ Wolfgang (Gast)

>Ich habe die erste Sprungantwort aufgenommen.
>Dazu habe ich wie besprochen auf einen Motor den Sprung gegeben und den
>anderen Motor habe ich dabei auf die Welle gekoppelt und die
>Motorklemmen offen gelassen.

>CH1: PWM
>CH2: der Strom

Mal ein Anfang. Aber die Zeitauflösung ist schlecht gewählt. Man sieht 
den Strom nur sehr schlecht. Ausserdem scheint hier noch was nicht zu 
stimmen. Es gibt KEINE Reaktion beim EINschalten, aber eine beim 
AUSSChalten des Motors? Kann nicht sein.

>Ich hoffe das hilft schon. Ich werde jetzt noch eine Sprungantwort mit
>der Drehzahl aufnehmen.

Langsam. So weit bist du noch nicht. Siehe unten.

@ Leonhard K. (leonhard_k)

>Ich dachte mit Sprunhantwort sei eher die der Regler gemeint?

Ja, am Ende schon. Das muss der OP al nächstes messen. Im Controller ein 
Rechtecksignal für den Eingang des STROMreglers erzeugen und hier ebenso 
wieder den Eingang (Motorspannung) und den Ausgang (Motorstrom) messen. 
Dann sieht man, wie der Regler arbeitet. Da die Motorspannung per PWM 
vorgegeben wird, muss man hier wie bereits gesagt den Tiefpass 
einsetzen. Dabei sollt dessen Bandbreite so groß wie möglich sein, um 
die Dynamik der Regelung möglichst vollständig darzustellen. GGF. muss 
man zwei Tiefpässe in Reihe schalten, das bringt mehr Dämpfung bei 
gleicher Grenzfrequenz.
Gast #3276934
Lesenswert?

Falk Brunner schrieb:
> @ Wolfgang (Gast)
>
>>Ich habe die erste Sprungantwort aufgenommen.
>>Dazu habe ich wie besprochen auf einen Motor den Sprung gegeben und den
>>anderen Motor habe ich dabei auf die Welle gekoppelt und die
>>Motorklemmen offen gelassen.
>
>>CH1: PWM
>>CH2: der Strom
>
> Mal ein Anfang. Aber die Zeitauflösung ist schlecht gewählt. Man sieht
> den Strom nur sehr schlecht. Ausserdem scheint hier noch was nicht zu
> stimmen. Es gibt KEINE Reaktion beim EINschalten, aber eine beim
> AUSSChalten des Motors? Kann nicht sein.

Doch das stimmt schon, denn der H-Brückentreiber schaltet die Mosfets 
erst bei anliegen von GND am PWM eingang durch. Das bedeutet also wenn 
der PWM-Eingang auf LOW ist werden die Mosfets geschalten und der Motor 
bekommt den Einschaltstrom. Also das sollte in Ordnung gehen.


> Ja, am Ende schon. Das muss der OP al nächstes messen. Im Controller ein
> Rechtecksignal für den Eingang des STROMreglers erzeugen und hier ebenso
> wieder den Eingang (Motorspannung) und den Ausgang (Motorstrom) messen.
> Dann sieht man, wie der Regler arbeitet. Da die Motorspannung per PWM
> vorgegeben wird, muss man hier wie bereits gesagt den Tiefpass
> einsetzen. Dabei sollt dessen Bandbreite so groß wie möglich sein, um
> die Dynamik der Regelung möglichst vollständig darzustellen. GGF. muss
> man zwei Tiefpässe in Reihe schalten, das bringt mehr Dämpfung bei
> gleicher Grenzfrequenz.

Alles klar! Mach ich gleich.
Gast #3277147
Lesenswert?

also die invertierte PWM low periode hätte durchaus etwas länger sein 
dürfen.

ansonsten sieht das nach einer Transferfunktion 1ter Ordnung aus 
(PT1-Glied).

du kannst den PI also hiernach einstellen
http://de.wikipedia.org/wiki/Faustformelverfahren_%28Automatisierungstechnik%29

aber du solltest auch bedenken das je nach dem wieviel Strom du hast, 
die Sprungantworten variieren können. Also mal durch den gesamten 
Bereich durchtesten schadet nicht.
#3278331
Lesenswert?

@ Wolfgang (Gast)

>Soll ich jetzt noch den Stromregler weiter optimieren oder kann ich mit
>der Drehzahlregelung vortsetzen?

Weiter optimieren? Du hast ihn noch nicht man solide gemessen!

Nimm einen BRAUCHBAREN Tiefpass, der nicht die Dynamik des Vorgangs 
wegbügelt. Bei 70 kHz Ohm sind 70 kHz Grenzfrequnez eine brauchbare 
Orientierung. Nimm 1k und 2,2nF, ggf. das ganze zweimal hintereinander. 
Pack auch den gleichen Tiefpass hinter deinen Stromshunt, dieses 
HF-Gerausche nervt bei der Messung.
(Firma: matzetronics) #3278344
Lesenswert?

Wolfgang schrieb:
> Soll ich jetzt noch den Stromregler weiter optimieren oder kann ich mit
> der Drehzahlregelung vortsetzen?

Du musst dir auch darüber klar werden, was du eigentlich regeln willst. 
Die Stromaufnahme ist zwar sehr schön, aber vermutlich nicht das Ziel 
des Regelns. Regle also das, was du eigentlich brauchst und nutze die 
Strommessung für z.B. Überstrommessung o.ä.
Grundsätzlich gibt es auch mehrere Ansätze für den Regler. Entweder 
machst du eine Hardware Schleife mit Loop Filter, oder du verlegst das 
Loopfilter in den MC. Für die AVR Familie hat Atmel eine nette 
Applikation Note produziert, die AVR221 mit einem PID Regler.
Wenn du die P,I, und D Parameter per z.B. Terminal von aussen 
einstellbar machst, kommst du relativ schnell zum Ziel (und lernst auch 
grundlegendes über diese Regler).
Gast #3280145
Lesenswert?

Falk Brunner schrieb:
> @ Wolfgang (Gast)
>
>>Soll ich jetzt noch den Stromregler weiter optimieren oder kann ich mit
>>der Drehzahlregelung vortsetzen?
>
> Weiter optimieren? Du hast ihn noch nicht man solide gemessen!
>
> Nimm einen BRAUCHBAREN Tiefpass, der nicht die Dynamik des Vorgangs
> wegbügelt. Bei 70 kHz Ohm sind 70 kHz Grenzfrequnez eine brauchbare
> Orientierung. Nimm 1k und 2,2nF, ggf. das ganze zweimal hintereinander.
> Pack auch den gleichen Tiefpass hinter deinen Stromshunt, dieses
> HF-Gerausche nervt bei der Messung.

Ich habe den RC-Tiefpass genommen. Leider ist das HF-Gerausche immer 
noch da...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren