Forum: Mechanik, Gehäuse, Werkzeug Stepper motor mit Arduino ohne H-brücke?


von Tim L. (thecorp)


Lesenswert?

Guten Tag,
ich habe gerade einen alten Stepper aus einem Legospielzeug ausgebaut. 
Ich dachte mir, dass ich den vllt gut verwenden könnte. Mit dem 
Mikrocontroller scheint es ja zu klappen ihn anzusteuern - wenn man eine 
Hbrücke hat.
Ist es möglich nur über den Arduino den Stepper anzusteuern? Also soweit 
ich weiss ist es ja mit dem Motorshield möglich. Doch ich würde gerne 
wissen ob es auch ohne geht, denn im Grunde ist es ja auch nur ein Motor 
mit Kabeln eingängen und 2 Spulen. Da dürfte es doch auch ohne komplexe 
Schaltungen funktionieren!? oder nicht?

lg

von Stryker_2k (Gast)


Lesenswert?

Die Frage ist jetzt, was du unter "komplexe Schaltung" verstehst... 
direkt verbinden wird nicht gehen. Du benötigst schon einen passenden 
Treiber. Viele verwenden hier einfach einen ULN200x gekoppelt mit Dioden 
am Ausgang. Das Forum hier ist voll mit solchen Schaltungen inkl. 
passenden Schrittfolgen.

Was für einen SM ist es denn? Sind irgendwelche Daten aufgedruckt?

von Andi (Gast)


Lesenswert?

Nein das geht nicht direkt. Du brauchst leistungstreiber, die sind auf 
dem motorshield

von amateur (Gast)


Lesenswert?

Bei so etwas kommt es vor allem auf den Stepper an. Bei einem 4-Adrigen 
wirst Du ohne Halbbrücke nicht sehr glücklich werden. Die 5 - 8 Adrigen 
stehen manchmal sogar auf eine "einfache" Beschaltung.
Die H-Brücke wird nicht deshalb verwendet, weil man den armen 
Halbleiterherstellern etwas zukommen lassen möchte, sondern weil 
gravierende Vorteile dafür sprechen.

von Tim L. (thecorp)


Lesenswert?

Ersteinmal danke für eure antworten.
Nur mir ist gerade folgendes aufgefallen. Wenn ich die kabel der 2 
kabelpaare jeweils an den Pin und an den Ground anlege funktioniert der 
Stepper, wenn ich die Pins befeuere und einen Kleinen Schubs mit der 
hand gebe. Dann läuft er durch wie ein gleichstrommotor(das Wollte ich 
ja eigtl erreichen). Das ganze funktioniert aber nur wenn ich eine neue 
Stepper Instanz erstelle und die Pins dort eintrage. Hier einmal der 
Code:


#include <Stepper.h>

Stepper stepp(100, 9, 10);


void setup()
{
  stepp.setSpeed(50);

}

void loop()
{
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
}

Ist das Verhalten vollkommen normal? oder ist es doch möglich ihn als 
gleichstrommotor zu benutzen ohne einen weiteren Treiber?
Sodass er läuft, ohne mit der Hand einen startschubser zu geben.

lg

von Stryker_2k (Gast)


Lesenswert?

Bitte bitte betreibe den Motor nicht direkt an den Pins!
Zum Code kann ich nichts sagen, da ich mich mit den Arduinolibs nicht 
auskenne.
Wenn der Stepper jedoch in einer bestimmten Reihenfolge erregt wird so 
dreht er durchaus immer weiter, auch wenn er nur jeden 2.Step korrekt 
bekommt. Aber so läuft er a) nicht sauber und b) ist der anlauf immer 
Problematisch.

Schaue dir mal an, wie die Spulen erregt werden müssen (Reihenfolge) für 
eine korrekte Schrittfolge.
Und nochmals: wenn das nicht ein mini-mini-mini motor ist so betreibe 
den nicht direkt an den Pins des Adruino!

von Tim L. (thecorp)


Lesenswert?

Gut danke wollte nur mal wissen was es damit auf sich hat :)
Ich werde es wohl mit dem motorshield von arduino machen. Nur man kann 
an dem motorshield von Ardunio maximal 2 Motoren bzw einen Stepper 
anschliessen. Finde ich ein bisschen wenig. Weiss jemand wie man mehrere 
Stepper an einem Shield dran kiregt?

von Hartmut Semken (Gast)


Lesenswert?

Ein AVR-Pin kann nur einen begrenzten Strom liefern.
Dieser reciht für Deinen Stepper nicht aus - hätte mich auch gewundert.
Wundert mich, dass er überhaupt läuft.

Aber immerhin, das ist schon mal ein Anfang.
Der Strom dürfte jetzt so bei 10 mA liegen, das kommt als 
Kurzschlussstrom aus einem AVR-Pin in etwa raus.
Wenn Du das über längere Zeit machst, brennt ziemlich sicher der 
Ausgangstransistor im µC durch.

Mi einem einfachen Treiber sollste Dein Stepper dann aber laufen.
ULN2003 dürfte das sein, was Du suchst - Google ist da Dein Freund.

Die Schaltung wäre denkbar einfach: den AVR-Pin an den Eingang des 
Treibers, die Stepper-Phase an +5V und an den Collector des Treibers, 
Emitter auf Masse.

Miss den Strom, der dann durch die Stepper-Spule fliesst.
Mehr als 300 mA würden den Treiber zerstören, und auch Dein Stepper hat 
einen Maximalstrom, den er verträgt: wird er mehr als handwarm im 
Betrieb, muss der Strom runter.

Kleine Experimente kannst Du so schon machen, aber viel Drehmoment wird 
nicht rauskommen.

Stepper sind keine Gleichstrommotoren sondern im Prinzip 
permanenterregte Synchronmaschinen.
Gleichstrommaschinen erzeugen sich intern den benötigtens Wechselstrom 
über eine mechanische Kommutierung: Kohlebürsten leiten den Strom 
wechseln auf verschiedene Wicklungen, in den Wicklungen fliesst so 
Wechselstrom.

Bei einem Stepper geschieht das extern: welche Wicklung wann Strom 
bekommt bestimmt ein externes IC.
Stepper-Controller wie der LM297 oder Toshiba TB6560 sind auf sowas 
spezialisiert.
Der LM297 ist ausgelegt für den Betrieb mit einer H-Brücke als 
Leistungstreiber.

Stepper-Controller regeln den Strom in den Wicklungen (durch schnelles 
Ein-Aus-Schalten des Stromes; nach dem Verb to chop werden die daher 
Chopper genannt).

Im Prinzip kann man auf die Stromregelung verzichten und die Pulse für 
die Wicklungen eben auch mit einem µC erzeugen, wie das die Step-Library 
des Arduino macht.
Aber auf einen dickeren Transistor für den Strom kann man eben nicht 
verzichten.

Eine H-Brücke ist dann auch nicht mehr so kompliziert.
Gegenüber einem einzelnen Transistor hat die den Vorteil, den Strom auch 
umpolen zu können statt nur ein-aus zu schalten.

Lies Dir den Artikel hier im Wiki zum Thema Stepper mal durch und das 
Datenblatt des o.a. Toshiba-Chips, dann verstehst Du schon mehr, was da 
passiert.
hase

von tim l. (tim_l)


Lesenswert?

Vielen vielen Dank!
Das hat mir auf jeden fall geholfen :)
ich werde mal in nächster zeit den Wikieintrag lesen und mir mal ein 
paar sachen dazu anschauen. Vielen dank

lg

von Wolfgang (Gast)


Lesenswert?

tim l. schrieb:
> ich werde mal in nächster zeit den Wikieintrag lesen und mir mal ein
> paar sachen dazu anschauen.

Da könntest du zum Beispiel die Angaben im Datenblatt deines µC zum 
Maximalstrom an I/O-Pins lesen und dazu vielleicht das Ohmsche Gesetz, 
mit dem du bei bekanntem Spulenwiderstand den Strom in der Motorspule 
berechnen kannst.

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.