Aufbau eines BLDC-Motors
Raumzeiger
Raumzeiger: Sinus PWM
Ansteuerung der 3-Phasen-Brücke
Beispiel eines MOS-FET Treibers
Blockschaltbild: BLDC-Motor mit Leistungsstufe
- Drei Halbbrücken müssen angesteuert werden!
- Sind hierfür drei Regler notwendig?
Clarke Transformation
Blockschaltbild: Clarke Transformation ergänzt
- Nur noch zwei Größen müssen geregelt werden!
- Problem: beide Größen müssen ständig verändert werden!
Park Transformation
Vergleich Gleichstrommotor:
- Rotation bzw. Drehfeld wird durch Kommutator "erzeugt".
- Regler muss kein Drehfeld erzeugen!
- → Einfache Regelung von Gleichstrommotoren!
Blockschaltbild: Park Transformation ergänzt
- Konstante d/q-Werte führen zu veränderlichen Strangwerten!
Regelung
Für die Regelung wird zunächst eine Sinustabelle benötigt (z.B 50 Werte / 180°)
Blockschaltbild: PI-Regler ergänzt
Prinzipieller Aufbau eines PI-Reglers:
void isr( void ) { static int e_q_int, e_d_int; q_ist = read ( Q_IST ); /* q-Istwert einlesen */ d_ist = read ( D_IST ); /* d-Istwert einlesen */ e_q = q_soll - q_ist; /* q-Fehler berechnen */ e_d = d_soll - d_ist; /* d-Fehler berechnen */ e_q_int = e_q_int + e_q; /* q-Fehler integrieren */ e_d_int = e_d_int + e_d; /* d-Fehler integrieren */ if ( e_q_int > E_Q_INT_MAX ) e_q_int = E_Q_INT_MAX; /* e_q_int begrenzen */ if ( e_q_int < E_Q_INT_MIN ) e_q_int = E_Q_INT_MIN; /* e_q_int begrenzen */ if ( e_d_int > E_D_INT_MAX ) e_d_int = E_D_INT_MAX; /* e_d_int begrenzen */ if ( e_d_int < E_D_INT_MIN ) e_d_int = E_D_INT_MIN; /* e_d_int begrenzen */ y_q = e_q * KP_Q + e_q_int * KI_Q; /* q-Stellgroesse berechnen */ y_d = e_d * KP_D + e_d_int * KI_D; /* d-Stellgroesse berechnen */ dq_to_pwm ( y_d, y_q ); /* PWM aktualisieren */ }
Blockschaltbild: Führungsgrößen ergänzt
Blockschaltbild: Strommessung ergänzt
Blockschaltbild: geschlossener Regelkreis
Blockschaltbild: Lageerkennung ergänzt
Prinzipieller Aufbau der Lageerkennung:
Blockschaltbild: PI-Drehzahlregler ergänzt
Blockschaltbild: Vollständiger feldorientierter Drehzahlregler
Eigene Projekte zu diesem Thema:
STM32-basierter Frequenzumrichter zur Ansteuerung einer Lichtmaschine:
Geberlose Raumzeigermodulation bei einem BLDC-Motor:
dsPIC33-basierter feldorientierter Regler:
Hallo Achim,
vielen Dank für die ausführliche Erklärung.
Darf ich ergänzen, dass es sich bei den gezeigten Transformationen korrekterweise um die inverse Park bzw inverse Clark Transformation handelt.
Bei einer Regelung, üblicherweise feldorientierte Regelung, wird die Clark- bzw Park-Transformation bei der Verarbeitung der Strangströme verwendet, um die Regelgrößen d und q zu erhalten und diese durch zwei "einfache" PI-Regler zu führen.
Viele Grüße
Frank
Hallo Frank, vielen Dank für Dein Feedback! Natürlich, du hast vollkommen Recht, in meinen Blockschaltbildern werden die Transformationen natürlich invers ausgeführt – ich werde das bei Gelegenheit korrigieren! Ich habe noch Unterlagen zur Regelung und werde diese ebenfalls ergänzen. Das Elegante der d/q – Transformationen ist meiner Meinung nach, dass man sich quasi mit dem Regler auf den Rotor “setzt” und dort das Drehmoment und die Erregung bequem regeln kann. Man wandelt ein statorfestes Koordinatensystem in ein rotorfestes. Arbeitest du in dem Bereich oder ist es auch dein Hobby? Gruß Achim
hi 🙂 i like what you do 🙂 and i find it so usefull 🙂 is it possible to impliment this work on STM32F4O7VG ? and if yes can you tell me how and thank you 🙂
Hi Tarek, thanks for your comment! The STM32 has a floating point unit, therefore it is much easier to implement the d/q transform algorithm. I’ll try to post some example projects in a few days. Achim
Hallo Achim,
die Motoren gehören zu meinem Job.
Die OLEDs sind für mein Hobbyprojekt.
Gruß
Frank
Hello,
Can you please share your code for dsPIC33 mcu ? If possible with schematic to drive the motor ?
Thank you in advance,
Emil
Hello,Mr.Achim!
nice project!
I also want to make a controller for my EV,
would u like to share about the schematic and the programmer?
Looking forward your reply~!
Thank you !
Marecal
beim bldc motor wird eine phase mit der betriebsspannung verbunden, eine mit der Masse und andere hängt in der Luft oder? Oben haben alle phasen immer einen definierten Zustand. (?)
Hi Oleg,
nein, nicht ganz. Schau mal hier:
http://embeddedlightning.com/bldc_motor/
Gruß
Achim
Hallo Achim,
In einem deiner Video dreht sich die Lichtmaschine sehr sehr langsam.
ich nehme an, dass der Schätzalgorithmus nicht runter bis 0 Hz funktioniert. Ab welcher Frequenz schaltest du vom “Forced mode/Stromeinprägungs Mode” auf den Regelungsmodus um?
Eine weitere Frage die auf die Änderungsgeschwingigkeit eines anliegendem Drehmoments abzielt: Darf sich das vom Motor abgegebene Drehmoment beliebig schnell ändern, oder benötigt man ab einer Grenze ein zusätzliches Trägheitsmoment zum Dämpfen der Änderung (Winkelbeschleunigung)?
Auf jeden Fall Danke für das publizieren, dieses speziellen Themas!!
Pingback: clindamicina phosphate topical