Forum: Mikrocontroller und Digitale Elektronik BEMF nicht symmetrisch, BLDC


von BLDC Tester (Gast)



Lesenswert?

Hallo,
ich versuche mich gerade an einer BLDC Steuerung, dabei habe ich leider 
ein paar Schwierigkeiten. Das Hauptproblem ist das ich die BEMF nicht 
richtig messen kann.
Zur Schaltung siehe Abb. 4 besteht aus drei Halbbrücken pro Spule ein 
High- und Low Side Fet. Der High Side wird per PWM angesteuert und der 
Low Side wird nur ein und ausgeschaltet, es gibt noch einen aktiven 
Freilauf.
Ich bekomme ein beschleunigen auf eine Mindestdrehzahl hin ohne BEMF 
Auswertung.
Dann erfolgt die Auswertung der BEMF während der Off Phase von der PWM. 
Die BEMF wird per ADC gemessen und mit einem Grenzwert verglichen, wird 
dieser über bzw. unterschritten abhängig vom State wurde ein 
Nulldurchgang erkannt. Abb. 1 (Gelb) zeigt die Spannung an der Spule A 
und (Türkis) zeigt bei einer steigenden flanke Nulldurchgang erkannt, 
fallende flanke Kommutierung.
Abb. 2 zeigt die Spannung an der Spule A nach einem Filter, dabei ist 
die BEMF1 gut zu erkennen das Problem ist die BEMF 2, es ist Erkennbar 
das dass Signal nicht symmetrisch ist. Wenn ich den Motor bremse sehe 
ich, wie sich BEMF1 dehnt und flacher wird das Merkwürdige ist das sich 
BEMF2 überhaupt nicht ändert. Ich messe also die fallende BEMF aus 
irgendeinem Grund falsch. Abb. 3 zeigt die BEMF wenn der Motor 
angetrieben wird.
Hat jemand eine Idee wo mein Fehler liegt bzw. was ich falsch mache.
Vielen Dank im Voraus.

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Auch wenn ich es nicht 100%ig verstehe, wie du den Nulldurchgang 
erkennst. Für mich sieht es nach einem schlechten Layout aus. Du 
bekommst irgend welche Störungen in deine Messleitungen.


Dennis

von BLDC Tester (Gast)


Angehängte Dateien:

Lesenswert?

Danke für deine Antwort, Dennis.
Wie ich den Nulldurchgang erkenne ist unter folgendem Link: 
http://scholar.lib.vt.edu/theses/available/etd-09152003-171904/unrestricted/T.pdf
ab S.25 nachzulesen. Die Vorgehensweise ist, in der PWM Off Phase also 
wenn der High Side Fet ausgeschaltet ist und der Low Side Fet 
eingeschaltet ist an der Floatenden Phase die BEMF zu messen per ADC. 
Falls die BEMF zu dem Zeitpunkt ungefähr 0V ist, wegen dem aktiven 
Freilauf. Wird ein Nulldurchgang erkannt dann nach ca. 25° danach 
kommutiert.
Ich vermute nicht dass es das Layout ist weil ich das Ganze noch auf 
einem Steckbrett aufgebaut habe. Die Spannungen und Ströme sind momentan 
alle recht klein.
Ich vermute das es eher an dem Motor liegt leider habe ich kein 
Datenblatt von diesem.
Abb.1 zeigt die BEMF wenn der Motor angetrieben wird von zwei Phasen, 
dabei Stört mich die Überschneidung. Ich habe dann versucht die 25° auf 
nur 5° zu reduzieren und siehe da es funktioniert besser bzw. die BEMF 
ist besser sichtbar aber noch nicht zufriedenstellend. Habe den Motor 
durchgemessen und er war in Dreieck verschaltet, daraufhin habe ich den 
Motor auseinandergenommen und in Sternverschaltet und dann ebenfalls die 
BEMF gemessen wenn der Motor angetrieben wird siehe Abb.2. Dabei stört 
ebenfalls die Überschneidung während der On Phase.
Habe den Motor dann mit der Steuerung angetrieben aber die BEMF sieht 
noch immer nicht symmetrisch aus. Hat jemand einen Rat?

von Martin S. (led_martin)


Lesenswert?

Hallo,

ich habe längere Zeit beruflich mit der Ansteuerung von BLDC-Motoren zu 
tun gehabt. Für mich sehen die Bilder relativ normal aus. Du hast einen 
Motor mit (annähernd)trapezförmigen BEMF, das sieht anders aus als bei 
sinusförmiger BEMF, wie es aber in vielen Beiträgen im Netz gezeigt 
wird. Dein Motor ist, für diese Art der Ansteuerung, sogar sehr gut 
geeignet. Die 'Überschneidungen' sind normal. Wichtig ist, das die 
Phasendrehung zwischen aufeinanderfolgenden Phasen 120 Grad beträgt, und 
daß die BEMF aller Phasen ungefähr gleich groß ist. Die starken 
Ausreisser, am Anfang der BEMF-Messzeit, nach dem Freischalten der 
Phase, entstehen durch die, in der Induktivität der Wicklung, 
gespeicherte Energie. Vor dem Freischalten fliesst ja Strom durch die 
Wicklung. Du hast wohl einen Motor mit recht hoher Induktivität, 
Festplattenmotor? Das bekommt man auch nicht weg, da hilft es, mit der 
Suche nach dem Nulldurchgang etwas verzögert zu beginnen, Z.B. das erste 
Viertel der geschätzten Zeit zu ignorieren. Bei der Ansteuerung mit PWM 
ist es auch schwierig die richtige Schwelle festzulegen. Einfacher ist 
es, gegen einen virtuellen Sternpunkt zu messen, den man mit drei 
gleichen Widerständen an den Phasen, deren andere Seite zusammengeführt 
ist, bilden kann. Dieser Sternpunkt ist der Vergleichswert, gegen den 
man den Nulldurchgang finden muss, dort liegt aber keine reine 
Gleichspannung an, der Vergleichswert ist also keine Konstante. Ideal 
wäre ein ADC mit differenziellem Eingang. Oft wird aber auch gar keine 
A/D-Wandlung gemacht, sondern ein Komperator verwendet, kann auch der 
Interne des Mikrokontrollers sein. Für erste Versuche kannst Du es mal 
mit 100% PWM versuchen, dann liegt der Schaltpunkt nahe VCC/2.

Mit freundlichem Gruß - Martin

von Norbert S. (norberts)


Lesenswert?

Martin Schlüter schrieb:
> Hallo,
>
> ich habe längere Zeit beruflich mit der Ansteuerung von BLDC-Motoren zu
> tun gehabt.

Hi,

bei mir dito und ich kann das Geschriebene nur bestätigen.

Wenn das ein AVR ist: Der ADC ist dafür viel zu langsam. Ein externer 
Komparator ist das Mittel der Wahl oder eben intern. Aber nicht messen 
und vergleichen.

Gruß,
Norbert

von Martin S. (led_martin)


Lesenswert?

@Norbert S. (norberts):

Was Du zu der Langsamkeit des ATmega-ADC sagst ist prinzipiell richtig, 
die Komparator-Methode ist ja auch der übliche Weg, den fast alle, auf 
ATmega basierenden, Produkte beschreiten. Allerdings habe ich auch schon 
recht vielversprechende Versuche mit dem ADC eines ATmega unternommen, 
Ansatz ist, 2-3 Messungen zu wohldefinierten Zeiten zu starten, und per 
Interpolation die Zeit des Nulldurchgangs zu bestimmen. Leider wurde die 
Firma, nach Übernahme, aufgelöst, was auch diese Experimente beendete, 
und mich arbeitslos machte. Wenn ich mal ein paar der, viel zu vielen, 
Hobbyprojekte fertiggestellt habe, mache ich mich da vielleicht mal 
wieder ran.

Mit freundlichem Gruß - Martin

von BLDC Tester (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
als erstes Mal vielen Dank an Martin und Nobert.


Martin Schlüter schrieb:
> Für mich sehen die Bilder relativ normal aus.
Mir gefällt an der BEMF die Überschneidung nicht siehe Abb. 1. Ich 
erkläre mir die schlechte abfallende BEMF mittlerweile so: BEMF steigt 
an Nulldurchgang wird erkannt, 25° später wird kommutiert, zum 
kommutierungszeitpunkt fällt die BEMF schon ab. Dann erfolgt eine kurze 
Wartezeit wegen dem Freischalten und wenn diese Überschritten ist, wurde 
der Nulldurchgang schon längst verpasst. In der Sternschaltung bin ich 
mit der BEMF schon zufriedener, aber es gibt auch noch eine kleine 
Überschneidung.
> Du hast wohl einen Motor mit recht hoher Induktivität, Festplattenmotor?
Nein, es ist kein Festplattenmotor, der Motor ist aus einem Gebläse 
ausgebaut.
>Einfacher ist es gegen einen virtuellen Sternpunkt zu messen.
Ich kenne diese Vorgehensweise, ich wollte bewusst während der PWM Off 
Phase messen, da diese Methode sehr gut sein soll für niedrige 
Drehzahlen. Wenn ich nicht mehr weiterkomme werde ich das Versuchen.
>Für erste Versuche kannst Du es mal mit 100% PWM versuchen.
 Das werde ich demnächst Versuchen wenn ich nicht mehr weiterkomme.


Nobert S. schrieb:
>Wenn das ein AVR ist:
Es ist ein STM32F103 Systemtakt 72MHz eine ADC Wandlung dauert ca. 2us 
und die BEMF wird mit 20 KHz abgetastet, ich glaube hier durfte das 
Problem nicht liegen. Falls hier doch ein Problem sein sollte, 
korrigiert mich bitte.


Ich habe jetzt neue Versuche gemacht in der Sternbeschaltung siehe Abb.2 
ist der Motor im Leerlauf zu sehen mit dem Ergebnis bin ich fast 
zufrieden. Das Problem ist wenn ich den Motor mit meiner Hand abbremse 
kommt das Ergebnis raus siehe Abb.3 und das gefällt mir überhaupt nicht 
mehr. Ich habe die Zeit für die Ansteigende BEMF und für die Abfallende 
BEMF eingezeichnet und diese müsste doch identisch sein oder fast 
zumindest. Wo könnte hier der Fehler liegen?

von Martin S. (led_martin)


Lesenswert?

Hallo,

auch wenn ich mich wiederhole, die 'Überschneidungen' sind korrekt, 
Deine grün eingezeichnete Kurve liegt nicht richtig, von der Phasenlage 
her, die liegt eigentlich genau mittig zwischen den beiden anderen, und 
dann sieht es da gleich aus, wie bei der gelben und der blauen Kurve. 
Diese Überschneidungen, die Dir seltsam vorkommen, müssen so sein. 
Überlege Dir das mal: Die Spannung, an einer Wicklung braucht für eine 
Halbwelle 180 Grad, de folgende Phase hat einen Versatz von 120 Grad, 
also gibt es 60 Grad Überschneidung.

Das mit dem virtuellen Sternpunkt hast Du wohl nicht ganz verstanden, da 
ging es nicht um den Zeitpunkt der Messung, die muss natürlich gemacht 
werden, wärend die Phase freigeschaltet ist, sondern es geht um das 
Bezugspotential.

Die Unsymmetrie von steigender und fallender BEMF ergibt sich vorallem 
aus den Spannungsverhältnissen. Wenn Du mit kleiner PWM arbeitest liegen 
die (gemittelten) Spannungen näher an GND als an VCC, so kann die 
Induktionsspannung, beim freischalten der Phase, nach oben deutlich 
stärker 'ausschlagen' als nach unten (inb Abb 3 recht deutlich zu 
sehen). Daher auch mein Rat, das Ganze mal ohne PWM (Natürlich bei 
verringerter Motor-Versorgungsspannung) zu probieren, dann sollte das 
eigentlich symmetrischer werden.

Das das unter Last schlimmer wird, liegt am höheren Strom in den 
Motorwicklungen, da ist dann mehr Energie in der Induktivität 
gespeichert, die beim freischalten der Wicklung erst abgebaut werden 
muß. Erst wenn der Strom in der freigeschalteten Wicklung zu Null 
geworden ist, liefert die Spannungsmessung die korrekte BEMF.

Auf den Festplattenmotor bin ich gekommen, weil der Motor offenbar eine 
recht hohe Induktivität hat, was aber bei Lüftermotoren auch oft so ist.

Falls möglich, besorg Dir einen Modellbau-BLDC-Motor, die haben niedrige 
Induktivitäten, und sehr niedrige (ohmsche) Wicklungswiderstände, 
allerdings oft recht hohe Drehzahlen. Da sehen dann die Oszi-Bilder 
vielleicht klarer aus, da nicht so viel Energie in den Wicklungen 
gespeichert ist. Aber aufpassen, im Stillstand ist so ein Motor fast ein 
Kurzschluss, da geben die FETs recht schnell Rauchzeichen von sich, wenn 
man nicht aufpasst, und den Strom nicht vernünftig begrenzt, z.B. am 
Labornetzteil.

Dein ADC sollte tatsächlich schnell genug sein (So ist es halt, wenn man 
immer den AVR im Hinterkopf hat). Das mit dem schnell genug ist relativ, 
das hängt von der Drehzahl / Kommutierungsfrequenz ab, für einen niedrig 
drehenden Motor ist auch der AVR schnell genug.

Mit freundlichem Gruß - Martin

von BLDC Tester (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Martin Schlüter schrieb:
>Überleg Dir das mal: Die Spannung, an einer Wicklung braucht für eine
>Halbwelle 180 Grad, de folgende Phase hat einen Versatz von 120 Grad,
>also gibt es 60 Grad Überschneidung.

Mit den Überschneidungen meine ich die BEMF ansteigend und absteigend 
dürfen sich nicht schneiden nur im Maximum (VCC) und Minimum (GND), 
siehe Abb. 1 hoffentlich ist das verständlich was ich damit meine.

>Das mit dem virtuellen Sternpunkt hast Du wohl nicht ganz verstanden.

Ich glaube schon das ich das verstanden habe, ich habe mich lediglich 
auf den Link von  der Master Thesis bezogen. Da werden zwei Techniken 
beschrieben um den Nulldurchgang ohne den virtuellen Sternpunkt zu 
verwenden. Dies ist einmal während der PWM ON Phase da wird mit VCC/2 
verglichen bzw. während der PWM Off Phase da wird mit fast GND 
verglichen wenn es ein aktiver Freilauf vorhanden ist oder mit der 
Spannung die an der Diode vom FET abfällt falls ein aktiver Freilauf 
vorhanden ist.

>Falls möglich, besorg Dir einen Modellbau-BLDC-Motor

Ich habe mir soeben einen Modellbau-BLDC-Motor bestellt. Sobald dieser 
angekommen ist und ich meine Messungen gemacht habe werde ich mich 
melden, ich hoffe das Du Martin mir dann wie bisher geduldig 
weiterhilfst, Danke.

von Martin S. (led_martin)


Lesenswert?

Hallo,

gestern hatte ich, trotz Arbeitslosigkeit, irgendwie keine Zeit / Ruhe 
fürs Forum. Jetzt, mit Deiner Skizze, habe ich hoffentlich verstanden, 
was Du mit den Überschneidungen meinst, da haben wir wohl aneinander 
vorbei geredet. Da kann ich mir nur zwei mögliche Ursachen / Erklärungen 
vorstellen. Die Zeiten mit 'hart' VCC / GND gibst Du ja, durch 
einschalten der FETs, vor, das muss passen. In der Zeit, in der die 
Phase freigeschaltet ist, wirst Du wahrscheinlich nie solch einen 
Übergang sehen, wie Du es skizziert hast, da müsste der Motor eine 
trapezförmige BEMF haben, mit Anstieg / Abfall auf exakt 60 Grad 
Drehwinkel, und die 'Ecken' müssten exakt 'scharf' sein. Und 
Induktivität dürfte der Motor auch keine haben. Bei realen Motoren ist, 
wenn sie eine trapezförmige BEMF haben, der Anstieg / Abfall steiler, 
damit ist das 'Dach' des Trapezes etwas länger als 120 Grad Drehwinkel, 
das ist durchaus sinnvoll, da es einem, bei der Ansteuerung etwas 
Toleranz einräumt, beim Kommutieren. Wenn der Motor seine 
Leerlaufdrehzahl erreicht hat, ist seine BEMF (fast) genau so groß wie 
die Betriebsspannung, da kann man dann den Zustand FET ein, und den 
Zustand FET aus, BEMF aber noch, oder schon, an der Betriebsspannung 
kaum unterscheiden. Dazu kommen noch die Effekte vom entladen der 
Induktivität. Ein Effekt der's einem zusätzlich schwer macht, ist die 
Tatsache, daß, bei PWM-Ansteuerung, in den 0-Phasen der PWM, die BEMF zu 
Spannungen führt, die unter dem GND Potential liegen, und somit Strom 
durch die Freilaufdiode des unteren FET treibt. Somit ist die Wicklung 
eben nicht stromlos, wie man es für die BEMF-Messung gerne hätte. Bei 
der ansteigenden BEMF verzögert sich so das stromlos werden der 
Wicklung.

Ich habe auch den Eindruck, soweit ich das von den wenigen Bildern sehen 
kann, daß Du etwas zu früh kummutierst. Wegen der Induktivität muß man 
den Kommutierungs-Zeitpunkt zwar etwas nach Vorne legen, wiviel ist aber 
von der Drehzahl, und der Belastung abhängig. Sind Drehzahl, und 
Belastung klein, sollte man da nahe 30 Grad bleiben. Mir fällt auch die 
große Unruhe in deinen State-Zeiten auf. Versuch doch mal, den 
Mittelwert der letzten zwei Messungen zu benutzen. Da Du immer 
abwechselnd eine steigende, und eine fallende BEMF hast, würde sich 
diese Unsymmetrie auch rausmitteln.

Was Du zum Sternpunkt schreibst, ist richtig, an einem virtuellen 
Sternpunkt würde man auch diese Sannungen bekommen, was aber nicht zu 
dieser Überlegung passt, ist die Filterung der Messwerte, die Du 
verwendest. Wenn man sich auf die PWM-Zustände bezieht, muß man synchron 
zur PWM messen, und das schnell genug, da muß dann auch der analoge 
Signalweg bis zum ADC schnell genug sein, um die PWM noch sauber, quasi 
als Rechteck, abbilden zu können. Wenn man filtert, muß auch der 
Vergleichswert 'gefiltert' sein, er läuft dann von VCC/2 bei 100% runter 
auf 0V bei 0% PWM, wäre also VCC/4 bei 50% PWM.

Ein Nachteil der Filterung ist der Zeitverzug, der zusätzlich ins System 
kommt, gerade nach den 'Ausreißern' durch die Induktivität braucht das 
Filter Zeit, um sich wieder einzuschwingen.

Ich sehe es schon kommen, daß ich mir hier zu Hause, auch einen 
Motorcontroller aufbaue, das ist schon ein reizvolles Thema, und seit 
ich nicht mehr in der Firma bin, habe ich da gar nichts mehr gemacht, 
habe aber jede Menge Ideen.

Mit freundlichem Gruß - Martin

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.