PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotor aus CD Laufwerk ansteuern



wischwasch
26.07.2007, 20:33
Hallo zusammen
Ich versuche im Moment mir das AVR Programmieren beizubringen. Nun wollte ich als Übung versuchen einen Schrittmotor anzusteuern. Damit ich kein Geld ausgeben muss, suchte ich im Elektroabfall nach estwas brauchbarem und fand ein Teil eines CD Laufwerkes. Daran fand ich zwei Schrittmotoren. Den einen um die CD zu drehen, und der andere um den Lesekopf nach vorne und hinten zu bewegen.
Der für den Lesekopf hat 4 Anschlüsse und ist demzufolge ein Bipolarer Schrittmotor. Dieser ist mir klar, wie man den ansteuern muss (zumindest in der Theorie :-) ). Aber der andere Schrittmotor hat 12 Anschlüsse. Nun hab ich keine Ahnung, welcher Anschluss was ist und wie ich ihn ansteuern muss. Hat jemand von euch eine Ahnung wie das geht?
Und meine zweite Frage: Mit was für ein Strom/Spannung würdet ihr versuche diese Motoren zu betreiben?

Danke schon im Voraus.

IRQ
31.07.2007, 22:43
Von Schrittmotoren mit 12 Anschlüssen habe ich noch nie gehört. Vielleicht hilft Durchmessen mit dem Multimeter (auf Widerstand), bzw dann Strom durch ein Leiterpaar schicken und gucken, was passiert. Zu den Werten für Spannung und Strom kann man natürlich ebensowenig sagen, im PC hängt das Laufwerk jedenfalls an 12 V; vielleicht mal etwas kleiner anfangen...

Nicht sehr hilfreich, aber mehr weiß ich auch nicht.

stefan_Z
01.08.2007, 03:05
Ja, DIE Ansteuerung würde mich auch mal interessieren....
Habe hier noch bestimmt 8 von den Modulen rumliegen - zuzüglich einiger alter Laufwerke.

Die eigentliche Ansteuerung erfolgt glaube ich über nur drei Anschlüsse - die drei Wicklungen sind an ihren Enden alle verbunden (ansonsten mit nichts, wenn ich mich nicht irre!?).
Die restlichen Pins der Motormodule sind mit Hallsensoren verbunden - zieh mal den Rotor vom Strator ab, dann kann man die meist gut sehen.
Die Hallsensoren braucht man wohl zwingend für diese Art Motor, damit die Steuerung weiß, welcher Pol wo liegt..
Wie genau jetzt eine Steuerung für diese Motoren aussehen muss, dass weiß ich leider auch nicht. Ich würde aber SEHR gerne mal eine bauen!

Gibts da vielleicht einen Schaltplan zu? Oder ist das so aufwändig, dass man besser eines der Steuer-IC aus dem CD-ROM verwenden sollte?

Nach längerem Suchen habe ich jetzt auch mal was zum Thema gefunden:
http://de.wikipedia.org/wiki/Gleichstrommotor#B.C3.BCrstenlose_Gleichstrom-Maschinen

tucow
01.08.2007, 03:10
Suche doch mal im Netz nach einem Datenblatt.
Auf dem Motor steht doch bestimmt ein Hersteller und die Modellbezeichnung drauf.

stefan_Z
01.08.2007, 03:27
OK, hab doch noch mehr gefunden... Bei der Konkurrenz ;-)
http://mikrocontroller.cco-ev.de/de_mk/download.php#BL
Das Modul BL-Ctrl (Motor-Regler) wäre das gesuchte Stück Technik... Bauteilkosten rund 10 Euro bei Reichelt.
Alles in allem scheint das weitaus komplexer zu sein als es zuerst erscheint.

nikolaus10
01.08.2007, 08:16
Hallo
Der Motor fuer das cd Laufwerk ist eher kein Schrittmotor sondern mehr ein Brushless Antrieb. Wurde frueher sehr gern zur Modefizierung zu einem Hochleistungsmodellmotor genommen.
Sinnvoll kannst du nur den Schrittmotor des Kopfantriebes verwenden.
Dazu koenntest du aber auch den Kopfschrittmotor von alten Diskettenlaufwerken nehmen.
MFG

stefan_Z
01.08.2007, 13:47
Nunja.. der Brushless-Motor macht bestimmt Sinn - wenn man ihn mal zum laufen kriegt... Was ja der Sinn dieses Threads ist ;-)

nikolaus10
01.08.2007, 14:48
Sinnvoll ist vieles.
Der Sinn dieses Threads scheint es ja zu sein, einen Schrittmotor per AVR anzusteuern.

Brushless werden auch heufig mit AVR angesteuert , nur passt das wiederum nicht mit dem Anfaengermodus, in dem sich der UP befindet.

stefan_Z
02.08.2007, 02:52
Brushless werden auch heufig mit AVR angesteuert , nur passt das wiederum nicht mit dem Anfaengermodus, in dem sich der UP befindet.
Ja, das ist das Problem.. die Dinger sind recht komplex in der Steuerung. Aber er hat ja explizit nach dem Brushless gefragt, den normalen Bipolaren kann er ja ansteuern (in der Theorie ;-) ).

So genau hab ichs auch noch nicht geraft, wie man den Bruhless betreibt... ein Link zur Theorie wäre cool, Wikipedia ist eher knapp gehalten.

avion23
02.08.2007, 13:14
Links? Google ist hilfreich, ich habe mir die Arbeit schon gemacht.
Für die englischsprachigen:
http://www.rcgroups.com/forums/showthread.php?t=240993
Meine beste Quelle bis jetzt:
http://www.southernsoaringclub.org.za/ dann auf articles - electric motors X
Atmel hat verschiedene Controller, die genau darauf ausgerichtet sind. Und natürlich die passenden Apptnotes, mit Code, Berechnungen und allem drum und dran. Einfach selber bei atmel suchen. Man braucht aber ein paar mehr Teile als nur einen µC.

stefan_Z
02.08.2007, 14:01
cool! danke für die Links!
Dass man da mit google vieles findet, ist klar, aber welcher Link gut ist, dass muss man dann erstmal rausfinden...

wischwasch
02.08.2007, 23:43
Dsnke erst mal für die Antworten.
Zuerst hatte ich Angst dass ich keine kriegen werde und nach 5 Tagen kommt eine nach der anderen :-)
Da dis mit dem 12 Kabeligem Motor wohl etwas schwiriger ist, werde ich mit diesem noch etwas warten. Mir geht es ja vorallem darum, etwas übung im AVR programmieren zu bekommen und etwas über den Schrittmotor zu lernen (Theorie kenne ich, aber die praxis noch nicht :-))

Was das Datenblatt angeht: leider steht auf dem Motor garnichts :-(

Noch eine andere Frage: Was ist genau der Unterschied zwischen einem Schrittmotor und einem Brushless Motor?
Im Prinzip sind doch beides bürstenlose Motoren mit drehendem Dauermagnet und einem rotierendem elektromagnetischem Feldangetrieben werden. Also eigendlich das selbe, ausser das Schrittmotoren auf genaue Positionierung und Brushless auf hohe Leistung und Drehmoment ausgerichtet sind.

stefan_Z
03.08.2007, 00:07
Ja, der schrittmotor hat kein Problem mit der Positionsbestimmung und rastet ja auch ein - der Brushless tuts ohne Positionsbestimmung garnicht.

wischwasch
03.08.2007, 00:13
Aber Grundsätzlich sind sie genau gleich aufgebaut und könne dementsprechend ähnlich angesteuert werden?

stefan_Z
03.08.2007, 00:25
Nein, beim Brushless muss man glaubich neben dem Timing auch noch umpolen usw..
Der kleine Schrittmotor vom Lesekopf tuts schon ohne zusätzliche Elektrik am AVR (höllisch unsauber, aber wenn man eh genügend Tiny2313 rumliegen hat...)... Einfach zwei Pins hoch, zwei runter und das abwechselnd.

stefan_Z
03.08.2007, 01:44
Also ich habe mir mal die Artikel unter http://www.southernsoaringclub.org.za/articles.html durchgelesen... soweit verstehe ich es jetzt zumindest.
Im Prinzip bräuchte man sechs Transis/Mosfests - je drei P und drei N.
Damit kann man die drei Motorwindungen entweder (+) oder (-) beschalten und auch gut Saft draufgeben.
Einfachst anzusteuern wäre es mit 6 AVR Pins die dann immer fein im Takt die Spulen schalten.

Was ich allerdings nicht genau rausfinden konnte, ist ob man die Positionsbestimmung zwingend braucht oder nur zum optimalen Betrieb.

avion23
03.08.2007, 12:21
Hi Stefan, schau dir auch die anderen links mal an. Das Thema ist nich ohne, ich habe es noch nicht geschafft.

Ein BLDC ist ein Drehstrommotor. Du hast im Idealfall 3 phasenverschobene Sinus(e). Der Rotor (ob außen oder innen ist egal) wird mit der Geschwindigkeit des Drehfeldes vorneweggeschoben. Wenn das Feld zu schnell dreht, und das Magnetfeld zu schwach bzw. die Last zu groß, dann "verliert der Rotor einen Schritt". Beim nächsten stimmt die Ansteuerung dann überhaupt nicht, er wird abgebremst, stark beschleunigt, evtl. dreht sich sogar die Drehrichtung um. Das ganz äußert sich dann in sehr unrundem Lauf oder lautem Brummen (habe ich nur gelesen, ich weiß nichts!). Die Positionsbestimmung ist also zwingend notwendig.

Das Drehfeld wird mit 3 Halbbrücken aufgebaut. Wie deine Halbbrücke aufgebaut ist, ist relativ egal. Du kannst für den highside switch einen P-kanal fet nehmen. Meistens werden aber n-Kanal fets verwendet, weil die bessere technische Werte haben. Für diese braucht man dann noch eine GS Spannung von ungefähr 10V-15V. Du kannst auch pnp und npn Transistoren verwenden ;)
In jeder Halbbrücke gibt es drei Zustände: Oben leitend, unten leitend, oder beide offen. Wenn du von z.B. oben leitend nach unten leitend wechseln möchtest, musst du eine Dead-time einbauen. Die meisten mosfet treiber haben diese schon integriert. Das Problem ist nämlich, dass im Umschaltmoment beide noch leiten: Im Gate des oberen fets sind noch genug Ladungsträger, und im unteren auch. D.h. du schließt über die beiden Mosfets deine Spannungs/Stromquelle kurz. Was dann passiert kannst du dir sicher vorstellen...
Die Wicklung im Motor wirkt bis zur Sättigung des Kernmaterials wie eine Spule. Das hat den Vorteil, dass du den Motor ähnlich wie einen Stepdown Wandler mit hoher Spannung ansteuern kannst, ohne große Verluste zu haben. Leider brauchst du auch eine Diode, die die Rückinduktionsspannung auffängt und sinnvoll verwendet, d.h. entweder in der Spule zirkulieren lässt oder in die Spannungsversorgung zurückspeist. In dem Punkt bin ich mir aber nicht ganz sicher.
Die Positionsbestimmung brauchst du. Diese wird immer über die gerade stromlose Spule durchgeführt. Wenn der Motor sich dreht, baut sich in den Spulen wegen dem sich ändernden Magnetfeld eine Spannung auf, die der erzeugenden entgegenden gerichtet ist. Das nennt sich EMF oder EMK, der Motor wirkt also in der gerade "freien" Spule als Generator. Über diese Spannung kann man feststellen, an welcher Position der Rotor sich gerade befindet, und wann er weitergeschaltet werden muss. Meistens wird der Nulldurchgang festgestellt. Für diesen Zweck habe ich eine schöne Schaltung gesehen, die ohne Opamps auskommt: Die 3 Spulen werden an eine Widerstansmatrix angeschlossen. Es bildet sich ein virtueller Massepunkt wegen der Spannungsteiler. Diesen kann man an den Komperator des ADC anschließen.
Leider ist diese EMF Spannung drehzahlabhängig, wie bei jedem Generator auch. Deswegen ist es sehr schwierig einen BLDC zu starten. Das Problem wird entweder mit Hall-sensoren zur Positionserkennung oder mit Zwanskommutierung gelöst. Letzteres heißt einfach, dass die EMF signale nicht ausgewertet werden, sondern das Drehfeld langsam beschleunigt wird und man hofft, dass der Rotor schon mitkommt. Das könntest du am Anfang auch machen, damit das Teil sich überhaupt mal dreht :)

Wenn du das ganze lösen willst, dann benutz einen Brushlessmotor mit hohem Spulenwiderstand. Sorg dafür, dass die Spannungsversorgnung des µC und der mosfet-gates unabhängig von der Spannungsversorgung der Motorspulen ist. Sonst stürzt dir im Fehlerfall der µC sofort ab und die FETs... naja. Wenn du nur 6 AVR Pins verwendest musst du die deattime, die von den mosfets abhängt, in deinem Programmcode einbauen, was ziemlich fehleranfällig ist. Du brauchst für jede Halbbrücke nur einen PWM kanal und einen Switch, z.B. pwm oben, switch unten. Bevor jemand mekert: richt macht man es mit NAND Gatern, ich weiß :( Wenn du nur geringe Leistungen verwendest, könntest du für den Anfang normale bipolare Transistoren verwenden, die du als Schalter treibst. Dann kannst du dir den Treiber für die Mosfet Gates sparen.

So genug gelabert. Ich habe noch nie einen BLDC gesehen, keinen brushless controller gebaut. D.h. vieles von dem was ich geschrieben habe, muss falsch sein. Wenn jemand Fehler entdeckt, oder etwas ergänzen möchte, nur zu... Ich wollte dir, Stefan, nur das grobe sichten der Informationen ersparen. Wenn du's geschafft hast kannst du ja schreiben wie ;)

stefan_Z
03.08.2007, 14:35
Wow! Danke für die Infos! Das ist ja echt nix für Mädchen!
Denke, ich werde mir mal die Platine bei mikrocontroller.net bestellen, dann hat man zumindest schonmal funktionierende Hardware.
Der Thread ist bestimmt auch ein interessantes Google-Fundstück für all die Anfänger, die gerne diese Motoren benutzen würden.