Forum: Mikrocontroller und Digitale Elektronik Frage zu Brushless Motor Ansteuerung


von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

Bin zur Zeit dabei einen Brushless Motor anzusteuern.
Zur Zeit läuft der Motor auf einem starren Feld. Das wollte ich machen 
um mir die BEMF anzuschauen. Mir ist allerdings dabei aufgefallen, dass 
diese genau entgegengesetzt zu der BEMF, wie sie zum Beispiel auf der 
Seite eingezeichnet ist:
http://www.aerodesign.de/peter/2001/LRK350/Warum_dreht_er_so.html

Ich kann mir da gerade keinen Reim drauf machen, woran das liegen 
sollte. Ist die Glocke nicht synchron zum Feld, sondern 'rutscht' weil 
sie nicht mitkommt? Welchen Grund kann das haben?

Über eine Mittelpunktrekonstruktion per Spannungsteiler mit kleinem 
Tiefpass vergleiche ich die BEMF mit dem Mittelpunkt. Mir ist hierbei 
aufgefallen, dass da auch etwas nicht stimmen kann, da die BEMF sich nie 
mit dem Mittelpunkt kreuzt. Aber eins nach dem anderen :-)

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Endstufe der Ansteuerung.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Es könnte sein, dass der Motor noch nicht schnell genug läuft, um eine 
saubere BEMF zu liefern. Was ist es denn für ein Motor und wie schnell 
ist das Feld in deinem Versuch?

Peter

von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo Peter,
Danke erst mal für deine Antwort :-)

Der Motor ist ein Außenläufer. 12 Bewickelte Zähne am Stator und 7 
Polpaare an der Glocke. Das Dingen liegt irgendwo bei 900 U/min/V

Das Feld müsste mit etwa 8000min^-1 drehen. also etwa 133Hz, bzw. 7,5ms 
pro Umdrehung oder 1,25ms pro Kommutierung.

Die BEMF ist absolut gesehen relativ niedrig. Nach dem Spannungsteiler 
nur ein paar 100mV. Sollte aber reichen.

Der Motor lief auch schon mal schneller mit starrem Drehfeld. Da sah die 
BEMF aber auch so "invertiert" aus. Soweit ich weiß soll die BEMF 
Spannung aber idealerweise keine großen Sprünge machen, sondern quasi 
die Lücke zwischen den beiden umgebenden "States" füllen (als fallende 
oder steigende Rampe/Halbsinuskurve).

Allerdings, Wenn da etwas an der Kommutierungssequenz nicht stimmen 
sollte, dann dürfte der Motor sich ja gar nicht drehen, sondern nur 
zucken.

Bin gerade irgendwie ratlos.

von Simon K. (simon) Benutzerseite


Lesenswert?

Hat denn keiner einen Tipp? ;)

von Simon K. (simon) Benutzerseite


Lesenswert?

So, habe jetzt auch noch mal einen anderen Motor ausprobiert. Außerdem 
den Tiefpass noch etwas verändert, das Problem besteht aber weiterhin.
Ich habe das Gefühl, dass das Back-EMF Signal irgendwie nach VCC 
ge-pull-upt wird. Also auf dem Oszilloskop genau VCC minus U_BEMF zu 
sehen ist.

Kann es sein, dass es Probleme gibt, wenn man einen sensorlosen 
Brushless Motor mit einer Endstufe ansteuert, die einen Bootstrap 
Kondensator verwendet? Ich meine Nein, weil, wenn die U_BEMF auftaucht, 
der Bootstrap-Kondensator sehr wahrscheinlich sehr gut geladen ist und 
somit einfach nur das untere Potential dieses Kondensators durch die 
U_BEMF angehoben wird. Da auf der anderen Seite des Kondensators aber 
eine Diode liegt, wird hier kein Strom fließen.
Aber vielleicht irre ich mich ja.

Einen Softwarefehler vermute ich nicht.
Ich habe mit dem Oszilloskop auch noch mal die Ansteuerung der 
Treiberbrücke nachgeschaut.
Der ShutDown-Pin (low active) geht immer nur dann auf Low (HI-Z an der 
Phase), wenn die BEMF gelesen werden soll.
Die FETs sind auch wirklich HI-Z das habe ich schon mit einer externen 
Spannungsquelle (Stromquelle) getestet.

Komisch komisch.

von Jürgen H. (nobody)


Lesenswert?

Hallo,

ich hab mir damals eine Trigger in der SW erstellt der mir genau die 
Mitte der Perioden gezeigt hat! Danach habe ich mit der Motorspannung 
solange gedreht bis der Übergang sauber in der mitte war. So konnte ich 
mich wenigstens ein wenig orientieren!

Wo misst Du denn das Signal?

Zudem bin ich mir nicht sicher ob die Kondensatoren C26-C28 hier richtig 
sind! Die werden hier nicht viel filtern können. Besser wären diese 
hinter den Widerständen. Zudem werden die auch nicht benötigt, die 
verzögern Dir nur das Signal. Wenn Du nun ein anderes Timing einstellen 
willst wird es so schwer.

von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo Jürgen,

Jürgen H. wrote:
> Wo misst Du denn das Signal?
Direkt an der (einer) Phase.

> Zudem bin ich mir nicht sicher ob die Kondensatoren C26-C28 hier richtig
> sind! Die werden hier nicht viel filtern können.
Der Schaltungsteil ist von dem BrushlessCtrl abgekupfert von 
http://www.mikrokopter.de.
In den AppNotes von Atmel ist es aber auch so. Die sind da schon ganz 
gut. Zusammen mit R2, R7, R13 bilden diese einen Tiefpass.

> Besser wären diese
> hinter den Widerständen. Zudem werden die auch nicht benötigt, die
> verzögern Dir nur das Signal. Wenn Du nun ein anderes Timing einstellen
> willst wird es so schwer.
Ja, ich weiß. Wenn sich die Verzögerung aber in Grenzen hält, ist das in 
Ordnung und lässt sich ja auch per Konstante im Programm wieder beim 
Berechnen des Kommutierungszeitpunktes subtrahieren.
Ohne geht es aber eigentlich nicht, möchte ich behaupten. Dann würde ja 
die ganze Zeit der Analog-Komparator triggern, der die Mittelspannung 
mit der Phase vergleicht (wegen dem PWM Noise).

von Simon K. (simon) Benutzerseite


Lesenswert?

Habe noch mal etwas herumprobiert und meine Vermutung geht im Moment in 
die Richtung, dass die 1N4006 viel (Dass sie zu langsam sind, weiß ich 
ja.) zu langsam sind für die Zwecke und deswegen der Kondensator (außer 
nach der großen GND-Pause an den Phasen) so gut wie leer ist.
(Deswegen sieht man auch nach der GND-Pause ganz schwach eine kleine, 
"echte" Back-EMF Spannung auf dem Oszillogramm).

Ich werde die Dioden erst mal durch BAS32L ersetzen, sobald ich an 
welche drankomme.

Bis dahin schon mal Danke an euch beiden :-)

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Okay, Mit MBR0540 sieht es auch nicht viel glücklicher aus.
Siehe Anhang. Irgendwas stimmt da noch nicht.
Ich tippe auf Softwarefehler, was anderes kommt gar nicht mehr in Frage. 
Die Endstufe besteht jetzt nur noch aus den drei Transistoren samt 
Treiber (mit Dioden und Kondensatoren).
Auf dem Bild ist unten die Spannung direkt an einer Phase zu sehen, oben 
der Gesamtstrom an einem Stück Leiterbahn gemessen.
Irgendwo steckt da noch der Teufel. Auch komisch ist der kleine 
StromPeak, der nur jede zweite Kommutierung kommt.
Die Wellenform der BEMF zwischen den PWM und GND Phasen sieht jetzt auch 
mehr als merkwürdig aus.

Hat jemand einen Tipp, was ich mal ausprobieren könnte? Bin gerade etwas 
ratlos, wo ich anfangen soll zu suchen.

von Simon K. (simon) Benutzerseite


Lesenswert?

Noch was zum gucken: Unten Phase A, oben Phase B. Mehr Kanäle gibt mein 
Oszi nicht her.
Dabei habe ich den Motor abgeklemmt und die Phasen jeweils mit einem 
Widerstand gegen eine externe Spannung von 7 Volt (ca. VCC/2) geklemmt.
Ich habe quasi über drei Widerstände die ohmschen Anteile des Motors 
simuliert und die Sternpunktspannung extern vorgegeben.

Interessant: Die Ansteuerung ist 1A supergut. Man erkennt genau die 
Folge 2 Slots PWM, 1 Slot Hi-Z (es ist nur VCC/2 zu messen) und 2 Slots 
GND gefolgt von einem Slot Hi-Z.

Gutgut. Meine Vermutung des Fehlers liegt gerade bei: Wer viel misst, 
misst Mist! Weshalb ich mal denke, dass mein vorletztes Oszillogramm 
Mist gemessen ist.
Ich werde den Trigger mal extern machen und im Programm nach jeder 
Umdrehung einen Pin Togglen.

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Pild.

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bin mal wieder ein wenig zum Herumprobieren gekommen. Hier mal die 
Ansteuerung ganz ohne PWM.
Da kann doch irgendwas einfach nicht stimmen. Die BEMF Spannung kommt 
noch nicht mal über VCC/2 hinaus (was sie ja eigentlich soll). Ich 
begreifs nicht.

von Bernhard M. (bernhard84)


Lesenswert?

Hi,

also ich hatte das Problem auch mal. Bei mir sah die BEMF genauso aus. 
trotz langem rumprobieren hab ichs nicht geschafft. Ich weiß, dieser 
Beitrag bringt dir jetzt nix, aber zumindest bist du nicht allein. Und 
ich wäre auch an ner Lösung interessiert.

Meine Vermutung ist, dass der Motor nicht synchron zum Feld läuft. Bei 
mir war es so, dass wenn ich denn Motor ohne Ansteuerung (per Hand) 
drehe, die BEMF absolut in Ordnung ist. Nur mit Ansteurung der FETS 
gings dann nicht mehr.

von Simon K. (simon) Benutzerseite


Lesenswert?

Bernhard Mayer wrote:
> Hi,
>
> also ich hatte das Problem auch mal. Bei mir sah die BEMF genauso aus.
> trotz langem rumprobieren hab ichs nicht geschafft. Ich weiß, dieser
> Beitrag bringt dir jetzt nix, aber zumindest bist du nicht allein. Und
> ich wäre auch an ner Lösung interessiert.
Wie sah deine Ansteuerung aus? Auch aktiver Freilauf (also 
Highside/Lowside alternierend bei PWM)? (Wobei das Problem ja auch ohne 
PWM auftritt).

> Meine Vermutung ist, dass der Motor nicht synchron zum Feld läuft. Bei
> mir war es so, dass wenn ich denn Motor ohne Ansteuerung (per Hand)
> drehe, die BEMF absolut in Ordnung ist. Nur mit Ansteurung der FETS
> gings dann nicht mehr.
Die Vermutung habe ich auch, aber der Motor macht keine merkwürdigen 
Geräusche und dreht wirklich von ganz langsamer Drehzahl hoch.

Hm.

von Bernhard M. (bernhard84)


Lesenswert?

Hi!

Ich hab die Ansteuerung mit einem Renesas SH7125 gemacht und dann 
jeweils P-channel und N-channel FET. Der Renesas ist relativ freizügig 
programmierbar was PWM angeht. Da kann man nur Low-Side, nur High-Side 
oder beide machen. Hab ich alles ausprobiert und auch ohne PWM. Das Bild 
war aber immer das gleiche.

Bei mir ist der Motor auch gut hochgelaufen, teilweise etwas ruckelig 
wegen der vorgebenenen Frequenz. Ich hab allerdings nur einen Motor 
ausprobieren können, da ich nur einen habe.

Bernhard

von Christoph B. (christophbechtel)


Lesenswert?

Hallo Simon,

ich bin auch am Ansteuern eines Brushless Motors, bin glaube zwar schon 
ein kleines Stück weiter inzwischen, aber wir könnten uns sicherlich mal 
austauschen.
Würde mich freuen wenn du dich mal meldest, entweder über ICQ: 214158902 
oder per Mail: m a i l [at] c h r i s t o p h b e c h t e l [dot] d e

Per ICQ wäre am besten, einfach weil man da schnell mal hin und her 
schreiben kann. Wenn wir eine Lösung gefunden haben können wir diese ja 
hier reinschreiben.

Lieben gruß,

Christoph

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bernhard Mayer wrote:
> Meine Vermutung ist, dass der Motor nicht synchron zum Feld läuft. Bei
> mir war es so, dass wenn ich denn Motor ohne Ansteuerung (per Hand)
> drehe, die BEMF absolut in Ordnung ist. Nur mit Ansteurung der FETS
> gings dann nicht mehr.

Das muss es wohl gewesen sein. Ich habe vorher den Motor hochgedreht, 
wobei er beim Hochdrehen wohl irgendwo ausgestiegen ist und nur noch auf 
einem Teiler der Feldfrequenz läuft.

Auf einen Tipp von Christoph läuft er jetzt bei 5ms Kommutierungszeit 
(ohne Hochlaufen) konstant und erzeugt angehängte BEMF.

Danke an alle Beteiligten, das Problem sieht gelöst aus.

von Simon K. (simon) Benutzerseite


Lesenswert?

Zu früh gefreut würde ich sagen. Ich nehme an, dass es nicht richtig 
ist, dass die BEMF "falsch herum" geht.
Ich meine, müsste die BEMF Linie nicht die beiden umgebenden Zustände 
"verbinden"?
In der Mitte ist aber der PWM Zustand dargestellt, was bedeutet, dass 
von links die BEMF größer werden sollte und rechts davon wieder abnehmen 
sollte.
Ein Vertauschen der Phasen in der Software hat zwar die 
Umdrehungsrichtung geändert, aber nicht die Polarität der BEMF Spannung.

Ist denn meine Art der Motoransteuerung richtig?
Zust. | A   | B   | C
  1     PWM   GND   HI-Z
  2     PWM   HI-Z  GND
  3     HI-Z  PWM   GND
  4     GND   PWM   HI-Z
  5     GND   HI-Z  PWM
  6     HI-Z  GND   PWM

-PWM bedeutet, während dieses Zustandes wird im Dutycycle der PWM der 
obere FET und der untere abwechselnd eingeschaltet. Wobei der obere FET 
in Phase zum PWM Signal ist und der untere invertiert.
Davon sind auf dem Bild oben zwei Stück von drauf (in der Mitte).
-GND bedeutet, dass die Phase komplett den ganzen Zustand auf Masse 
geschaltet ist (Davon sind keine auf dem Bild zu sehen).
-HI-Z bedeutet, dass die Phase hochohmig geschaltet ist, also kein FET 
ist an. (Das sind die beiden am Rand des Bildes mit der BEMF)

Nicht, dass hier mein Fehler liegt.

von Bernhard M. (bernhard84)


Lesenswert?

Hi!

Deine Phasenansteuerung scheint soweit richtig.

Aber die BEMF schaut falsch aus. meiner meinung nach müssten die 
schrägen Linien genau anders rum geneigt sein.

Mit welcher frequenz hast du gestartet und wie hoch ist deine 
andfrequenz? und was hast du genau verändert?

Danke
Bernhard

von Simon K. (simon) Benutzerseite


Lesenswert?

Bernhard Mayer wrote:
> Hi!
>
> Deine Phasenansteuerung scheint soweit richtig.
>
> Aber die BEMF schaut falsch aus. meiner meinung nach müssten die
> schrägen Linien genau anders rum geneigt sein.
>
> Mit welcher frequenz hast du gestartet und wie hoch ist deine
> andfrequenz? und was hast du genau verändert?
>
> Danke
> Bernhard

Hallo Bernhard. Wegen der BEMF: Ja, genau so sehe ich das auch.
In dem letzten Oszillogramm müssten es 200Hz Kommutierungsfrequenz 
gewesen sein. Der Motor läuft (ggf. nach kurzem Anstubsen) dann von 
alleine.
Ich habe eigentlich nur PWM und Frequenz verändert.

Ich habe auch noch einen Tipp bekommen vom Autor der Seite:
http://rmmx.gmxhome.de/bldchv/Grundlagen.html
Bei der dritten Animation (runterscrollen) sieht man, dass der Motor bei 
zu viel Strom "einrastet", weil eben Strom und Frequenz nicht zueinander 
passen.
Der Autor meinte, dass das eventuell das "Problem" sein könnte, warum 
man keine BEMF sieht.

von Simon K. (simon) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ding Ding. Und der gute Mann hatte anscheinend tatsächlich Recht.

Habe den Motor mal beschleunigen lassen. Auf Kommutierungsfrequenz 
~1,6kHz (620us Zeit pro State).
Kein Erfolg. Dann mal den Rotor leicht abgebremst (so ein bisschen in 
die Knie gezwungen: War also immer noch mehr Strom als nötig auf der 
Windung) aber plötzlich machte der Motor ein anderes Geräusch und 
schlagartig veränderte sich die BEMF.
Bei niedrigen Drehfrequenzen habe ich das auch schon versucht, aber da 
blieb der Motor eher stehen als dass sich die entsprechend richtige BEMF 
bilden konnte.

Nachdem ich den Rotor ein wenig abgebremst hatte, hat er seinen 
absoluten Drehwinkel so verändert, dass er nicht mehr zu der Position 
gelangt, wo keine Drehbeschleunigung mehr ausgeübt wird (Also die 
Position, in der der (virtuelle) Stabmagnetrotor senkrecht auf der 
Wicklung steht). Bevor er dort nämlich ankommt, wird weiterkommutiert.

Jetzt kann ich mir endlich mal die Sternpunktbildung und die 
Phasenspannung nach dem Spannungsteiler anschauen.

Der nette Herr von der Seite meinte aber auch noch, dass es eigentlich 
problemlos ist, wenn man den motor im stepperbetrieb beschleunigt und 
dann umschaltet. er müsste dann von alleine richtig zu drehen anfangen.

von Cornelius R. (cox)


Lesenswert?

Hallo,
seit einigen Tagen beschäftige ich mich jetzt auch mit der Ansteuerung 
eines Brushlessmotors (Robbe Roxxy 4949 Außenläufer). Bin jedoch noch 
nicht so weit wie ihr. Die Schaltung hab ich ähnlich der von 
Mikrokopter.de entworfen und sie scheint zu funktionieren. 
http://gallery.mikrokopter.de/main.php?g2_view=core.DownloadItem&g2_itemId=39359&g2_serialNumber=5
Den Motor habe ich zuerst nach der folgenden Tabelle angesteuert, dies 
funktioniert auch recht gut jedoch fehlen ca. 100g Schub und die FETs 
werden nach einigen Minuten sehr warm.
Ansteurung 1:(3 Zustände)
  A    B    C
1  VCC    GND    Hochohmig
2  Hochohmig  VCC    GND
3  GND    Hochohmig  VCC

Die oben von Simon K. geposteten 6 Zustände leuchten mir durch die sich 
ergebende sinusförmige Spannung ein, wenn ich denn Motor jedoch so 
ansteuere bekomm ich nur noch ca 70% des Schubs von der Ansteuerung mit 
3 Zuständen.
Zust. | A   | B   | C
  1     PWM   GND   HI-Z
  2     PWM   HI-Z  GND
  3     HI-Z  PWM   GND
  4     GND   PWM   HI-Z
  5     GND   HI-Z  PWM
  6     HI-Z  GND   PWM
Den Zeitpunkt der Kommutierung bestimm ich dadurch, dass ich mit dem 
Analog Comparator des Atmega die Spannung der nicht beschalteten Phase 
mit der des Sternpunktes bzw. des arithmetischen Mittels der drei Phasen 
vergleiche und bei jeder steigenden Flanke kommutiere. Bei der 
Ansteuerung mit 6 Zuständen wird bei jedem logischen Wechsel kommutiert.
Mach ich denn einen Grundlegenden Fehler?? Bzw Was ist mein Fehler? :-)
Vielen Dank für eventuelle antworten
Grüße Cornelius

von SilentPro (Gast)


Angehängte Dateien:

Lesenswert?

Ich weiß, dass der Thread alt ist, aber wenn man dennoch darauf stößt 
und es sich durchliest, weil man auf eine Lösung hofft, sollte man nicht 
enttäuscht werden.

Ich finde es daher sinnvoll hiermit auf eine "Application Note" von 
Atmel zu verweisen, in der die sensorlose Ansteuerung von 
Brushlessmotoren sehr detailiert und verständlich beschrieben wird:

"AVR928 - Scalar sensorless methods to drive BLDC motors"
http://www.atmel.com/Images/doc8305.pdf

Es gibt auch noch andere "Application Notes" zum Thema 
"Brushless"-Motorsteuerung, aber diese habe ich mir noch nicht 
angeschaut.

In obigem Dokument wird aber z.B. erwähnt, dass eine einseitige PWM zu 
Problemen bei sensorlosem Betrieb führt. Deshalb sollte man 
normalerweise PWM für High- und Low-Side verwenden.

Alles weitere kann jeder selber dem Dokument entnehmen!
Es werden einige unterschiedliche Ansätze beschrieben.

von TH007 (Gast)


Lesenswert?

Hallo,
vielen Dank für dieses Skript. Das hat mir den wichtigen Hinweis 
gegeben, dass es wichtig ist bei Hochlauf die Drehzahl und das 
Tastverhältnis zu erhöhen! Dann sieht die BackEMF besser aus und kann 
entsprechend ausgewertet werden.
Grüße

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.