Forum: Mikrocontroller und Digitale Elektronik Fragensammlung BLDC-Controller mit Hall-Sensoren


von Sven G. (captainalbern)


Angehängte Dateien:

Lesenswert?

Guten Tag zusammen,

ich möchte diesen Thread nutzen, um diverse Fragen zu meinem Projekt 
elektrisch unterstützter Fahrradanhänger zu stellen. Ich hoffe das ist 
in Ordnung in der Rubik Projekte. Dann brauche ich nicht unnötig viele 
Threads aufmachen. Ich weiß, dass es schon Threads über BLDC in diesem 
Forum gibt. Dort haben mich aber widersprüchliche Aussagen und 
Streitgespräche immer wieder verwirrt.

Stand der Dinge: Ich habe einen BLDC-Controller gebaut und einen 
Fahrradanhänger mit einem Motor und Zahnriemengetriebe ausgerüstet. Es 
funktioniert prinzipiell und ich mache gerade Messungen für ein Kennfeld 
Strom=f(Geschwindigkeit,PWM).

Dabei ist mir aufgefallen, dass ich das Thema PWM nicht so umgesetzt 
habe, wie es eigentlich üblich ist. Leider gibt es zu unipolarer und 
bipolarer PWM viele unvollständige oder widersprüchliche Darstellungen. 
Deshalb möchte ich hier als erstes kurz zusammenfassen, was ich jetzt 
unter bipolarer PWM für BLDC-Motoren verstehe. Dazu habe ich eine 
Zustandstabelle zusammengetragen (siehe Bild):

Links die 6 Schritte der Kommutierung, rechts alle 12 Kombinationen 
Kommutierungsschritt+PWM-Zustand

    X,Y,Z - Signal der Hallsensoren
    A,B,C - Zustand der Motorphasen
    - PWM -> in der HIGH-Phase der PWM ist der High-Side Transistor 
leitend, in der LOW-Phase ist der Low-Side-Transistor leitend
    - ~PWM -> umgekehrt
    - - -> beide Transistoren sind nicht leitend
    EnaA,B,C - Enable-Signal der Halbbrückentreiber
    DirA,B,C - Direction-Signal der Halbbrückentreiber
    - PWM -> PWM-Signal
    - ~PWM -> invertiertes PWM-Signal
    - - -> egal, weil Ena nicht aktiv (rechts gelb markiert)
    A,B,C-High,-Low - Zustand der 6 Transistoren

Zusammenfassung:

Zu jedem Zeitpunkt ist eine Motorphase offen, eine ist mit Batterie+ 
verbunden und eine mit Batterie-. In der Low-Phase der PWM wird die 
Polarität umgekehrt.
Das heißt, bei 50% PWM ist die über die PWM-Phasen gemittelte Spannung 
an den beiden aktiven Motorphasen gleich 50% Batteriespannung und es 
fließt bei stehendem Motor kein Strom aus der Batterie. Bei 100% PWM 
läuft der Motor mit maximaler Drehzahl (wenn keine mechanische Last 
anliegt) bzw. mit maximaler Leistung (wenn Last anliegt). Jedes 
PWM-Verhältnis zwischen 50% und 100% ist einer Leerlaufdrehzahl 
zugeordnet. Ist die tatsächliche Drehzahl niedriger, wird angetrieben, 
wenn sie höher ist, wird gebremst.

---------------------------------------------------------

So. Jetzt wie ich das bisher umgesetzt habe, weil ich es nicht besser 
wusste:

Ich lege das PWM-Signal auf die Enable-Eingänge der aktiven 
Halbbrücken-Treiber und eine 0 oder 1 auf die Direction-Eingänge (siehe 
Tabelle).
In der aktiven PWM-Phase entspricht das dem oben beschriebenen.
In der inaktiven PWM-Phase wird aber nicht umgepolt, sondern alle 
Transistoren sind offen (nicht leitend).
Das hat zur Folge, dass der Aus-Zustand (kein Strom bei stehendem Motor) 
bei 0% PWM erreicht wird. 100% PWM entsprechen der oben beschriebenen 
Lösung.
Die Abhängigkeit Strom=f(PWM) ist stark nicht-linear (erst flach, dann 
steil) und von der Geschwindigkeit abhängig (niedrige Geschwindigkeit 
verschiebt die Kurve nach links: mehr Strom bei gleichem PWM).

---------------------------------------------------------

Ich möchte nochmal mindestes eine neue Revision meiner Platine 
erstellen. Jetzt frage ich mich, ob ich direkt auf die "richtige" Lösung 
umstelle. Dann muss ich die HW und die SW ändern und die Messungen 
wiederholen. Deshalb sollte das konkrete Vorteile für mich haben. 
Deshalb meine Fragen:

Frage 1: Hat meine aktuelle Lösung außer der geänderten Kennlinie 
prinzipiell Probleme wie z.B. dass irgendwo sinnlos Energie verbraten 
wird, dass manche Bauteile unnötig belastet werden etc. ?

Frage 2: Die oben beschriebene bipolare PWM kann im Gegensatz zu meiner 
Lösung bremsen. Wenn ich damit bremse indem ich das PWM-Verhältnis 
absenke, wird dann automatisch Energie in die Batterie zurückgespeist 
oder muss dazu der Winkel der Kommutierung verändert werden ? In anderen 
Threads gibt es leider widersprüchliche Aussagen dazu.

Frage 3: Welche Wirkung haben PWM-Verhältnisse zwischen 0% und 50% ? 
Dreht der Motor dann rückwärts oder müsste man dazu auch den 
Kommutierungswinkel ändern ?

Frage 4: Verständnisfrage: Die beiden aktiven Motorphasen werden bei der 
bipolaren PWM regelmäßig umgepolt. Dabei wird aber nicht zwischendurch 
gebremst oder Energie unnötig in Wärme umgewandelt, richtig ? Ich stelle 
mir das so vor, dass ein Teil der Energie zwischen der Motorwicklung und 
dem Kondensator hin- und her-pendelt und (Wirkungsgrad <1 mal ignoriert) 
nur der Teil, der in mechanische Energie umgewandelt wird, wird 
kontinuierlich aus der Batterie entnommen. Ist diese Vorstellung richtig 
?

Frage 5: Falls mein bisheriges Verständnis richtig ist, muss man für 
einen Leerlauf wo weder angetrieben noch gebremst werden soll, das 
PWM-Verhältnis auf den korrekten Wert f(Drehzahl) stellen oder regeln, 
sodass der Strom Null wird. Ist es für solche Zwecke üblich, einen 
speziellen Leerlaufmodus (z.B. alle Transistoren offen) zu verwenden ?

: Verschoben durch Moderator
von Michael B. (laberkopp)


Lesenswert?

Sven G. schrieb:
> Bei 100% PWM läuft der Motor mit maximaler Drehzahl (wenn keine
> mechanische Last anliegt) bzw. mit maximaler Leistung (wenn Last
> anliegt). Jedes PWM-Verhältnis zwischen 50% und 100% ist einer
> Leerlaufdrehzahl zugeordnet. Ist die tatsächliche Drehzahl niedriger,
> wird angetrieben, wenn sie höher ist, wird gebremst

Hmm, bevor wir zur PWM kommen:

Drehzahl und ob bremsen oder antreiben hängt beim BLDC nicht von der 
Spannung oder dem Unterschied zwischen Ansteuerdrehzahl und 
Antriebsdrehzahl ab,

sondern deine Hallsensoren geben vor, wie kommutiert werden muss. Und 
willst du vorwärts, muss deine Kommutierung etwas (manche sagen 30 Grad) 
vorher erfolgen, willst du rückwärts (oder bremsen) muss sie etwas 
später erfolgen

Und WIE dieser Phasenversatz erreicht wird, mit dem die Hallsensoren 
deine Kommutierung steuern, ob durch relativ zu den Magnetpolen 
verdrehten Hallsensoren oder zeitliche Interpolation der Steuerung, ist 
(uns) unbekannt.

von Sven G. (captainalbern)


Angehängte Dateien:

Lesenswert?

Wenn man vernünftige Antworten will, dann hilft wohl nur eins: Aufbauen, 
Ausprobieren, Messen.

Für den Fall, das hier künftige Bastler mit ähnlichen Ambitionen vorbei 
kommen, veröffentliche ich meine Ergebnisse. Die konkreten Zahlen sind 
vielleicht nicht sonderlich hilfreich. Aber die Diagramme zeigen 
prinzipielle Zusammenhänge, die man evtl. wissen möchte. Außerdem hilft 
mir die Aufbereitung für die Veröffentlichung selbst, es vernünftig zu 
dokumentieren.

Versuchsaufbau:
- eine BLDC-Controller-Schaltung, die das oben als "bipolare PWM" 
beschriebene Kommutierungsschema realisiert
- brushless sensored motor, wie er für Skateboards etc. angeboten wird:
KV=270 prm/V, 42 Komm.schritte/Umdrehung, 0,064 Ohm, P-Max.1820W
- 4s-LiPo-Akku (16,8V Leerlaufspannung wenn voll)
- Zahnriemengetriebe und 20''-Rad an einem Fahrradanhänger
- Leerlaufmessungen mit Getriebe und Rad ohne Bodenkontakt mit 2 
Ladezuständen der Batterie

Die Geschwindigkeit in km/h mag für einen Elektromotor eine seltsame 
Einheit sein, aber für meine Zwecke passt das so. Steckt halt 
Getriebeübersetzung und Raddurchmesser schon drin.

Bild1: Strom, Spannung, Geschwindigkeit, Leistung über PWM duty cycle 
bei voller Batterie

Bild2: das gleiche bei fast leerer Batterie

Bild3: Wenn der Wirkungsgrad bei voller und leerer Batterie gleich ist, 
sollte die Kurve Leistung über Geschwindigkeit für beide Ladezustände 
ungefähr gleich sein. Passt für mittlere und höhere Geschwindigkeiten 
ganz gut.

Bild4: Für den realen Einsatz am Fahrrad möchte ich als Basis-PWM-Wert 
den Leerlaufwert passend zur aktuellen Geschwindigkeit nehmen und einen 
Offset je nach gewünschter Unterstützung addieren. Der Basiswert ergibt 
sich aus der folgenden Darstellung und ist erfreulich linear von der 
Geschwindigkeit abhängig. Für den Offset will ich im Realbetrieb ein 
Kennfeld I=f(PWM,v) (U erstmal konstant) vermessen. Das wird eine Weile 
dauern. Wenn alles gut geht, melde ich mich mit den Ergebnissen.

Überlegung zur Auslegung:
Die max. Geschwindigkeit mag sehr hoch erscheinen. Man muss allerdings 
berücksichtigen, dass der Motor bei der max. Leerlaufdrehzahl kein 
praktisch nutzbares Drehmoment mehr abgibt. Trotzdem überlege ich, für 
die endgültige Version einen Motor mit kV=170rpm/V statt 270 zu kaufen. 
Eine kürzere Getriebeauslegung mit einer Stufe ist aus Platzgründen 
nicht möglich und eine 2.Stufe möchte ich nicht benutzen. Ist schon so 
alles komplex genug. Aber vor dem Neukauf erstmal weiter Testen....

von Sven G. (captainalbern)


Angehängte Dateien:

Lesenswert?

Wie gesagt, gibt es ja unterschiedliche Darstellungen über die Details 
bei der Kommutierung im Netz. Nenne meinen ersten Ansatz hier "naiv", 
bin mir nicht ganz sicher, ob das einer unipolaren PWM entspricht.

Bei den Messungen mit der bipolaren PWM ist mir aufgefallen, dass der 
Motor deutlich lauter war als mit der "naiven" Kommutierung.

Die bipolare polt ja die Phasen synchron zum PWM um, während die naive 
K. die Transistoren bei PWM=low komplett öffnet. Damit bremst die 
bipolare, wenn die Geschwindigkeit zu hoch ist, während die naive 
einfach laufen lässt. Daher nehme ich an, dass 
Geschwindigkeitsschwingungen von der pipolaren agressiver beantwortet 
werden, während die naive entspannter ist. Daher die das laute Surren.

Ich habe also das Board mit der naiven K. nochmal vermessen (siehe 
Bild). Man sieht, es dreht sich ab ca. 1/3 PWM duty cycle und die 
Geschwindigkeit steigt dann auch wieder gut linear. Der Punkt 100% duty 
cycle muss identisch zur bipolaren PWM sein, da sich da beide gleich 
verhalten und er ist es in den Messungen auch.

Jetzt ein Wirkungsgradvergleich:

Ich kann den Wirkungsgrad nicht direkt messen, aber gleicher 
Wirkungsgrad heißt gleiche Leistung bei gleicher Geschwindigkeit. Es 
zeigt sich, dass bei der bipolaren PWM schon am Stand ein Strom fließt, 
während er bei der naiven vernachlässigbar ist. Bei höchsten Drehzahlen 
überholt die naive.

Das Board mit der naiven Kommutierung hat keine Hardwarefilter für 
Strom- und Spannungsmessung, daher ist die Kurve zappelig. Im oberen 
Bereich gab es Fehler beim Auswerten der Hall-Sensoren, daher die großen 
Zacken oben.

Fazit: Die naive K. ist wirkungsgradtechnisch nicht schlechter als die 
Bipolare. Zudem stellt die bipolare einen Stromregler vor ein Problem: 
Die Abhängigkeit Strom=f(PWM) ist nicht linear, sondern hat ein Miminum, 
wenn das PWM duty cycle zur aktuellen Drehzahl passt, darunter bremst 
der Motor und der Strom steigt wieder. Also möchte ich aktuell Ansatz 1 
weiter verfolgen.

PS: Mir ist gerade aufgefallen, die rechte Achse ist ungünstig skaliert, 
beginnt bei -2.

: Bearbeitet durch User
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.