Hallo Forum,
eine theoretische Frage zur Erkennung des Nulldurchgangs bei elektrisch
kommutierten, sensorlosen Brushlessmotoren.
Annahmen:
- Die offene Phase des Motors wird nur während der PWM-Einschaltzeit auf
einen Nulldurchgang überwacht.
- Die PWM-Frequenz ist wesentlich höher als die maximal erforderliche
Kommutierungsfrequenz.
- Sämtliche schaltenden MOSFETs können als ideal angenommen werden.
Wäre es unter diesen Umständen möglich, die offene Phase lediglich gegen
UBAT/2 zu vergleichen? Oder gibt das kein stabiles Drehfeld? Falls die
Idee nicht funktionieren sollte, wo ist mein Denkfehler?
Ich bin gespannt auf eure Meinungen.
Grüße,
Querdenker
Querdenker schrieb:> Annahmen:> - Die offene Phase des Motors wird nur während der PWM-Einschaltzeit auf> einen Nulldurchgang überwacht.
Das ist ungewöhnlich, aber möglich. Normalerweise wird wegen der
Störungen an der offenen Phase nur bei PWM-off gemessen. Beispiel:
http://www.pmsm.download.sh/doc/course/bldc%20sensorless/getPDF7.pdf> - Die PWM-Frequenz ist wesentlich höher als die maximal erforderliche> Kommutierungsfrequenz.
Sollte auf jeden Fall so sein: ca. 8-16kHz PWM.
> - Sämtliche schaltenden MOSFETs können als ideal angenommen werden.>
Naja …
> Wäre es unter diesen Umständen möglich, die offene Phase lediglich gegen> UBAT/2 zu vergleichen? Oder gibt das kein stabiles Drehfeld? Falls die> Idee nicht funktionieren sollte, wo ist mein Denkfehler?
Theoretisch ja (siehe z.B. AN857, Seite 14), wird aber weniger
praktiziert, als die Messung während PWM-off gegen den virtuellen
Nullpunkt:
http://ww1.microchip.com/downloads/en/AppNotes/00857a.pdf
Ein stabiles Drehfeld gibt es, wenn die zero-crossings exakt u.
störungsfrei erfasst werden und dementsprechend (mit timing)
kommutiert wird.
Ralf2008
Hallo Ralf2008,
vielen Dank für deine Antwort.
Ich beschäftige mich schon eine Weile mit dem Thema, aber so ganz habe
ich es noch nicht verstanden.
Zum Verhältnis aus PWM-Frequenz und Kommutierungsfrequenz:
Motordaten: 8 Polpaare, 1.300 RPM/V, Betrieb an 3s
=> 8 Polpaare * 6 Kommutierungen / (Polpaar * U) = 48 Kommutierungen / U
=> 1.300 RPM/V * 12.6 V / 60 = 273 U / s
=> 48 Kommutierungen / U * 273 U / S = 13.104 Kommutierungen / s
D.h. bei Maximaldrehzahl liegen beide Frequenzen in der gleichen
Größenordnung. Daher wollte ich auf ca. 20 kHz PWM gehen. (Die Werte
gelten natürlich für den unbelasteten Motor. Wie das mit Luftschraube
aussieht, weiß ich ehrlich gesagt noch nicht.)
Hintergrund des Vergleichs der offenen Phase mit UBAT / 2 war, dass ich
den Regler gerne ohne Komparatoren nur mit dem internen ADC meines µC
aufbauen möchte. Der schafft max. 200.000 sps, niederohmiger Treiber
vorausgesetzt, ansonsten entsprechend weniger. Daher wollte ich gerne
auf das Multiplexen aller drei Phasen und die Berechnung des Sternpunkts
verzichten. Nur so läßt sich eine Abtastrate erreichen, die wesentlich
über der maximalen Kommutierungsfrequenz liegt.
Oder ist gibt es hier eine bessere Lösung, die mit der skizzierten
Hardware umsetzbar wäre?
Und noch eine Frage:
Ist es sinnvoll, bei hinreichend genauer Erkennung des Nulldurchgangs
den Zeitpunkt der nächsten Kommutierung lediglich auf Basis der halben
Zeit (30°) zwischen den letzten beiden Nulldurchgängen zu berechnen?
Oder sollte man hier über gewisse Zeiträume mitteln, um ein jitterfreies
Drehfeld zu bekommen?
Bitte entschuldige die vielen Fragen, aber im Selbststudium stößt man da
manchmal an seine Grenzen...
Grüße,
Querdenker
Querdenker schrieb:> um Verhältnis aus PWM-Frequenz und Kommutierungsfrequenz:>> Motordaten: 8 Polpaare, 1.300 RPM/V, Betrieb an 3s>> => 8 Polpaare * 6 Kommutierungen / (Polpaar * U) = 48 Kommutierungen / U> => 1.300 RPM/V * 12.6 V / 60 = 273 U / s> => 48 Kommutierungen / U * 273 U / S = 13.104 Kommutierungen / s>
Ja, 8 Polpaare und Betrieb an 3s egeben eine Menge Kommutierungen ...
> D.h. bei Maximaldrehzahl liegen beide Frequenzen in der gleichen> Größenordnung. Daher wollte ich auf ca. 20 kHz PWM gehen. (Die Werte> gelten natürlich für den unbelasteten Motor. Wie das mit Luftschraube> aussieht, weiß ich ehrlich gesagt noch nicht.)>> Hintergrund des Vergleichs der offenen Phase mit UBAT / 2 war, dass ich> den Regler gerne ohne Komparatoren nur mit dem internen ADC meines µC> aufbauen möchte. Der schafft max. 200.000 sps, niederohmiger Treiber> vorausgesetzt, ansonsten entsprechend weniger. Daher wollte ich gerne> auf das Multiplexen aller drei Phasen und die Berechnung des Sternpunkts> verzichten. Nur so läßt sich eine Abtastrate erreichen, die wesentlich> über der maximalen Kommutierungsfrequenz liegt.>
BLDC-Hersteller wie Kontronik verwenden glaube ich extra
schnelle A/D-Wandler-Bausteine bzw. DSPs.
Hier wurde die Thematik (ADC o. Analog-Komparator) auch erörtert:
http://forum.mikrokopter.de/topic-9362.html
Nicht zu vergessen der legendäre rcgroups thread:
http://www.rcgroups.com/forums/showthread.php?t=200567&page=2
Der ADC eines Mikrocontrollers ist eher zu langsam, aber
einen Versuch ist es wert. In einem Thread gab es eine Erwähnung
eines funktionierenden BLDCs mit einem ATmega168, welcher ja
nur bis zu 76.9 kSPS bringt. Dort wurde bis zu einem bestimmten Wert,
also UBAT/2 (zero crossing), gesampelt und evt. noch eine kleiner
Versatz für das Timing addiert, anschließend kommutiert.
Persönlich halte ich das für eine elegante und bauteilsparende Lösung
(der virtuelle Sternpunkt fällt weg), die aber abhängig von der Güte
des A/D-Wandlers ist.
Weit verbreitet sind halt die Schaltungen mit Sternpunkt:
http://home.versanet.de/~b-konze/
Mit 200 kSPS ist es aber einen Versuch wert.
> Oder ist gibt es hier eine bessere Lösung, die mit der skizzierten> Hardware umsetzbar wäre?>>
Meiner Meinung nach alles nur eine Frage der Schnelligkeit des ADCs.
> Und noch eine Frage:> Ist es sinnvoll, bei hinreichend genauer Erkennung des Nulldurchgangs> den Zeitpunkt der nächsten Kommutierung lediglich auf Basis der halben> Zeit (30°) zwischen den letzten beiden Nulldurchgängen zu berechnen?> Oder sollte man hier über gewisse Zeiträume mitteln, um ein jitterfreies> Drehfeld zu bekommen?>>
Man verwendet oft ein sogenanntes Timing (z.B. 7.5° bzw. 22.5° etc),
was man als Abweichung von den 30° bezeichnet. Das ist aber genauso
wie das eingesetzte Startverfahren (starting ramp table) experimenteller
Natur und vom Motor abhängig.
> Bitte entschuldige die vielen Fragen, aber im Selbststudium stößt man da> manchmal an seine Grenzen...
Viel Erfahrung habe ich damit auch nicht. Nur die Datenblätter etc.
gelesen und einige Experimente durchgeführt ...
Ralf2008
Besten Dank für die Links. Wieder was dazugelernt...
Bzgl. der 200ksps hatte ich mir ehrlich gesagt weniger Sorgen gemacht.
Viel kritischer dürfte es sein, in SW nebst ADC noch PWM und
Kommunikation sinnvoll und schnell genug bedienen zu können. Aber das
läßt sich wahrscheinlich nur über einen Versuch klären...
Kannst du näher beschreiben, was du mit Timing meinst?
Denkst du dabei an einen lastabhängigen Phasenversatz??
Gibt es eigentlich prinzipielle Vor- und Nachteile (ausser der
BEMF-Auswertung), ob man nur highside oder low- und highside mit PWM
beaufschlagt?
Außerdem muss ich noch durchrechnen, ob die FETs ohne aktiven Freilauf
klarkommen. Sind zwar "nur" 10A, aber ich möchte so wenig Bauteilen wie
möglich einsetzen.
Grüße,
Querdenker
PS: Das Aufstarten klappt schonmal, wenn auch noch nicht mit der
erwünschten Zuverlässigkeit.