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
Drehmoment = Strom, Verhältnis ist vorgegeben, also Strom messen und PWM
so einstellen, daß der eine Motor xx Prozent vom anderen bekommt.
Dann bleibt nur noch die Drehzahlregelung des Ganzen und die kannst du
schon.
Stichwort Kaskadenregler.
Die innere Regelschleife regelt den Strom des Motors, die äussere die
Drehzahl. Der 2. Motor muss nur eine Stromregelung haben, wobei der
Sollwert über den Faktor X vom 1. Motor abgeleitet wird.
Danke für eure schnellen Antworten.
Ich habe mal ein wenig gezeichnet. Im Anhang ist der Signalflussplan.
Könntet ihr mir noch Tipps bezüglich den einzelnen Reglern geben?
Der Drehzahlregler sollte ein PI sein oder?
Die anderen zwei auch?
Danke!
Liebe Grüße
Wolfgang
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!
@ 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/Kaskadenregelunghttp://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.
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.
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
@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.
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
@ 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.
> 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?
Wolfgang schrieb:> 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
@ 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.
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.
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.
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
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.
@ 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.
@ Wolfgang (Gast)
>Also fang ich mal nochmal an! Entschuldigung für meine Unwissenheit.
Spinn nicht rum, wir haben verstanden und du scheibar auch. Also los,
messen.
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.
@ Wolfgang (Gast)
>> 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.
Aha! Also wirkt die PWM INVERTIERT! Das sollte man schon mitteilen.
Ch2: invertiertes PWM
CH1: Strom
leider habe ich keinen guten Tiefpass für den Strom. Ich hoffe man kann
trotzdem das Bild verwenden.
Sollwertsprung ist von 0 auf 100mA
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.
@ Wolfgang (Gast)
>leider habe ich keinen guten Tiefpass für den Strom. Ich hoffe man kann>trotzdem das Bild verwenden.
Naja, besser als nix.
>Sollwertsprung ist von 0 auf 100mA
Dein Puls ist zu kurz. Du musst solange warten, bis sich der Strom
stabil eingeschwungen hat.
@ Wolfgang (Gast)
>Die PWM-Frequenz ist ziemlich hoch... 70kHz
Macht das deine H-Brücke mit?
>C=1µF>R=5k
Macht tau = 5ms bzw. eine Bandbreite von 30 Hz. Merkst du was?
Falk Brunner schrieb:> @ Wolfgang (Gast)>>>Die PWM-Frequenz ist ziemlich hoch... 70kHz>> Macht das deine H-Brücke mit?
Ja von der Brücke her habe ich keine Probleme.
>>C=1µF>>R=5k>> Macht tau = 5ms bzw. eine Bandbreite von 30 Hz. Merkst du was?
Ja ich habe leider keine andere Kapazität hier sonst hätte ich sie schon
ausgetauscht.
@ 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.
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).
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...
@ Wolfgang (Gast)
>Ich habe den RC-Tiefpass genommen. Leider ist das HF-Gerausche immer>noch da...
entweder ist die Grenzfrequenz zu hoch oder du hast ein anderes
Messproblem.
Versuch erstmal 10nF und mehr.