Hallo zusammen, ich hab mir hier ein paar Threads zu dem im Betreff genannten Thema durchgelesen, bin aber nicht wirklich weiter gekommen. Mein Vorhaben ist ganz einfach: ich will einen Festplattenmotor mit einem Arduino ansteuern (optional auch zwei, die sind identisch). Es ist ein Arduino Duemilanove mit einem Atmega328 drauf. Ich bin auf folgende Schaltung hier gestoßen, weiß aber nicht, wie ich das auf den Arduino übertragen kann: http://www.mikrocontroller.net/attachment/25613/hdd_avr.gif Und beim Thema Quellcode weiß ich auch nicht so recht, wie ich anfange. Kann mir hier vielleicht jemand behilflich sein? Danke und Mfg Andy
Hallo Andy, unten links im Bild sind die drei Halbbrücken, die den Drehstrom erzeugen. R10, R11, R12 sind die Rückführung der Gegen EMK Schau mal bei BLDC nach. Axel
Soweit ich das richtig verstanden habe, brauche ich für R10-12 jeweils einen Analog-Pin (in der Schaltung Pins 23-25), doch wozu ist Pin 12? Desweiteren ist mir das mit den Pins 14-19 nicht ganz klar. Brauch ich dafür PWM, oder werden die "ganz einfach" geschaltet? Ungeachtet davon, was nun der Fall ist: Wie bringe ich den Arduino dazu, die BEMF auszumessen und danach zu schalten? Dann ist da noch das abgerauchte Netzteil, was mir sorgen macht...ich hab meinem Arduino mal gesagt gehabt, er soll die drei Pins einfach nacheinander an und ausschalten (Motor mit y-Windung). An den drei Pins hingen dann 3 MOSFETs, die die "Pins" von der Platte angesteuert haben. Hab irgendwie außer acht gelassen, dass die Spulen vom Motor jeweils 2 Ohm Widerstand haben...das hat den Spulen im Netzteil bei 12V nicht so sehr gefallen...gut, das Netzteil war ja auch bloß auf 800mA ausgelegt. Deshalb hier auch die Frage, wie genau die Stromversorgung auszusehen hat.
Hallo Andy,
ohne das Programm für die angegebene Schaltung zu kennen, würde ich
sagen, dass das Weiterschalten des "Drehstroms" per Analog-comparator am
Pin 12 gemacht wird, da die Analogeingänge dazu zu langsam sind.
>er soll die drei Pins einfach nacheinander an und ausschalten ?
im Bild sind 6 Ausgänge an den Brücken, was meinst Du mit "Motor mit
y-Windung"?
Hast Du kein Labornetzteil mit Strombegrenzung zum Testen?
Axel
Hi Axel, Ok das mit dem Analog-Comparator wird mir zu hoch. Bin noch nicht so lange damit beschäftigt. Na es gibt Motoren, die nur drei "Pins" haben (wye-Windung). Da muss dann nicht nur für einen Pin die Spannung geschaltet werden, sondern für einen anderen die Masse, denn es sind ja 3-Phasen-Motoren, ergo muss bei 3 Pins irgendwo die Masse herkommen. Die von mir verlinkte Schaltung ist auf diese Motoren ausgelegt. Sie beinhaltet 6 Transistoren, die geschaltet werden müssen. Dann gibts da noch Motoren, die auch 3-Phasig sind, jedoch einen vierten Pin haben, der dann die gemeinsame Masse bildet (y-Windung). Heißt man muss nur noch drei Transistoren schalten, anstatt, wie bei den wye-Motoren, 6. Nein ein Labornetzteil habe ich leider nicht. Wär mir auch ein wenig zu teuer glaube ich. MfG Andy
Hallo Andy, wenn Du nur drei Transistoren zur Ansteuerung hast, dann schalte sie der Reihe nach durch. Wenn Du nicht messen willst, reicht es am Anfang sicherlich, wenn du die Drehzahl langsam hochfähst. An das gemeinsame Ende der Wicklungen kann dann ein Widerstand zur Strombegrenzung, dann kann nichts passieren. Axel
Na Transistoren hab ich genug. Und zur Not kann ich mir noch welche besorgen. Das mit der Reihe nach durchschalten habe ich auch schon gemacht. Ich hab ja dem Arduino gesagt, er soll die Pins nacheinander an-, bzw ausschalten und dazwischen ne Zeit lang warten. Ich hab den Motor mit den MOSFETs und 12V Spannung so weit stabil bekommen, dass ich mit einem Intervall von 5ms schalten konnte, ohne, dass er anhält. Wenn ich richtig annehme, hat der Motor 6 Spulen, die paarweise jeweils eine Phase bilden. Wenn ich mich nicht verrechnet habe, ergibt das ca 2000rpm. Und es sind Motoren aus 10krpm-Platten. Das blöde beim langsamen Hochfahren (zumindest bei 12V) ist, dass der Motor zu ruckartig springt, was oft dazu geführt hat, dass er eine der Spulen übersprungen hatte und beim Einschalten der nächsten auf einmal in die andere Richtung wollte. Das Mit dem Widerstand habe ich auch schon überlegt, nur sind da zwei Probleme: Zum einen haben die Spulen vom Motor nicht genug Eigenwiderstand, sodass beim anklemmen eines 220 Ohm Widerstandes nix mehr für den Motor übrig blieb (hab grad nix kleineres da). Zum anderen will ich auch die 3-Pin Motoren betreiben können und die haben keinen gemeinsamen Massepin.
Schon mal überlegt den original motor-Treiber der Festplatte zu benutzen (falls das ein extra IC ist)? möglicherweise kann man sich da dran hängen.
Ich hab hier noch die komplette Elektronik von einer der Platten liegen. Nur sind es allesamt SMD-Bausteine, und ich hab hier keinen SMD-Ofen, um den Chip runter zu bekommen...geschweige denn, den wieder irgendwo anders zu verwenden. Und es geht mir eh mehr um den Lerneffekt und um das Prahlen hinterher, dass ich es geschafft habe :P Ist ja keine Kunst, einen Chip zu verwenden, der für das Antreiben des Motors entwickelt wurde.
Hätt ja sein können, dass du den Motor für was bestimmtes verwenden willst. Nur mit anlegen eines Drehstromes ist es ja nicht getan. Eigendlich muss ja auch überwacht werden, ob der Rotor das tut, was du von ihm willst. Die Überwindung der Trägheit am Anfang ist ein Beispiel. oder dass der Motor auch sauber Weiterdreht, wenn du ihn belastest. daher würde ich versuchen, den Treiber samt beschaltung so zu verwenden, wie er auf der Platine ist. Den Controller und was sonst noch stört runter schmeißen und die eigenen Leitungen and die ehemaligen Controller-Pads
Wie gesagt...den HDD-eigenen Controller zu verwenden ist nicht mein Ziel. Und ich bezweifle, dass das Board noch funktioniert, es sieht ein wenig ramponiert aus. Und auch wenn, dann hätte ich pProbleme mit der Stromversorgung, weil es eine alte SCA-SCSI-Platte ist. Da versuch mal rauszufinden, wo was liegt.
Seh ich das richtig, dass ich bei "Schritt" Eins, einen N-Transistor (U) zusammen mit den (V) und (W) P-Transistoren schalte? * 1 2 3 U N P P V P N P W P P N Reicht da eine Schaltfrequenz von 1kHz aus? Also (U)-N für eine Millisekunde high, dann (V)-N high und letztlich (W)-N für eine ms? Für den Anlauf dann 10kHz PWM, mit 50% Duty, um die Wicklungen beim Anlauf nicht zu gleich zu grillen (Andy, vielleicht hat genau das dein Netzteil abgeschossen. So wie ich das verstanden habe, darf man BLDC Motoren nicht mit voller Leistung anlaufen lassen). Letztlich würde natürlich alles auf 10kHz fahren. Beim Anlauf (U)-N 1ms high bei 50% Duty, dann (V)-N 1ms mit 50% etc. Ist der Motor auf Drehzahl und die EMK folgt dem Drehfeld, könnte man auf 100% Duty gehen. Könnte das so klappen? Gruß
1 2 3 4 5 6 U 1 1 0 0 0 1 V 0 1 1 1 0 0 W 0 0 0 1 1 1 sollte laufruhiger sein, da doppeltes, ausgeglicheneres Stepping. Evtl. auch mehr Drehmoment bei schnell drehendem Motor. Jo
Lazlo Panaflex schrieb: > Seh ich das richtig, dass ich bei "Schritt" Eins, einen N-Transistor (U) > zusammen mit den (V) und (W) P-Transistoren schalte? Ne nicht ganz. Gehen wir mal von der oben verlinkten Schaltung aus: Transistoren Q1-Q6. Heißt beim ersten Schritt wird Q4 und Q2 geschaltet. Somit hat man erstmal einen Kreis. Q1 wär ja schwachsinnig und Q3 wird nicht geschaltet, weil sonst das BEMF gegen Masse geht, ergo nicht messbar wird. Zur Frequenz: Ich hab mir das ausgerechnet und bei 6 Spulen, die Paarweise eine Phase bilden, müsste ich mit einem Intervall von 1ms schalten, um auf 10krpm zu kommen.
Q4 zusammen mit Q2 macht Sinn, danke. Die Spannung fließt demnach bei U rein, durch die Spule und bei V wieder raus gegen Masse.
Ach und mir ist noch aufgefallen, dass doppeltes Stepping, wie Jo es beschrieben hat, bei einem 3-Pin Motor nicht funktionieren kann, da man keine Zwei Phasen gleichzeitig auf 1 Schalten kann. Das würde nur bei einem 4-Pinner gehen, weil es da eine gemeinsame Masse gibt. Also bin ich jetzt so weit, dass ich sagen kann, dass die Pins 14-19 (siehe Link im ersten Post) "normal" geschaltet werden, da PWM irgendwie nicht viel Sinn macht. Was ich noch nicht weiß, ist, was ich mit Pins 12 und 23-25 mache. 23-25 Analog IN? Aber wozu ist dann 12 gut? Irgendjemand hatte hier was von einem Analog-Comparator geschrieben, doch komme ich nicht dahinter, wie das Teil anzuwenden ist.
Ich denke mal, das ist mit dem analogcomparator so gemeint wie in: http://mikrokopter.de/ucwiki/BrushlessCtrl unter Rotorlageerkennung... Genaueres dort nachlesen (ich habs auch noch nigcht verstanden ;-) )
Ich wunder mich gerade, warum ich nicht vorher auf die Seite gekommen bin -.- Die haben da auch Quellcodes für die Brushless-Controller...die kann man sich bestimmt anpassen.
Andy schrieb: > da PWM irgendwie > nicht viel Sinn macht Hab vorhin diesen Link gefunden. http://www.aerodesign.de/peter/2001/LRK350/SPEEDY-BL.html#Anker1592725 "Bei Anlauf kann man dem stehenden Motor nicht die volle Akkuspannung draufknallen. Sonst ist seine Wicklung sofort verbrannt." Frage ist, ob dies auf alle BLDC zutrifft.
Hallo Andy, ich stehe gerade vor dem gleichen Problem. Bist du mitlerweile auf eine Lösung gekommen? Wie bringe ich den Arduino dazu, die BEMF auszumessen und danach zu schalten? Hast du eventuell auch einen Skript für den Arduino den du mir mal zeigen könntest? (zum Vergleichen mit meinem Skript)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.