Forum: Mikrocontroller und Digitale Elektronik HDD Motor Intelligent ansteuern


von Daniel G. (daniel4161)


Lesenswert?

Hi leute,
bin neu hier und habe trotz ausgiebigem Suchen noch keine Antwort auf 
meine Frage gefunden.

Es geht um einen HDD Motor mit vier Anschlüssen, den ein Kumpel und ich 
ansteuern wollen. Mit einer festen Frequenz laufen lassen ist auch 
garkein Problem, aber sobald eine kleine Last oder Störung den Motor 
beeinflusst, läuft er nicht mehr synchron und bleibt stehen, logisch.

Habe in mehreren Foren gelesen, dass man im Prinzip nur die 
Rotorstellung (oder Drehzahl) messen muss, was die originale HDD 
Steuerung mit der momentan unbenutzten Spule nach dem Hall-Sensor 
Prinzip macht.

Nun zu meiner Frage:
Wie Kann man das praktisch umsetzen?
Die Hall-Spannung wird ja vergleichsweise gering sein und kaum Leistung 
haben, ich bräuchte einen kleinen Verstärker, oder? Allerdings darf der 
Verstärker nicht kaputt gehen, wenn die Wicklung gerade befeuert wird...

Könnte man auch eine Lichtschranke an den Rotor Bauen, die pro 30° 
Drehung ein Signal gibt, oder ist die bei ein paar tausend Umdrehungen 
zu träge?

(Wir wollen das Ganze mit einem RasberrryPi steuern, genug 
Ausgangsfrequenz hat er.)

Viele Grüße Daniel :)

von Peter II (Gast)


Lesenswert?

Daniel G. schrieb:
> Wie Kann man das praktisch umsetzen?

https://de.wikipedia.org/wiki/Vektorregelung

> Die Hall-Spannung wird ja vergleichsweise gering sein und kaum Leistung
> haben, ich bräuchte einen kleinen Verstärker, oder?
nein, weil man sie mit einen µC erfasst.

> Allerdings darf der
> Verstärker nicht kaputt gehen, wenn die Wicklung gerade befeuert wird...
die HallSpannung hat doch nicht mit der eigentlich Wicklung zu tun - 
oder hast du gar keine Hallsensoren?

> Könnte man auch eine Lichtschranke an den Rotor Bauen, die pro 30°
> Drehung ein Signal gibt, oder ist die bei ein paar tausend Umdrehungen
> zu träge?
kommt auf die Drehzahl an, wenn er langsam drehen soll muss man genau 
wissen wo er steht, das reicht eine Lichtschranke nicht aus.

> (Wir wollen das Ganze mit einem RasberrryPi steuern, genug
> Ausgangsfrequenz hat er.)
ja, aber ist er auch echtzeitfähig? Für so etwas nimmt man einen extra 
Controller der ein exaktes Timing hat.

von Daniel G. (daniel4161)


Lesenswert?

Hallo und Danke erstmal für die schnelle Antwort!

zu dem Hall-Sensor:
Nein, der Motor besteht aus 3 Wicklungen, die als Sternschaltung 
Zusammengebaut sind (daher auch nur 4 Anschlüsse). Mit einem externen 
Hall-Sensor Wäre es ja nicht soooo schwer.
Was ich bisher gelesen habe ist, dass in dem Moment, in dem eine Spule 
befeuert wird, um den Rotor zu drehen, eine der anderen Spulen als 
Hall-Sensor benutzt wird, also die vom Rotor zurückinduzierte Sannung 
ausgelesen wird.

Was meinst du mit 'langsamen' Drehzahlen, für die die Lichtschranke zu 
ungenau wäre? Hatte jetztz eher gedacht, dass der Motor zu schnell wird 
(allerdings misst die ja mit Lichtgeschwindigkeit)... ich rede von 
Drehzahlen zwischen 5 und 20 k rpm.

Viele Grüße Daniel

von Peter II (Gast)


Lesenswert?

Daniel G. schrieb:
> Was ich bisher gelesen habe ist, dass in dem Moment, in dem eine Spule
> befeuert wird, um den Rotor zu drehen, eine der anderen Spulen als
> Hall-Sensor benutzt wird, also die vom Rotor zurückinduzierte Sannung
> ausgelesen wird.
das ist dann aber kein Hall-Sensor sondern man misst die 
Induktionsspannung.

> Was meinst du mit 'langsamen' Drehzahlen, für die die Lichtschranke zu
> ungenau wäre? Hatte jetztz eher gedacht, dass der Motor zu schnell wird
> (allerdings misst die ja mit Lichtgeschwindigkeit)... ich rede von
> Drehzahlen zwischen 5 und 20 k rpm.

wenn sich der Motor langsam drehen soll, dann muss auch genau wissen in 
welchen Winkel er steht und das kann die Lichtschranke nicht wissen. 
Wenn er sich schnell dreht kann man einfacher über die Drehzahl und die 
vergangene Zeit ermitteln wo er stehen müsste. Ja Langsamer er dreht 
desto größer die Ungenauigkeit.

Du sucht also eine Sensorlose Ansteuerung

https://www.mikrocontroller.net/articles/Sensorlose_BLDC_Ansteuerung

ob man das unter Linux mit einem Rapi zu laufen bringe - keine Ahnung.

von test (Gast)


Lesenswert?

Daniel G. schrieb:
> Mit einem externen
> Hall-Sensor Wäre es ja nicht soooo schwer.

Also hat der Motor keinen Hall Sensor!?

Daniel G. schrieb:
> eine der anderen Spulen als
> Hall-Sensor benutzt wird, also die vom Rotor zurückinduzierte Sannung
> ausgelesen wird.

Das ist kein Hall Sensor....nicht mal annähernd
Was du meinst ist die BEMF

Deine Fragen sind einfach mit Google beantwortet.
Stichworte: BLDC, Blockkommutierung, BEMF, Trapezkommutierung, Brushless 
DC

von jo (Gast)


Lesenswert?


von Daniel G. (daniel4161)


Lesenswert?

Dann habe ich was falsch verstanden, was ist denn der unterschied 
zwischen einer Spule die Induktion von vorbeifliegenden Magneten misst 
und einem Hall-Sensor ?

Die Lichtschranke würde ich mir so vorstellen, dass um den Rotor herum 
12 schwarze Striche aufgebracht werden, und LED und Sensor übereinander 
liegen. So kann die Lichtschranke immerhin 30° Drehung Melden (Bei mehr 
Strichen auch genauer).

Der PI an sich ist echtzeitfähig, wir experimentieren mit Python. Hab 
gelesen, dass das Betriebssystem möglicherweise zu langsam ist, dann 
können wir es aber im Assembler schreiben (habe selber nicht so viel 
Ahnung vom Programmieren).

von jo (Gast)


Lesenswert?

>dann
>können wir es aber im Assembler schreiben

Nö könnt ihr nicht.

von Peter II (Gast)


Lesenswert?

Daniel G. schrieb:
> Der PI an sich ist echtzeitfähig, wir experimentieren mit Python. Hab
> gelesen, dass das Betriebssystem möglicherweise zu langsam ist, dann
> können wir es aber im Assembler schreiben (habe selber nicht so viel
> Ahnung vom Programmieren).

so lange ihr das Linux darunter verwendet ist es fast egal ob Python 
oder ASM. Wenn Linux gerade etwas andere tun will - dann läuft eure 
Regelung nicht,.

Rechne doch mal aus, wie viel Zeit ihr bei 15k Umdrehung für die 
Berechnung und einlesen vom ADC habt. Dazu kommt noch das der PI gar 
keinen ADC hat.

von THOR (Gast)


Lesenswert?

Peter II schrieb:
> Rechne doch mal aus, wie viel Zeit ihr bei 15k Umdrehung für die
> Berechnung und einlesen vom ADC habt. Dazu kommt noch das der PI gar
> keinen ADC hat.

Ach, der wird über I2C drangefummelt und per Linux-Bitbang Script aufm 
GPIO ausgelesen.

Und wenn die Regelung nur 10% Prozessorzeit bekommt holt man sich nen 
Dualcore und setzt die Thread-Prio auf den höchstmöglichen Wert.

Nee jetzt mal im Ernst: Besorgt euch nen Mikrocontroller, mindestens ein 
Multimeter, mindestens ein 2-Kanal Oszilloskop und fangt an den 
Ist-Zustand zu verstehen.

Dass der Motor bei Last stehenbleibt ist klar, das ist ne 
Synchronmaschine und sobald der maximale Lastwinkel überschritten ist, 
schlupft die nur noch und juckelt sich höchstens nochmal in Tritt. Tipp: 
Strobo-LED draufhalten und ansehen. Ist bei nem 1kW Motor beeindruckend, 
auch von der Lautstärke her.

von Michael B. (laberkopp)


Lesenswert?

Daniel G. schrieb:

> Die Hall-Spannung wird ja vergleichsweise gering sein und kaum Leistung
> haben, ich bräuchte einen kleinen Verstärker, oder? Allerdings darf der
> Verstärker nicht kaputt gehen, wenn die Wicklung gerade befeuert wird...

Es ist keine Hall-Spannung. Wenn der Motor Hall-Sensoren hätte, hätte er 
ordentlich geschaltete digitale Signale. Wenn man die dritte Wicklung 
auswertet, ist der Motor eben ohne Hall Sensoren sensorless, und die EMK 
Spannung der dritten Wicklung ist bei kleinen Drehzahlen eher klein, so 
daß man kleine Spannungen erkenne muss, die man nicht unbedingt 
verstärken muss, aber in einem empfindlichen Komparator steckt. 
Nachteil: Hat man keine Hallsensoren (oder Lichtschranken) läuft der 
Motor nur an, wenn er im Leerlauf ist (Propeller, Plattenstapel, 
Fräser/Bohrer) und nicht unter Last (Radantrieb), weil man ihn zuerst 
mit einem Impuls auf eine zufällige Spule bewegen muss, um dann 
irgendwann zu erkennen in welche Richtung er sich drehte. Und wenn die 
Richting falsch war, muss man es nochmal probieren, bevor man anhand des 
Komparatorausgangs "Gas geben" kann.

Die übliche Literatur
http://www.gaw.ru/pdf/Atmel/app/avr/AVR444.pdf

> Könnte man auch eine Lichtschranke an den Rotor Bauen, die pro 30°
> Drehung ein Signal gibt

Ja. Am einfachsten 3 Lichtschranken. Dann braucht man gar keinen uC oder 
Spezialchip sondern kann die 3 Halbbrücken direkt mit den 
Lichtschrankensignalen steuern, die Drehzahl ergibt sich aus der 
Versorgungsspannung. Schliesslich ist ein BLDC nichts anderes als ein 
Gleichstrommmotor, nur daß der Kollektor eben ein elektronischer 
Umschalter ist. Und beim Gleichstrommmotor sind die Kupferflächen und 
Kohlebürsten des Kollektors auch fest montiert ohne Zauereri.

> (Wir wollen das Ganze mit einem RasberrryPi steuern, genug
> Ausgangsfrequenz hat er.)

Nun ja, für Vektorregelung (wie von Peter II empfohlen) nicht.

Lies halt was:
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.10.1

von Daniel G. (daniel4161)


Lesenswert?

Alles klar, vielen Dank!
Das mit den Lichtschranken war der entscheidende Tipp.

von Peter II (Gast)


Lesenswert?

Michael B. schrieb:
> Ja. Am einfachsten 3 Lichtschranken. Dann braucht man gar keinen uC oder
> Spezialchip sondern kann die 3 Halbbrücken direkt mit den
> Lichtschrankensignalen steuern, die Drehzahl ergibt sich aus der
> Versorgungsspannung. Schliesslich ist ein BLDC nichts anderes als ein
> Gleichstrommmotor, nur daß der Kollektor eben ein elektronischer
> Umschalter ist. Und beim Gleichstrommmotor sind die Kupferflächen und
> Kohlebürsten des Kollektors auch fest montiert ohne Zauereri.

ist dann aber nicht nur immer eine Spule unter Strom? Laufen wird das 
bestimmt irgendwie, aber bestimmt nicht optimal.

von jo (Gast)


Lesenswert?

>Das mit den Lichtschranken war der entscheidende Tipp.

Glaubst du.

von Michael B. (laberkopp)


Lesenswert?

Peter II schrieb:
> ist dann aber nicht nur immer eine Spule unter Strom?

Nö.

Kann (und wird man klugerweise) von den Umschaltstellen her genau so 
bauen wie einen bürstenbehafteten Gleichstrommotor.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die drei Stränge können insgesamt 6 Zustände (Sektoren) einnehmen. Wenn 
man sich mit der sensorlosen Ansteuerung (die die Festplattenbauer 
natürlich nehmen, weils billiger ist) nicht einlassen will, nimmt man am 
besten 3 (Reflex-) Lichtschranken, die man so auf Muster richtet, die 
aussehen wie im AVR447 Diagramm:
http://www.atmel.com/images/doc8010.pdf

: Bearbeitet durch User
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.