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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.