Forum: Mikrocontroller und Digitale Elektronik BrushlessController Fragen


von E. M. (hias)


Lesenswert?

Hallo.

Ich baue wieder mal an einer Steuerung für Brushlessmotoren.

Die Schaltung dazu findet ihr hier:
Beitrag "Re: MOSFETs werden heiß - Brushlesscontroller"

Mittlerweile habe ich die neue Schaltung mit den Mosfesttreibern 
aufgebaut.
Vorangegangene Probleme sind damit erstmal gelöst.

Jetzt habe ich neue Fragen.

Ist es grundsätzlich besser alle 6 Mosfets mit einem PWM-Signal zu 
steueren.
Bisher habe ich immer nur die High-Side Mosfets mit einer PWM versorgt.
Welche Vor oder Nachteile ergeben sich?

Weiterhin habe ich beim Anfahren des Motors noch Probleme.

Das erste hierbei ist das Bestimmen der Lage des Rotors vor dem Start.
Bis jetzt gebe ich einen kräftigen Puls auf eine Phase, damit der Rotor 
in die eine Position springt. Ich gehe davon aus, dass das der Rotor 
auch macht.
Leider ist das nicht immer so. Und der Motor bekommt Schwierigkeiten 
beim Anlaufen.
Ich hab mich nach anderen Methoden umgeschaut. Gefunden habe ich das 
hier:
http://bldc.wikidot.com/p-esc-startup
Hier wird ein kurzer Spannungsimpuls auf zwei der Windungen gegeben und 
danach auf der freien Windung die Spannung (BEMF) gemessen. Daraus soll 
sich dann die Rotorposition bestimmen lassen.
Wie schätzt ihr diese Methode ein? Gibts da vielleicht was besseres?

Weiterhin beschäftigt mich noch das Anlaufen des Motors.
Momentan verwende ich eine einfache Rampenfunktion die die Zeit zwischen 
den einzelnen Phasen linear verkleinert. Da ich die Steilheit der Rampe 
sowie Anfangs und Endpunkte durch Experiment gestimmt habe, stellt sich 
die Frage ob es auch (einfache) Rechenverfahren gibt, die aus Daten des 
Motors die Beschleunigungsrampe festlegen?

Vielen Dank schonmal

Hias

von klausy (Gast)


Lesenswert?

>Bisher habe ich immer nur die High-Side Mosfets mit einer PWM versorgt.
>Welche Vor oder Nachteile ergeben sich?
Und was machst du mit den lowside Mosfets???

von E. M. (hias)


Lesenswert?

Die werden nur ein und ausgeschaltet. Sprich 100% PWM.

von klausy (Gast)


Lesenswert?

aso...
wenn du mit allen 6 arbeitest kannst du einen "saubereren" Sinusstrom 
und damit ein gleichmäßigeres Drehmoment erzeugen!
Für das setzen des drehfeldes kannst du versuchen nach dem 
Spannungsimpuls langsam (mehr schlecht als recht) in den Nullpuls des 
Drehgebers zu fahren!
Dann hast du ja die exakte Position...

von derwarze (Gast)


Lesenswert?

Er wird den Motor im Blockmodus ansteuern, dann geht das mit der 100% 
Lowsidesteuerung recht gut. Der Motor macht zwar etwas mehr Lärm und 
läuft bei Motoren niedriger Polzahl nicht so glatt wie in Sinusbetrieb 
bringt aber mehr Leistung. Der MC33035 arbeitet zb so.

Im Sensorlosen Betrieb ist die Anlaufsteuerung und niedrige Drehzahlen 
immer etwas problematisch. In Lüftersteuerungen wird meist brutal ein 
Drehfeld auf die Wicklung gelegt und wenn dann eine verwertbare Signale 
kommen wird geregelt. Alle Teile die ich kenne arbeiten beim Start im 
Blockmodus und schalten nach dem Anlauf erst in Sinusbetrieb um.

Auf der Embedded sah ich einige sensorlose Ansteuerung die das Anlaufen 
perfekr gelöst hatten (zB bei virtualHall - www.elmos.de). siehe Soweit 
ich erfahren konnte handelte es sich da um recht aufwendige 
Vectorsteuerungen, Details liessen sich leider nicht erfahren. Wenn der 
Motor nicht im niedrigen Drehzahlbereich geregelt werden muss ist das 
wohl zu Aufwändig.

Möglicherweise bringt Dir ja das Teil auf www.my-boardclub.com was.

von DOcean (Gast)


Lesenswert?


von E. M. (hias)


Lesenswert?

Hallo,

Ich werd dann ersteinmal nur die Highside-Fets mit der PWM versorgen.

Wie berechnet sich die "Anfahrtsrampe"? Momentan versuche ich 
experimentiell Werte zu bestimmen. Leider kommt der Rotor teilweise 
immer noch nicht nach.

Hias

von E. M. (hias)


Lesenswert?

Keiner eine Idee?

von avion23 (Gast)


Lesenswert?

Am Anfang wird ein Drehfeld angelegt, und man hofft, dass der Rotor 
mitkommt. Also Open-loop-control. Das funktioniert natürlich nicht, wenn 
der Rotor unter Last ist, und auch nicht mit jedem Motor. Deswegen wird 
ein Kompromiss gefunden zwischen schnellem und sicherem Hochfahren der 
Drehzahl. "Empirisches ermitteln der Parameter" aka Trial & Error wäre 
meine Wahl.

Es gibt auch Dinge wie Vectorfelder usw. Das ist komplexer, man braucht 
einen DSP/FPGA und ich habe überhaupt keine Ahnung davon.

von E. M. (hias)


Lesenswert?

Hallo,

Ich habe immer noch Probleme.
Am Anfang weiß ich ja nicht wo der Rotor steht. Meiner Meinung nach ist 
das aber entscheidend. Ist der Motor nämlich am Anfang schon außer 
"Takt" dann wird er es nie schaffen, dem beschleunigten vorgegebenen 
Drehfeld zu folgen.
Bewege ich den Motor mit der Hand in eine Startposition und starte dann, 
funktioniert es bei jedem Versuch.
Ich benötige die Startposition, was ohne Hallsensoren schwierig ist. 
Oder ich versuche den Rotor irgendwie in Position zu bringen.
Das ist allerdings auch nicht einfach. Ich habe versucht mit kurzen 
Impulsen den Rotor zu Positionieren, aber auch hier springt er manchmal 
in die falsche Position.

Habt ihr noch bessere Ideen?

MfG Hias

von Benedikt K. (benedikt)


Lesenswert?

Was ich schon häufiger gesehen habe: 2 Anschlüsse an GND, eine an + und 
dann für eine kurze Zeit ordentlich Strom drauf. Das soll den Motor 
angeblich in die richtige Position bringen.

von E. M. (hias)


Lesenswert?

Hallo!

An was denkst du dabei bei "kurz" und "ordentlich"?
Ich habs mit ca 5ms bei einer PWM von 10% versucht. Der Motor springt 
logischerweise, aber nicht zuverlässig in die gewünschte Position.

MfG Hias

von Benedikt K. (benedikt)


Lesenswert?

5ms kommt mir etwas kurz vor (hängt natürlich stark von der Masse des 
Rotors ab). Ich habe bisher mit 100ms gearbeitet, das ging relativ gut.

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.