Forum: Mikrocontroller und Digitale Elektronik Schrittmotor direkt mit AT90USBKEY steuern


von (unknown) (Gast)


Lesenswert?

Hallo Community,

ich würde gerne wissen ob es möglich ist einen kleinen Schrittmotor ohne 
zusätzlichen Treiber mit einem Microcontroller zu steuern.
Über die Suchfunktion habe ich dazu leider nichts eindeutiges gefunden.

Hier ein paar Deteils.
Als Microcontroller verwende ich den AT90USBKEY2 von Atmel (90USB1287).
Der Schrittmotor ist wirklich klein und "zuckt" bereits ab 3V.
Der Strom den das Board vom USB anschluss bekommt sollte also ausreichen 
um den Motor zu bewegen. Zum Steuern habe ich an zwei H-Brücken gedacht 
(eine pro Spule). Leider habe ich keine 8 Schalter hier um einen Zyklus 
manuell durchzugehen, habe dies aber schon durch "Anhalten" zweier Kabel 
durchgespielt um zu sehen ob die Spannung ausreicht.
Das Steuern der Zuleitung ist kein Problem (4 Pins als Ausgang vom µC 
etc.) aber wie bekomme ich die Rückleitung geregelt? Geht das überhaupt?
Kann man einfach immer einen der restlichen 4 Pins auf Eingang schalten, 
so dass der Strom fließen kann? Sind die restlichen "Eingänge" dann 
geschlossen?

Ich hoffe man versteht was ich vorhabe ;)

Gruß Tobi

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Tobi!

Ich würde sagen, das kannst Du vergessen. Die Portpins können max. 20mA. 
Ich wüsste keinen Motor, der damit auskommt.

Mit freundlichen Grüßen
Thorsten Ostermann

von Werner (Gast)


Lesenswert?

Tobias St. schrieb:
> Der Schrittmotor ist wirklich klein und "zuckt" bereits ab 3V.

Spannung ist nicht Strom. Und der ist beim µC meist die limitierende 
Größe.

von (unknown) (Gast)


Angehängte Dateien:

Lesenswert?

Habe es eben noch einmal getestet, mit einem simplen Programm, dass 
einfach auf PinA0 Strom ausgibt. Soweit ich weiß liegt die Spannung, die 
bei den Ports ausgeht, bei etwa 3.3v? Habe leider keine Möglichkeit das 
zu messen.
Wenn man nun nach dem Prinzip der H-Brücke den Motor manuell anspricht, 
macht er jeweils einen Schritt. Sollten es wirklich nur 20mA sein, so 
reichen diese offenbar aus für einen Schritt.
Der Motor ist wirklich winzig. Zum Größenvergleich habe ich zwei Photos 
gemacht und jeweils ein Eurocentstück daneben gelegt. Das ursprüngliche 
Flexkabel habe ich entfernt und durch 1.27er Flachbandkabel ersetzt mit 
2.54er Stiften.
War die Aussage "Ich würde sagen, das kannst Du vergessen." nun nur auf 
die Stromstärke bezogen, oder scheitert es darüber hinaus noch an etwas 
anderem? ;)

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Ich wusste ja nicht, dass du ein "Motörchen" meintest. Was hat der denn 
für einen Nennstrom? Viel mehr als die 20mA dürften das ja nicht sein?

Mit freundlichen Grüßen
Thorsten Ostermann

von (unknown) (Gast)


Lesenswert?

Ja die Rede ist von einem Motörchen ;) Aber wie kann ich diesen nun 
Ansteuern? Geht das so wie ich das vorhabe? Soll ich einmal versuchen 
eine Zeichnung bzw. Schaltskizze anzufertigen, damit man weiß wie ich es 
meine?

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Thorsten Ostermann schrieb:
> Ich wusste ja nicht, dass du ein "Motörchen" meintest. Was hat der denn
> für einen Nennstrom? Viel mehr als die 20mA dürften das ja nicht sein?

Es gäbe da noch die ein bisschen unfeine Lösung, mehrere Pins 
parallelzuschalten. Etwas riskant, man muss halt auf die Software genau 
aufpassen, aber man spart dadurch evtl. ein paar Transistoren.

von (unknown) (Gast)


Angehängte Dateien:

Lesenswert?

So, ich habe es einmal Aufgezeichnet. Kann das Zusammenführen von Pins 
schäden am Board/µC verursachen? dann würde ich davon gerne absehen.

Die beiden Grünen "Balken" in der Skizze sollen die Spulen des Motors 
sein ;)

Die Idee war es die Pins auf der linken Seite als Ausgang zu schalten. 
Auf der rechten Seite wird jeweils der Pin, der Strom zurückführen soll 
als Eingang geschaltet.

Beispiel: DDRA = 0x8F
Sind nun Pin6, Pin5 und Pin4 im Tri-State, so dass dort kein Strom 
fließen kann, selbst wenn Spannung anliegt? Es geht ja darum so eine Art 
Schalter zu simmulieren.
Beim Ausgang des µC (beim Zufluss zum Motor) kein Problem. Drei Schalter 
offen, und einer geschlossen entspricht ja z.B.: PortA = 0b00001000.
Aber wie regel ich das beim rückfließenden Strom des Motors? Wie und 
wohin leite ich diesen geregelt ab?

von Werner (Gast)


Lesenswert?

Tobias St. schrieb:
> So, ich habe es einmal Aufgezeichnet. Kann das Zusammenführen von Pins
> schäden am Board/µC verursachen? ...

Ja, wenn aus Versehen, z.B. durch einen Programmfehler beide Pins als 
Ausgang geschaltet sind und der eine auf H, der andere auf L steht.

> Die Idee war es die Pins auf der linken Seite als Ausgang zu schalten.
> Auf der rechten Seite wird jeweils der Pin, der Strom zurückführen soll
> als Eingang geschaltet.

Da hast du etwas falsch verstanden. Damit Strom durch die Spule fließt, 
muß an jedem Ende ein als Ausgang programmierter PortPin hängen. Der 
eine von den beiden wird auf L gesetzt, der andere auf H.

In einen Eingang vom µC kann kein Strom fließen - es sei denn, die 
Spannung ist zu hoch, so dass Strom über die Schutzdioden abgeleitet 
wird.

von Tiom (Gast)


Lesenswert?

Hey, ich finde die Idee interessant. Und der Motor ist ja mal genial ;)

Aber warum sind 4 Treiber Transen bzw. 8 Transistoren (kann ja SMD sein) 
nicht drinnen ?

LG Tim

von Michael (Gast)


Lesenswert?

Tiom schrieb:
> Aber warum sind 4 Treiber Transen bzw. 8 Transistoren (kann ja SMD sein)
> nicht drinnen ?

Überleg mal, wieviel Platinenfläche das im Vergleich zum Motor 
erfordert.

So ein Datenblatt zu dem Teil wäre allerdings das Größte ...

von (unknown) (Gast)


Lesenswert?

Hallo,

nach einem Datenblatt habe ich schon gesucht, leider ohne Erfolg.
Gerne kann ich aber angeben was unten auf dem Motorgehäuse aufgedruckt 
ist:
GSM0601
NF   DC
Vielleicht hat ja hier jemand mehr Erfolg.

Mit L (low) und H (high) meinst du 0 und 1? Oder ist damit Active-low 
und Active-high, also ein Pull-Up bzw. ein Pull-Down gemeint? Ich hatte 
das so verstanden, dass man diese nur bei Eingängen dazu schalten kann, 
damit definiert ist was für eine Spannung anliegt, wenn kein Signal 
eingeht.
Ich bin wirklich blutiger Anfänger auf dem Gebiet. Programmieren "kann 
ich gut", aber bei Elektronik hört es bei mir auf ;)

Transistoren habe ich keine hier, und müsste dann erst einmal welche 
organisieren. Allerdings glaube ich, dass SMD meine mangelnden 
Lötfähigkeiten überschreiten würde. Wegen den Platzbedenken, man könnte 
ja Lackdraht nehmen, den Transistor anlöten und dann Schrumpfschlauch 
drüber ziehen, dann kann man dieses Bündel am Motorgehäuse ankleben oder 
so. Allerdings stelle ich mir unter einem Transistor zur Zeit so etwas 
wie eine Diode oder einen Widerstand vor (von der Größe).

Brauche also noch etwas Hilfe beim Verständnis ^^

Gruß Tobi

von (unknown) (Gast)


Lesenswert?

Nachtrag:
Was Transistoren sind weiß ich nun. Dennoch habe ich keine hier und 
hatte auch eigentlich gehofft dass keine weiteren Teile nötig sind.

von Michael (Gast)


Lesenswert?

Tobias St. schrieb:
> nach einem Datenblatt habe ich schon gesucht, leider ohne Erfolg.

Man könnte die elektrischen Daten auch grob selbst bestimmen. Der 
Maximalstrom ist beim Schrittmotor meist durch die Eigenerwärmung 
festgelegt. Man kann also beide Wicklungen z.B. in Serie schalten, 
vorsichtig mit einer einstellbaren Stromquelle langsam (über etliche 
Minuten) den Strom erhöhen und dabei die Temperatur beobachten. 
"Reichlich handwarm" ist auf jeden Fall in Ordnung. Zu diesem Strom kann 
man dann auch die Spannung über einer Wicklung messen und hat dann schon 
mal einen Anhaltspunkt. Wenn die Anwendung weniger Drehmoment erfordert, 
kann man den Motor natürlich auch mit weniger Strom betreiben.

von (unknown) (Gast)


Lesenswert?

Werner schrieb:
> Da hast du etwas falsch verstanden. Damit Strom durch die Spule fließt,
> muß an jedem Ende ein als Ausgang programmierter PortPin hängen. Der
> eine von den beiden wird auf L gesetzt, der andere auf H.

Wenn ich auf beiden Seiten der Spule einen Ausgang lege, liegt doch auf 
beiden Seiten Vcc an, da kann dann nichts fließen. Mit L und H setze ich 
doch nur die Widerstände bei Eingängen, damit kein Tri-State am Pin 
entsteht, also das Signal immer definiert ist. Oder wie war das gemeint?

Meine Ursprüngliche Idee war folgende:
Zunächst Pin 0 - 3 auf immer als Ausgang.
-Erster Schritt:
   Spannung an Pin 3 und Pin 1 anlegen,
   Pin 4 und Pin 6 ebenfalls als Ausgang, und Spannung anlegen,
   dass Vcc gegen Vcc den Stromfluss "sperrt".
   Pin 5 und Pin 7 als Eingang mit Pull-Down Widerstand,
   dass der Strom zu GND abfließen kann.
-Zweiter Schritt:
   Spannung an Pin 2 und Pin 1 anlegen,
   Pin 5 und Pin 6 ebenfalls als Ausgang, und Spannung anlegen.
   Pin 4 und Pin 7 als Eingang mit Pull-Down Widerstand.
-usw...

Kann das überhaupt klappen?

von (unknown) (Gast)


Lesenswert?

Ich hoffe das überhaupt noch jemand mitliest ;)
Welche SMD Transistoren könnte man denn nehmen? Ist das egal welche man 
da nimmt? Dann fahr ich morgen schnell bei Con*** vorbei und hol welche.

 Gruß Tobi

von Klaus Dieter (Gast)


Lesenswert?

Tobias St. schrieb:
> Wenn ich auf beiden Seiten der Spule einen Ausgang lege, liegt doch auf
> beiden Seiten Vcc an, da kann dann nichts fließen. Mit L und H setze ich
> doch nur die Widerstände bei Eingängen, damit kein Tri-State am Pin
> entsteht, also das Signal immer definiert ist. Oder wie war das gemeint?

Da hast du noch etwas falsch verstanden, ein auf Ausgang geschalteter 
Pin hat liegt bei High-Pegel auf VCC und bei Low-Pegel auf GND.

von (unknown) (Gast)


Lesenswert?

Okay. Also geht es ja gar nicht ohne Transistoren.

von Michael (Gast)


Lesenswert?

Tobias St. schrieb:
> Okay. Also geht es ja gar nicht ohne Transistoren.

Wieso?
Guck dir mal im Datenblatt des 90USB1287 im Abschnitt 10.2 (Ports as 
General Digital I/O) die Figure 10-2 (General Digital I/O) an. Das 
kleine "Dreieck", dass direkt an Pxn geht ist der Ausgangstreiber und 
der besteht aus zwei FETs, einer Richtung VCC und einer Richtung Gnd.

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.