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.
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
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?
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
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
@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
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?
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
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.
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