Forum: Mikrocontroller und Digitale Elektronik Nulldurchgang bei BLDC


von Querdenker (Gast)


Lesenswert?

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

von Ralf2008 (Gast)


Lesenswert?

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

von Querdenker (Gast)


Lesenswert?

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

von Ralf2008 (Gast)


Lesenswert?

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

von Querdenker (Gast)


Lesenswert?

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.

von Querdenker (Gast)


Lesenswert?

Niemand mehr eine Idee, hilfreiche Links, etc...?

Viele Grüße,
Querdenker

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.