PID-Regler zur Drehzahlsteuerung eines Motors Im Unterforum Alle anderen elektronischen Probleme - Beschreibung: Was sonst nirgendwo hinpasst
Autor |
PID-Regler zur Drehzahlsteuerung eines Motors |
|
|
|
|
BID = 965610
Lupin III. Schriftsteller
Beiträge: 616 Wohnort: Salzburg
|
|
Ist es sinnvoll zur Drehzahlregelung eines Motors einen PID-Regler zu implementieren? (da ich immer noch mit einem Waschmaschinenmotor herumexperimentiere, gehen wir mal von so einem aus; ein paar hundert Watt, eher schon massiver Anker und in meinem Fall plötzliche Laständerungen)
Ein PID-Regler hat, um gut zu funktionieren, Voraussetzungen wie Liniarität und Symmetrie der Regelgröße. Bei einem Motor ist das nicht gegeben, insbesondere dauert z. B. Auslaufen viel länger als beschleunigen.
Ich bin gerade dabei, die Regelung in einem µC zu implementieren, bekomme aber die Oszillationen nicht wirklich weg, insbesondere wenn ich es bei unterschiedlichen gewünschten Drehzahlen ausprobiere. Deswegen frage ich mich, ob ein PID für einen Motor überhaupt das richtige ist, vor allem wenn es auch plötzliche Laständerungen gibt.
Was wäre das Software-Äquivalent der Konstant-Antriebe, die viele Elektrowerkzeuge haben? Ich habe zum Beispiel eine Fräse und eine Kreissäge die das beide machen und sich bei Belastung innerhalb weniger zehntel Sekunden auf die richtige Drehzal einstellen. |
|
BID = 965611
winnman Schreibmaschine
Beiträge: 1628 Wohnort: Salzburg
|
|
PID sollte schon funktionieren, wenn er "pumpt" dann ist er einfach zu schnell bzw zu agressiv, mach den mal ein bisschen träger und unscharf.
D kleiner, P kleiner, I größer
[ Diese Nachricht wurde geändert von: winnman am 16 Jul 2015 15:38 ] |
|
BID = 965622
Ltof Inventar
Beiträge: 9331 Wohnort: Hommingberg
|
Zitat :
Lupin III. hat am 16 Jul 2015 15:33 geschrieben :
|
... Ein PID-Regler hat, um gut zu funktionieren, Voraussetzungen wie Liniarität und Symmetrie der Regelgröße. Bei einem Motor ist das nicht gegeben, insbesondere dauert z. B. Auslaufen viel länger als beschleunigen. ...
|
Weil die Beschleunigungsleistung eine andere ist, als die Bremsleistung. Vergleichbare Asymmetrien gibt es auch in rein elektronischen Systemen. So kann das Aufladen eines Kondensators eine andere Zeitkonstante haben, als das Entladen.
Wenn Du zum Beispiel ein Netzteil steuerst/regelst hat es vollkommen unterschiedliche Verhalten, abhängig davon, ob es ein Zwei- oder Vierquadranten-Netzteil ist.
Das ist wie Abschleppen mit Stange oder Seil...
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
|
BID = 965629
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
Zitat :
Ltof hat am 16 Jul 2015 19:25 geschrieben :
|
Das ist wie Abschleppen mit Stange oder Seil...
|
Wenn der Hinten bei beiden nicht aufpasst ist das Ergebnis das Selbe ein verbeulter Arsc...
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
|
BID = 965929
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Hallo
Zitat :
|
Ein PID-Regler hat, um gut zu funktionieren, Voraussetzungen wie Liniarität und Symmetrie der Regelgröße. Bei einem Motor ist das nicht gegeben, insbesondere dauert z. B. Auslaufen viel länger als beschleunigen.
|
Nur weil das Auslaufen länger dauert als das Beschleunigen muss deswegen der Motor nicht nichtlinear sein. Viel eher glaube ich, dass die Motoransteuerung dir hier einen Streich spielt. Wie sieht die denn genau aus?
Was dir beim Software-PID-Regler das Genick brechen könnte ist der D-Anteil. Die naheliegendste Lösung wäre die Messgröße einfach zeitdiskret zu differenzieren, also immer einen Messwert minus den vorhergehenden Messwert. Dieses Verfahren funktioniert aber nur solange die Messgröße absolut rauschfrei ist, ansonsten verstärkst du hauptsächlich das Messrauschen und gibst es dann direkt an den Motor weiter. Das kann den Regler ganz schön durcheinander bringen.
Versuch doch einfach mal den D-Anteil weg zu lassen. (Also ein reiner PI-Regler.)
Zum Einstellen: drehe mal auch den I-Anteil auf 0 und stelle den P-Anteil so ein, dass sich bei Belastung nur eine geringe Regelabweichung einstellt, aber noch keine Instabilität auftritt. Drehe den P-Anteil dann etwas zurück und lasse ihn so. Drehe dann den I-Anteil langsam so weit auf, dass eine akzeptable Einschwingzeit nach einem Sprung der Referenzgröße erreicht wird, fertig. Drehe dann nicht weiter auf, das System wird dadurch nicht schneller, nur instabiler.
Natürlich müssen die einzelnen Regelparameter auch das richtige Vorzeichen haben.
mfg Fritz
_________________
|
BID = 965994
Lupin III. Schriftsteller
Beiträge: 616 Wohnort: Salzburg
|
Also, ich war wohl hauptsächlich zu ungeduldig, denn die obigen Schritte habe ich schon angewendet gehabt (kenne ich vom Quadcopter tunen). Aber nach einigem herumprobieren funktioniert es jetzt ganz gut, außer bei recht niedrigen Drehzahlen.
Das schwierigste war fast, zuerst überhaupt die richtigen Größenordnungen der PID-Werte zu finden. Es hat natürlich auch nicht geholfen, dass ich in seltenen Fällen einen Overflow in der Berechnung hatte. Ich wollte möglichst mit Integer- bzw. Fixpunkt-Arithmetik arbeiten, da ich Floating-Point-Zahlen auf einem 8bit-AVR schon fast pervers finde , habe es im Endeffekt aber doch auf Fließkomma umgestellt.
Was anderes als numerische Differentiation ist auf einem AVR glaube ich auch nicht möglich. Die Messgröße sollte aber so gut wie rauschfrei sein, da ich die Zeit zwischen zwei Tachopulsen auf 0,5µs (2MHz-Timer) genau messe (davon ausgehend, dass der Interrupt nicht grade durch einen anderen blockiert ist), und daraus auf UPM umrechne (mit 100Hz außer es ist in den letzten 10ms kein einziger Tachopuls aufgetreten, dann wird gerechnet sobald der nächste Puls kommt). Ganz ohne D habe ich auch probiert, aber da schwingt die Steuerung zu stark über.
Eines, was ich hineinprogrammiert habe und bei der Stabilisierung geholfen hat: der Dutycycle der PWM darf pro Zyklus (also höchstens alle 10ms) nur um 10% steigen (in die Gegenrichtung ist's egal). Der Ruck bei einer Drehzahländerung nach oben war sonst einfach zu groß. Das gute daran ist, dass die Regelung trotzdem recht aggressiv reagieren kann, sofern es sich um kleine Abweichungen handelt, es mir bei größeren Änderungen insb. der Ziel-Drehzahl aber nicht gleich den Motor aus der Verankerung reißt. Zumindest ohne Last stellt sich eine neue Drehzahl (bei Änderung nach oben, z. B. von 2000 auf 3000 UPM) jetzt im sub-Sekundenbereich ein. Jetzt müsste ich nur noch wissen, was eigentlich das Drehzahllimit des Motors ist.
Die elektrische Ansteuerung funktioniert sehr gut. Z. Zt. 2kHz PWM über Optokoppler, Totempole-Treiber und IGBT, gespeist aus 325V DC. Die Gate-Spannung ist ein schönes Rechteck. Einziges und gleichzeitig vollkommen ohne Auswirkungen seiendes Detail: Bei Pulslängen über 5-10µs (entspricht 1-2% Dutycycle bei 2kHz-10bit-PWM) geht der Transistor des Optokopplers in Sättigung und braucht ab da dann ca. 5µs länger um wieder abzuschalten. Das einzige was warm wird, ist der Trafo zur galvanischen Trennung der Logik bzw. auf zweiter Sekundärwicklung zur Versorgung des IGBT-Treibers.
|
BID = 966004
ffeichtinger Schreibmaschine
Beiträge: 1050 Wohnort: Traunkirchen im Salzkammergut
|
Zitat :
|
Die elektrische Ansteuerung funktioniert sehr gut. Z. Zt. 2kHz PWM über Optokoppler, Totempole-Treiber und IGBT, gespeist aus 325V DC.
|
... und hoffentlich ist eine vernünftige Freilaufdiode auch dabei.
Der Motor ist wahrscheinlich eine Reihenschlussmaschine oder? Die bremst natürlich relativ schlecht.
Zitat aus Wikipedia:
Zitat :
|
Um einen Reihenschlussmotor als Generator (z. B. beim elektrischen Bremsen von Straßenbahnen) betreiben zu können, muss seine Erregerwicklung umgepolt werden, ansonsten hebt der generierte, durch die Feldwicklung fließende Strom das Erregerfeld auf.
|
Du könntest auch Feldwicklung und Ankerwicklung auftrennen und dann getrennt mittels PWM ansteuern. Dann hättest du quasi eine frei steuerbare fremderregte Maschine.
Den Erregerstrom kannst du zb. die ganze Zeit auf einem konstanten Wert lassen. (Außer im Standby). Dann kannst du mit der Ankerwicklung auch aktiv bremsen.
Außerdem kannst du zb. durch Feldschwächung eine höhere Drehzahl erreichen.
mfg Fritz
_________________
|
BID = 966020
Lupin III. Schriftsteller
Beiträge: 616 Wohnort: Salzburg
|
Zitat :
ffeichtinger hat am 22 Jul 2015 10:02 geschrieben :
|
... und hoffentlich ist eine vernünftige Freilaufdiode auch dabei.
|
In der Tat. Aus einem Schaltnetzteil habe ich eine U208 (irgendein Chinateil ) rausgenommen. 800V Sperrspannung, 2A (60A peak) und am wichtigsten 75ns reverse recovery time. Als ich mal eine etwas langsamere drin hatte (aber nicht 1N400x langsam, sondern eigentlich schon eine "fast-switching-diode") ist mir sogar ein Glättungskondensator wegen der hohen Pulsströme warm geworden (Diode hat noch geleitet, während der IGBT schon aufgemacht hat).
Zitat :
|
Der Motor ist wahrscheinlich eine Reihenschlussmaschine oder? Die bremst natürlich relativ schlecht.
Du könntest auch Feldwicklung und Ankerwicklung auftrennen und dann getrennt mittels PWM ansteuern. Dann hättest du quasi eine frei steuerbare fremderregte Maschine.
Den Erregerstrom kannst du zb. die ganze Zeit auf einem konstanten Wert lassen. (Außer im Standby). Dann kannst du mit der Ankerwicklung auch aktiv bremsen.
Außerdem kannst du zb. durch Feldschwächung eine höhere Drehzahl erreichen.
|
Ja, ist ein Reihenschlussmotor (aus einer Siemens Waschmaschine; wie hier). Ich habe ein Relais in Serie mit dem ich eine der Wicklungen umpolen kann. Ich habe mich aber noch nicht getraut das umzupolen, während der Motor ausläuft. Ich könnte also auch aktiv bremsen, da ich aber von den Sensoren her die Drehrichtung nicht erkennen kann, weiß ich nicht, wann "fertig" gebremst ist. Und nachdem sich der Motor schon zwei Mal in seinen eigenen Kabeln erhängt hat, bis ich ihn jetzt schließlich auf ein Brett geschraubt habe, das groß genug ist, weiß ich gar nicht ob das so eine gute Idee ist. Nicht, dass sich der Motor selbst zerlegt. Ich habe aber jedenfalls einen Stromsensor im Pfad, sodass ich darüber den Bremsstrom regeln könnte, aber das braucht dann wahrscheinlich gleich nochmal einen eigenen PID .
Eine höhere Drehzahl brauche ich ziemlich sicher nicht. Ich weiß nicht, was die maximal erlaubte Drehzahl des Motors ist, zur Zeit gehe ich von 25000 UPM aus. Ist das ein vernünftiger Wert? Ich habe leider gar nichts darüber gefunden.
[ Diese Nachricht wurde geändert von: Lupin III. am 22 Jul 2015 13:29 ]
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 0 Beiträge verfasst © x sparkkelsputz Besucher : 182393144 Heute : 337 Gestern : 7548 Online : 564 25.11.2024 2:40 2 Besucher in den letzten 60 Sekunden alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0824790000916
|