Regelung von BLDC Motoren und Synchronmaschinen

Aufbau eines BLDC-Motors

bldc_1c

bldc_2c

Raumzeiger

r1

r2

r3

r4

r5

r6

Raumzeiger: Sinus PWM

sinus_pwm

Ansteuerung der 3-Phasen-Brücke

Beispiel eines MOS-FET Treibers

mosfet_driver

Blockschaltbild: BLDC-Motor mit Leistungsstufe

Leistungsstufe

  • Drei Halbbrücken müssen angesteuert werden!
  • Sind hierfür drei Regler notwendig?

Clarke Transformation

clarke

Blockschaltbild: Clarke Transformation ergänzt

clarke_bsb

  • Nur noch zwei Größen müssen geregelt werden!
  • Problem: beide Größen müssen ständig verändert werden!

Park Transformation

Vergleich Gleichstrommotor:

dc_motor

  • Rotation bzw. Drehfeld wird durch Kommutator "erzeugt".
  • Regler muss kein Drehfeld erzeugen!
  • → Einfache Regelung von Gleichstrommotoren!

park

Blockschaltbild: Park Transformation ergänzt

park_bsb

  • 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°)

sin_arr

Blockschaltbild: PI-Regler ergänzt

pi_regler

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

pi_regler2

Blockschaltbild: Strommessung ergänzt

pi_regler3

Blockschaltbild: geschlossener Regelkreis

pi_regler4

Blockschaltbild: Lageerkennung ergänzt

pi_regler5

Prinzipieller Aufbau der Lageerkennung:

lageerkennung

Blockschaltbild: PI-Drehzahlregler ergänzt

pi_regler6

Blockschaltbild: Vollständiger feldorientierter Drehzahlregler

pi_regler7


Eigene Projekte zu diesem Thema:

STM32-basierter Frequenzumrichter zur Ansteuerung einer Lichtmaschine:

logo_1x

logo_1x

Frequenzumrichter

Lichtmaschine

Geberlose Raumzeigermodulation bei einem BLDC-Motor:

logo_1x

space vector modulation

dsPIC33-basierter feldorientierter Regler:

logo_1x

bldc

11 thoughts on “Regelung von BLDC Motoren und Synchronmaschinen

  1. 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

  2. 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

  3. 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

  4. 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. (?)

  5. 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!!

  6. Pingback: clindamicina phosphate topical

Leave a Reply