Forum: Mikrocontroller und Digitale Elektronik Festplattenmotor mit arduino UNO ansteuern


von HeMu L. (hemu_l)


Lesenswert?

Hallo liebes Forum,
ich habe einen alten Festplattenmotor und möchte diesen mit einem 
Arduino UNO ansteuer. ich habe einen der 4 Anschlüsse an GND 
angeschlossen und die anderen 3 jeweils an Pin 9, 10 und 11. Der Code 
ist fogendermaßen:
1
int pin_mot1 = 9;
2
int pin_mot2 = 10;
3
int pin_mot3 = 11;
4
5
6
void setup()
7
{
8
  pinMode(pin_mot1,OUTPUT);
9
  pinMode(pin_mot2,OUTPUT);
10
  pinMode(pin_mot3,OUTPUT);
11
}
12
13
void loop()
14
{
15
  digitalWrite(pin_mot1,HIGH);
16
  delay(2000);
17
  digitalWrite(pin_mot1,LOW);
18
19
  digitalWrite(pin_mot2,HIGH);
20
  delay(2000);
21
  digitalWrite(pin_mot2,LOW);
22
23
  digitalWrite(pin_mot3,HIGH);
24
  delay(2000);
25
  digitalWrite(pin_mot3,LOW);
26
}

Leider summt der Motor nur vor sich hin. Eigenlich müsste eine Spannung 
ausreichen. Durch einfaches Anlegen einer Spannung von 3,3V mit einem 
Kabel springt der Motor immer in die nächste Position.

Danke im Voraus
HeMu

von Bitte einen Namen eingeben (nicht "Gast") oder ein (Gast)


Lesenswert?

schafft der AVR den Motorstrom?

von Master of DSP (Gast)


Lesenswert?

Viellicht reicht der Strom des Boards nichts aus? Eine Batterie oder 
Akku liefert viel höhere Ströme...

MfG

Andreas

von Wolfgang (Gast)


Lesenswert?

Vielleicht ist es ein bipolar anzuschließender Schrittmotor. Dann wäre 
"ein Anschluß fest an Gnd" sicher nicht die richtige Wahl.
Dem µC würde ich den Wicklungsstrom allerdings in keinem Fall direkt 
zumuten.

von HeMu L. (hemu_l)


Lesenswert?

Danke für ihre schnelle Anworten
Der Strom des arduinos reicht aus, da ich es ja geschafft habe, den 
Motor "manuell" anzusteuern. Dies habe ich mit dem 3,3V Anschluss des 
Arduino geschafft. Währe es besser, das ganze mit Transistoren zu 
steuern?

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


Lesenswert?

HeMu L. schrieb:
> Währe es besser, das ganze mit Transistoren zu
> steuern?

'Wäre' :-P
Ja, auf jeden Fall- Erstens erzeugt der Motor beim Abschalten der 
Spulenspannungen Spannungspitzen, die direkt zurück in den MC auf dem 
Arduino Board gehen und diesen zerstören können und zweitens benötigt 
der HDD Motor wesentlich mehr Strom als die max. 40mA, die ein AVR 
liefern kann.
Da es aber genug Beispiele für kleine Motorendstufen und Arduino gibt, 
solltest du danach einfach mal suchen.
Und du solltest PWM benutzen. Je nach Drehzahl des Motors darfst du 
nicht einfach volle Ströme an die Wicklungen anlegen, da der Motor sonst 
richtig warm wird und uneffektiv läuft. Schau mal nach 'sensorlosem 
BLDC', um das Prinzip zu verstehen. Der MC braucht eine Rückmeldung vom 
Motor, um die SPulen richtig zu kommutieren.

von Jürgen S. (jurs)


Lesenswert?

HeMu L. schrieb:
> Leider summt der Motor nur vor sich hin. Eigenlich müsste eine Spannung
> ausreichen. Durch einfaches Anlegen einer Spannung von 3,3V mit einem
> Kabel springt der Motor immer in die nächste Position.

Strom!

Der Motor zieht viel mehr Strom als die 20mA, die Du aus einem 
Arduino-Output herausziehen darfst!

Mach noch mehr solche Experimente, und alle diese Pins:
int pin_mot1 = 9;
int pin_mot2 = 10;
int pin_mot3 = 11;
werden Dir abrauchen.

Das ist eine gesteuerte selektive Zerstörung von drei Ausgängen des 
Mikrocontrollers, was Du da als Experiment laufen hast.

von Walter (Gast)


Lesenswert?

HeMu L. schrieb:
> Der Strom des arduinos reicht aus, da ich es ja geschafft habe, den
> Motor "manuell" anzusteuern. Dies habe ich mit dem 3,3V Anschluss des
> Arduino geschafft.

der 3,3V Anschluss liefert natürlich mehr Strom als ein uc-Ausgang,
da muss ein Treiber dazwischen und das Programm für einen BLDC ist auch 
etwas umfangreicher!

von Jürgen S. (jurs)


Lesenswert?

Walter schrieb:
> da muss ein Treiber dazwischen

Das ist vollkommen richtig.

Ich würde es als Treiber mal mit einem Darlington-Array Chip wie 
ULN2003A oder ULN2803A probieren. Die drei Arduino-Pins an drei Eingänge 
des Darlington-Treibers hängen und mit den Ausgängen den Motorstrom 
schalten lassen.

> und das Programm für einen BLDC ist auch etwas umfangreicher!

Nein, das Programm ist schon OK, um eine Festplatte so zum Drehen zu 
bringen, dass man es sehen kann. Mit Delayzeiten bis runter zu 100ms 
sollte es einwandfrei klappen, dass der Motor Schritt für Schritt 
steppt. Langsam, aber dreht sich.

Natürlich kann er mit diesem Programm die Platte nicht bis auf ihre 
Nenndrehzahl beschleunigen, das funktioniert so natürlich nicht.

von H4wK (Gast)


Lesenswert?

Der Beitrag ist zwar schon etwas her aber die Antworten stimmen. Der 
Motor einer Festplatte zieht deutlich mehr Strom als das Board ausgeben 
kann. Das Einfachste wäre, wenn man die Festplatte an ein Netzteil 
hängen würde. Da reicht dir schon ein billiges aus ebay.
(Nicht vergessen den Stecker für das Mainboard kurz zuschließen;) )

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


Lesenswert?

H4wK schrieb:
> Das Einfachste wäre, wenn man die Festplatte an ein Netzteil
> hängen würde. Da reicht dir schon ein billiges aus ebay.
> (Nicht vergessen den Stecker für das Mainboard kurz zuschließen;) )

Das ist natürlich Unsinn. Einen Festplattenmotor kann man nicht einfach 
'an ein Netzteil anschliessen', denn ein BLDC braucht eine Elektronik, 
die die Weiterschaltung der Spulen erledigt. Da BLDC keine Sensoren 
haben, wie z.B. Kopftrommel- oder Capstanmotore aus Videorecordern, ist 
der Trick, aus der Gegen-EMK (auch BMF genannt) die Lage des Rotors zu 
bestimmen.

von MaWin (Gast)


Lesenswert?

H4wK schrieb:
> Der Beitrag ist zwar schon etwas her aber die Antworten stimmen.

Na deine Antwort ist zumindest, trotz 2 Jahren Bedenkzeit, völliger 
Quatsch.
Ein handelsüblicher Festplattenmotor ist ein BLDC und läuft ohne dazu 
passende Ansteuerung gar nicht vernünftig.

Lies halt erst mal was, bevor du antwortest.

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

von Paul R. (atmega9)


Lesenswert?

Nur kurz gefragt: Gibt's die Motoren auch mit internem Controller?

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


Lesenswert?

Paul R. schrieb:
> Nur kurz gefragt: Gibt's die Motoren auch mit internem Controller?

Zumindest ein externes IC haben sie alle. Ob das dann direkt am Motor 
sitzt, oder über ein Kabel mit ihm verbunden ist, unterscheidet sich 
allerdings.

von Paul R. (atmega9)


Lesenswert?

Wie wäre es denn, wenn man das IC + den Motor rausrupft ( dann hat man 
auch eine Ansteuerung die passt) und später den Controller mit I2C, 
UART, Widerstandsgrab oder sonstwas ansteuert? Wäre das nicht viel 
einfacher? ( Diese Methode setzt das Vorhandensein einer derartigen 
Schnittstelle natürlich voraus)

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


Lesenswert?

Paul R. schrieb:
> und später den Controller mit I2C,
> UART, Widerstandsgrab oder sonstwas ansteuert?

Das könnte nur gehen, wenn du die Unterlagen des IC hast und dass ist 
gerade bei Festplatten so gut wie unmöglich. Ausserdem sind die HDD 
heute so hoch integriert, das wichtige Teile der Motorkontrolle in einem 
BGA oder LQFP mit 100 und mehr Anschlüssen verbuddelt sind - keine 
Chance.
Motorendstufen und die Ansteuerung sind ja auch keine Hexerei, sondern 
einfache Technik, die man mit ein paar kleinen MOSFet für so einen Motor 
hinkriegen kann. Im einfachsten Fall sind das 3 N-Kanal und 3 P-Kanal 
Mosfet und ein kleiner MC a là Mega88-328.
Der Festplattenmotor ist insofern eine Herausforderung, als das er keine 
Sensoren hat und deswegen auf eine Rückmeldung der BMF über AD-Wandler 
oder -Komparator angewiesen ist.

von Marc Heise (Gast)


Lesenswert?

Hallo liebe Gemeinde :)

mich interessiert dieses Thema auch,
angenommen der Festplattenmotor würde einen
Hallsensor als Positionsgeber verpassst bekommen,
wäre dann die Regelung von Amplitude und Frequenz einfacher?
Grüsse aus B

der Marc

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.