PID-Regler zur Drehzahlsteuerung eines Motors

Im Unterforum Alle anderen elektronischen Probleme - Beschreibung: Was sonst nirgendwo hinpasst

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 25 11 2024  02:40:38      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Alle anderen elektronischen Probleme        Alle anderen elektronischen Probleme : 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 ]


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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