Forum: Mikrocontroller und Digitale Elektronik BLDC Motor - Startposition


von Tom G. (Gast)


Lesenswert?

Moin,

Ich hab mir einen fertigen Brushless-Regler bei "Mikrocopter" gekauft.
Leider ist es so, dass beim Starten des Motor der Motor kurz springt.
Den Grund dafür hab ich in der Software gefunden. Der Motor muss vor dem 
Starten synchronisiert werden.
Leider kann ich dass in meinem System nicht brauchen und suche deshalb 
nach Alternativen zur Bestimmung der Startposition.
Welche Methoden wendet man dafür außerhalb des Modellbaus an?
Ideal wäre natürlich, wenn ich die bestehende Hardware dafür verwenden 
könnte.
Jedoch ist der eine oder andere Pin frei, sodass kleine Erweiterungen 
möglich sind.

Danke
Tom G.

von Karl Z. (griffin27)


Lesenswert?

Wie viele Pole hat denn der Motor?
Bzw. wie genau muss die Positionserfassung sein?

Warum darf der Motor am anfang nicht springen. Muss die Drehzahl 
schalgartig bereit stehen? Was ist deine Anwendung? Etwas mehr Infos 
wären schon hilfreich, um dir helfen zu können.

lg, Karl

von name (Gast)


Lesenswert?

ich kenne keine fertige lösung.

das problem ist ja, dass die steuerung nicht weiß wie der rotor zum 
stator steht. damit sie das beim einschalten wüßte müßte man einen 
absolutwertgeber verwenden. den gibt es meines wissens nach aber nicht 
für wenig geld und auch nicht in sonderlich klein.

vielleicht kann man das springen verhindern indem man den strom der zu 
beginn "wahllos" auf die spulen gegeben wird langsam ansteigen läßt und 
nicht gleich voll aufreißt. wäre vielleicht ein versuch wert.

schönen abend!

von Thomas O. (tarzanwiejane)


Lesenswert?

ausserhalb des Modellbaus nimmt man dafuer Magnete an der achse und 
Hallsensoren. Die geben einem den Stand auf wenige Grad genau aus und 
man kann mit der passenden Kommutierung starten. Der Hallsensor wird 
auch fuer die Kommutierung waehrend des Betriebs genutzt. Back-EMF wie 
bei dem Mikrokopterdingens wird dort nicht genutzt.

cu Tarzanwiejane

von Tom G. (Gast)


Lesenswert?

Moin.

Die Ansteuerung erfolgt ja in 6 Phasen. Die Startposition muss halt so 
genau ermittelt werden, dass bekannt ist in welcher Phase der Motor 
steht und somit die "Startphase" feststeht.
Der Motor treibt eine relativ große Schwungmasse an. Das Problem dabei 
ist nicht direkt der Sprung, sondern dass aufgrund der großen zu 
beschleunigenden Masse dieser Sprung nicht voll ausgeführt werden kann. 
Das heißt der Motor bleibt wieder in einer "falschen Position". Das kann 
zur Folge haben, dass der Motor in die falsche Richtung anläuft.

Tom

von Karl Z. (griffin27)


Lesenswert?

hier sollte das langsame Anfahren (Strom langsam durch PWM hochfahren) 
Abhilfe schaffen. Dabei nimmt ma halt in kauf, dass der Motor nicht 
unbedingt synchron läuft. lg

von Tom G. (Gast)


Lesenswert?

Der Motor muss synchron laufen, da sonst die BEMF abhängige Kommutierung 
nicht mehr funktioniert.

Die vorgehensweise mit Hallsensoren ist mir klar.
Aber es gibt genauso sensorless Systeme. Es gibt bestimmt auch Methoden 
hier eine Startposition zu finden....

von Karl Z. (griffin27)


Lesenswert?

Stimmt, asynchron geht einmal gar nicht.
"Sensorless" die Position rauszufinden ist wahrscheinlich nicht möglich.

Wenn der Motor nur ein- oder zweipolig ist, müsste es mit einem 
Reflektorstreifen auf der Achse möglich sein, die Position 
herauszufinden.

von C. H. (_ch_)


Lesenswert?

Hallo,

wenn dich der Sprung nicht stört, dann mache doch einfach die 
"Sprungdauer" länger - also den Anfangsschaltzustand deines Umrichters. 
Der Rotor hat dann mehr Zeit die Schwungmasse und sich selbst 
auszurichten und die Maschine läuft insgesamt dann richtig an.
Aber aufpassen, dass du dabei deine Spulen und/oder deinen Umrichter 
nicht grillst.
Solange sich der Rotor nicht dreht hast du keine Gegenspannung. Der 
Spulenstrom wird nur durch seinen ohmschen Anteil begrenzt (außer du 
machst ne Stromregelung).

Gruß,
Christian

von Andreas R. (rebirama)


Lesenswert?

Es gibt eine Möglichkeit die Rotorposition festzustellen,
ob das allerdings mit deinem Praktikabel ist steht auf einem anderen 
Blatt:

Die Ständerinduktivität in der d-Achse ist meist unterschiedlich zur der 
in der q-Achse. (die d-Achse ist die, in die der Läuferfluss gerichtet 
ist)
Wenn du eine Möglichkeit hast, den Ständerstrom zu messen, so kannst du 
mit zwei unterschiedlich gerichteten Spannungspulsen (natürlich so 
klein/kurz, das der Motor noch nicht merklich zuckt) die Richtung der 
größten Induktivität herausfinden könnnen (die d-Achse dürfte die 
größere induktivität haben, wegen einem kleinerem Luftspalt?!).

Alternativ zum Strompuls fällt mir noch eine Hochfrequente
Wechselspannung ein. Das lässt den Motor auch nicht loslaufen.

Versuch macht kluch
Ich hab allerdings noch nicht ausprobiert...

von Tom G. (Gast)


Lesenswert?

Ok ich versuch den Gedanken mal weiter zu führen.
Ich geb auf eine Phase (Coil A + Coil B-) einen Spannungsimpuls, der so 
klein ist, dass der Motor nicht zuckt. Zeitlich kurz versetzt messe ich 
auf der anderen Wicklung (Coil C) den Strom. Dies mach ich für alle 
Phasen und kann dann anhand der Strom auf die Position schließen?
Hast du da nähere Infos dazu? Auch das mit der hochfrequenten 
Wechselspannung würd mich interessieren.

Tom

von C. H. (_ch_)


Lesenswert?

>Auch das mit der hochfrequenten
>Wechselspannung würd mich interessieren
...schau dir mal das an:
http://deposit.ddb.de/cgi-bin/dokserv?idn=974438928&dok_var=d1&dok_ext=pdf&filename=974438928.pdf
so ab Seite 38 wird's für dich interessant.

Gruß,
Christian

von josef (Gast)


Lesenswert?

Eine einfache und elegante Loesung ist der AMS Rotaryencoder.
Einfach Magnet auf die Achse und der Chip liefert je nach Typ eine 
Aufloesung bis zu 0.01 Grad. 
http://www.austriamicrosystems.com/03products/20_rotary_encoders.htm

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.