Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage Ansteuerung BLDC


von Claudio Gall (Gast)


Angehängte Dateien:

Lesenswert?

Hallo miteinander

Also ich lese mich seit ein paar Tagen in die Ansteuerung der BLDC 
Motoren ein, da ich selber einen Regler bauen würde. Habe bis jetzt nur 
immer gekaufte verwendet. Für mein aktuelles Projekt, würde ich diese 
gerne selber entwickeln. Das ganze ist ja an und für sich auch nicht ein 
Ding der Unmöglichkeit, doch ich habe nach wie vor einige Fragezeichen.

Als erstes bei der Ansteuerung der 3 Phasen. Mir ist klar, dass ich 
mittels PWM Wert über FET-Treiber und Halbbrücke so die Umdrehungszahl 
steuern kann. Je nach dem wie hoch das Duty Cycle ist, erhöhe ich die 
Drehzahl oder reduziere diese wegen der KV. In welchem Frequenzbereich 
muss dieses PWM sein? Wichtig ist ja einfach, dass die Spule dieses PWM 
"nicht sieht" (hohe Frequenz). Kann ich denn zum erhöhen der Drehzahl 
nicht auch die Zeit der 6 Zyklen wie auf dem Bild angezeigt verkleinern? 
Ich nehme an, dass dies das  Drehmoment schwächt, würde jedoch auch 
gehen oder? Wie sieht denn der Frequenzbereich hier aus, also bis sich 
die 6 Zyklen wiederholen?

Ich frage mich eben, wie ich denn den BLDC hochfahren kann. Ich muss ja 
dort einerseits eine Frequenz für die 6 Zyklen festlegen und 
hochfahren?! und andererseits das PWM mit der Duty-Cycle erhöhen oder? 
Geschieht das den gleichzeitig oder was verstehe ich hierbei nicht ganz?

Bin euch dankbar wenn ihr mir weiterhelfen könnt :)

Liebe Grüsse

Claudio

von Achim (Gast)


Lesenswert?

Du hast da was verwechselt.

Die Duty Cycle haben mit der Drehzahl nicht direkt etwas zu tun, die 
bestimmen in erster Linie das Drehmoment des Motors (mehr Strom -> mehr 
Kraft). Indirekt braucht es natürlich eine gewisse Kraft um höhere 
Drehzahlen fahren zu können, die Drehzahl bestimmen aber nicht das 
Tastverhältnis deiner PWMs.

Die Drehzahl wird durch die Frequenz deines Drehfeldes (die Wiederholung 
der 6 Zyklen) bestimmt, da es sich bei einem BLDC um einen 
Synchron-Motor handelt, dass heißt er dreht sich gleichschnell wie das 
eMagnetfeld (außer die Kraft reicht nicht, dann dreht er gar nicht)

von M. Н. (Gast)


Lesenswert?

Claudio Gall schrieb:
> In welchem Frequenzbereich
> muss dieses PWM sein?

Die Frequenz sollte schon mehrere kHz haben. Wegen dem Geräusch würde 
ich empfehlen auf 20kHz zu gehen, da das in der Regel nicht mehr hörbar 
ist.

Claudio Gall schrieb:
> Kann ich denn zum erhöhen der Drehzahl
> nicht auch die Zeit der 6 Zyklen wie auf dem Bild angezeigt verkleinern?
> Ich nehme an, dass dies das  Drehmoment schwächt, würde jedoch auch
> gehen oder?

Nach dem Bild in deinem Anhang nehme ich an, dass du den Artikel zu BLDC 
hier auf der Seite gelesen hast.

diese Ansteuerung verändert lediglich den Duty Cycle der PWM. Dadurch 
dreht sich der Motor langsamer. Eine Verkürzung bzw Verlängerung der 
Periode (der 6 Zyklen) tritt automatisch durch die erkennung mittels 
BEMF (heißt das so?!?) ein. Das hat den vorteil, dass du nur über den 
duy Cycle die Geschwindigkeit vorgibst, und die ansteuerung der Spulen 
immer zur LAge des Motors passt. Eine aufgezwungene Frequenz kann zu 
erheblichem Drehmomentsverlust und zu unrundem Lauf führen.

von M. Н. (Gast)


Lesenswert?

Claudio Gall schrieb:
> Ich frage mich eben, wie ich denn den BLDC hochfahren kann. Ich muss ja
> dort einerseits eine Frequenz für die 6 Zyklen festlegen und
> hochfahren?! und andererseits das PWM mit der Duty-Cycle erhöhen oder?
> Geschieht das den gleichzeitig oder was verstehe ich hierbei nicht ganz?

Schau dir das mal an(falls noch nicht geschehen)

http://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren

Hier wird erklärt, wie die Ansteuerung funktioniert.
Zum Anlaufen des Motors kann man ihm eine feste Drehfrequenz aufzwingen, 
bis er sich dreht. Nicht die optimale, aber eine einfache Lösung. Sobald 
sich der Motor dreht, wird die weiterschaltung der Zyklen durch die 
Rückkopplung mittels Analogkomparator gemacht.

von Claudio Gall (Gast)


Lesenswert?

M. H. schrieb:
> Nach dem Bild in deinem Anhang nehme ich an, dass du den Artikel zu BLDC
> hier auf der Seite gelesen hast.
>
> diese Ansteuerung verändert lediglich den Duty Cycle der PWM. Dadurch
> dreht sich der Motor langsamer. Eine Verkürzung bzw Verlängerung der
> Periode (der 6 Zyklen) tritt automatisch durch die erkennung mittels
> BEMF (heißt das so?!?) ein. Das hat den vorteil, dass du nur über den
> duy Cycle die Geschwindigkeit vorgibst, und die ansteuerung der Spulen
> immer zur LAge des Motors passt. Eine aufgezwungene Frequenz kann zu
> erheblichem Drehmomentsverlust und zu unrundem Lauf führen.

ja genau das bild ist von dieser Seite

Okey ich verstehe. Ich habe auch gelesen dass das Anfahren mit einer 
aufgezwungener Frequenz gemacht werden kann, was nicht wirklich schön 
ist aber funktioniert. Am Anfang ist das anfahren sowieso noch egal, da 
kann ich mit einer kleine Drehbewegung meinerseits das Ding starten.

Aber wenn ich jetzt die Drehzahl runterfahren möchte, muss ich jetzt 
einfach an dem duty cycle der 20khz schrauben. Jetzt ich würde gerne das 
ganze mit einem IR2104 oder ähnlichem lösen. Im Text habe ich nicht ganz 
verstanden was er meint mit Eingängen zusammenhängen, er schreibt:

Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal 
liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang 
definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller 
benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst 
irgend ein Murks. Diese Schaltung habe ich übrigens beim 
Mikrokopter-Projekt abgeschaut.

Ich habe schon das Datenblatt angeschaut, aber wie steuere ich denn das 
ganze jetzt mit diesem IR2104.  Wie verändert sich denn der Ausgang des 
IR2104 wenn ich das PWM ändere? Denn laut Datenblatt bleibt das 50/50 ?!

von Peter II (Gast)


Lesenswert?

Claudio Gall schrieb:
> Aber wenn ich jetzt die Drehzahl runterfahren möchte, muss ich jetzt
> einfach an dem duty cycle der 20khz schrauben.

nein, diese kann fest bleiben. Wenn du eine kleiner Drehzahl brauchst 
dann musst du die erzeugte Frequenz senken aber nicht die PWM für die 
Spulen.

von M. Н. (Gast)


Lesenswert?

Peter II schrieb:
>> Aber wenn ich jetzt die Drehzahl runterfahren möchte, muss ich jetzt
>> einfach an dem duty cycle der 20khz schrauben.
>
> nein, diese kann fest bleiben. Wenn du eine kleiner Drehzahl brauchst
> dann musst du die erzeugte Frequenz senken aber nicht die PWM für die
> Spulen.

Doch! Man senkt den Duty Cycle! Dadurch wird der Motor langsamer. Die 
Drehfrequenz der Spulen passt sich der Drehung dank Rückkopplung an. Und 
die 20kHz bleiben 20kHz...

Claudio Gall schrieb:
> Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal
> liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang
> definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller
> benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst
> irgend ein Murks. Diese Schaltung habe ich übrigens beim
> Mikrokopter-Projekt abgeschaut.

Ach das :)
Das funktioniert so:
Es wird nur eine PWM benötigt, die auch immer nur an einer Spule hängt. 
Dazu wird sie über Widerstände an die treiber angeschlossen. Bei dem 
treiber, bei dem die PWM ankommen soll, schaltet man den 
Mikrocontroller-Pin auf Eingang => hochohmig => PWM liegt an Treiber

Bei den treibern, die keine PWM bekommen sollen, schaltet man den 
Mikrocontroller-Pin auf 0. somit liegt am Treiber keine PWM an.

Hoffe so ist es klar

von Claudio Gall (Gast)


Lesenswert?

M. H. schrieb:
> Doch! Man senkt den Duty Cycle! Dadurch wird der Motor langsamer. Die
> Drehfrequenz der Spulen passt sich der Drehung dank Rückkopplung an. Und
> die 20kHz bleiben 20kHz...


Ah okey alles klar. Da sich die Geschwindigkeit durch das herabsetzten 
des Duty Cycle verringt, verringert sich auch die Frequenz des 
Drehfeldes. Sehr gut.


M. H. schrieb:
> Ach das :)
> Das funktioniert so:
> Es wird nur eine PWM benötigt, die auch immer nur an einer Spule hängt.
> Dazu wird sie über Widerstände an die treiber angeschlossen. Bei dem
> treiber, bei dem die PWM ankommen soll, schaltet man den
> Mikrocontroller-Pin auf Eingang => hochohmig => PWM liegt an Treiber
>
> Bei den treibern, die keine PWM bekommen sollen, schaltet man den
> Mikrocontroller-Pin auf 0. somit liegt am Treiber keine PWM an.

Okey wenn ich das richtig verstehe, ist das einzige was ich mache nur 
die Pins die ganze Zeit umkonfigurieren soweit so gut oder?

Also der Pin der umkonfiguriert wird ist der IN_A laut dem Bild des 
Artikels oder? Das heisst über den 1k fliesst dann so um die 5V im 20khz 
takt über den uc nach gnd ab. Ich glaub jetzt hab ichs langsam.

Das einzige was nicht aufgeht. Wenn ein PWM für alle halbbrücken 
aussreicht und ich einfach den Pin umkonfiguriere, habe ich doch nie 
eine 120° Verschiebung? den intern taktet der doch einfach weiter und 
wenn es nach kommutierung stimmt schalte ich den pin aber dann ist ja 
das pwm signal "parallel" weitergeführt oder was sehe ich da falsch?

Vielen Dank für eure tollen Antworten :)

von M. Н. (Gast)


Lesenswert?

Claudio Gall schrieb:
> Das einzige was nicht aufgeht. Wenn ein PWM für alle halbbrücken
> aussreicht und ich einfach den Pin umkonfiguriere, habe ich doch nie
> eine 120° Verschiebung? den intern taktet der doch einfach weiter und
> wenn es nach kommutierung stimmt schalte ich den pin aber dann ist ja
> das pwm signal "parallel" weitergeführt oder was sehe ich da falsch?

Hier möchte ich dich auf dein gepostetes Bild verweisen. Die PWM ist 
das, was da in den An-Phasen immer hoch und runter geht. Die Phase des 
PWM Signals ist egal. Die PWM muss nur immer im Kreis an die Spulen 
angelegt werden.

von Franz F. (franzman)


Lesenswert?

M. H. schrieb:
> Hier möchte ich dich auf dein gepostetes Bild verweisen. Die PWM ist
> das, was da in den An-Phasen immer hoch und runter geht. Die Phase des
> PWM Signals ist egal. Die PWM muss nur immer im Kreis an die Spulen
> angelegt werden.

Die Phase des PWM Signals ist aber nur deswegen egal, da die PWM 
Frequenz viel größer als die Kreisfrequenz ist.
Wenn dein Motor ungefähr 1000kV hat, hast du bei 12V 12000U/min, was 
200U/min entspricht. Das entspricht einer Periode von 5ms. Bei der 
Einschaltdauer von 1/3 (120°/360°) hast du noch 1,66ms pro Phase.
Wenn du jetzt eine PWM Frequenz in der Nähe von den 1/1,66ms=600Hz sagen 
wir Testweise 1kHz (50%DC) nimmst, bekommt eine Phase nur ca. 1/3 
Einschaltdauer,  nie nächste Phase bekommt 2/3. Somit würde dein Motor 
unrund laufen.
Wenn du die PWM Frequenz allerdings >> der "Motorfrequenz" nimmst hast 
du keine Probleme da der Fehler, die Differenz der Einschaltdauer, gegen 
0 geht.

1   2  3  1  2    Zeitbereich
/-\______/-\___   Ph1
___/-\______/-\   Ph2
______/-\______   Ph3

_-_-_-_-_-_-_-_-  PWM

Voller Umlauf: 9 Ascii Div :)
Einschaltdauer pro Phase 3 Div,
PWM Periodendauer 2 Div, müsste den Beispiel im Text entsprechen, 
Fpwm=1,33*Fmot

Reale Einschaltdauer Zeitbereich 1: 1/3
Reale Einschaltdauer Zeitbereich 2: 2/3
Reale Einschaltdauer Zeitbereich 3: 1/3

Das Bild ist kein Kunstwerk, aber doch ganz aussagekräftig :)

von Claudio Gall (Gast)


Lesenswert?

Ah okey alles klar, das heisst meine Überlegung war eigentlich richtig, 
aufgrund des Aufwandes und des Fehlers der nahezu gegen 0 geht, schaut 
man einfach weg, da das Verhältnis von Aufwand und Nutzen in keiner 
Relation stehen.

Vielen Dank an alle, jetzt habe ich es Verstanden. :)

von MaWin (Gast)


Lesenswert?

Peter II schrieb:
> Claudio Gall schrieb:
> Aber wenn ich jetzt die Drehzahl runterfahren möchte, muss ich jetzt
> einfach an dem duty cycle der 20khz schrauben.
>
> nein, diese kann fest bleiben. Wenn du eine kleiner Drehzahl brauchst
> dann musst du die erzeugte Frequenz senken aber nicht die PWM für die
> Spulen.

Das ist Unsinn.

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.10.1

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.