Schrittmotor mit welchem Shield betreiben

Hallo ihr Lieben,

ich bekam heute meine neuen Schrittmotoren (QSH4218-41-10-035), zwei gleiche. Diese wollte ich dann natürlich gleich teseten. Doch als ich sie an mein Adafruit Motor Shield anschloss und den Code auf den Arduino lud, qualmte das Shield nach ca. 5 Sekunden und ich zog ganz schnell das Netzteil aus der Steckdose.

Nun habe ich außer dem Adafruit Motor Shield noch den EasyDriver mit dem habe ich es auch mal versucht, dort funktionierte es zwar, aber der Chip wurde nach ein paar Minuten auch etwas warm aber kein Vergleich zu dem anderen.

Ich habe einen Dropbox-Ordner erstellt, indem ich alle Datenblätter abgelegt habe, hier der Link dazu:
https://www.dropbox.com/sh/t96ux9k1ngopn07/YVZYCi-7ct

Wenn ich das richtig verstanden habe, hat der Motor bei 4,5V genau 1A („Schrittmotor QSH4218 Handbuch.pdf“ (Seite 4, in der Tabelle) ). Was ich aber jetzt nicht verstehe, ist wie Ampere mit Volt zusammenhängt. Sprich, was passiert mit der Stromstärke, wenn ich mit der Spannung hoch gehe, z. B. auf 12V. Verhällt sich Ampere linear zu der Spannung? Besser gesagt, wären das bei 12 V dann ca. 2,67 Ampere? Ich habe das einfach mal als Dreisatz gerechnet, war das falsch?
Wenn es richtig war, müsste das Adafruit-Shield doch den Motor bei 5V (=> 1,11A) packen ohne zu überhitzen. Denn der Adafruit schafft pro Phase 0,6 A und 1,2 A maximal. Wieso wird er denn dann so warm?

Ähnlich ist es bei dem EasyDriver, dort kann man die Ausgangsspannung durch einen Poti regulieren. Zwischen 150mA und 750mA. Das steht hier:
https://www.sparkfun.com/products/10267
bei Features. Wieso hat der Adafruit also mehr Probleme den Motor zu betreiben als der EasyDriver?

Dann abschließend noch eine Frage, wäre es besser den Big EasyDriver zu nehmen, siehe hier:
https://www.sparkfun.com/products/11699
der bringt es sogar bis auf 2A. Wobei ich eigentlich nur ein Shield wollte, mit dem ich dann beide Motoren getrennt antreiben kann. Daher gefällt mir der Adafruit so gut.

Liebe Grüße Matthias

Hallo Matthias,

verstehe mich nicht falsch, aber du solltest dich erst einmal mit den Grundlagen der Elektronik und Schrittmorensteuerung vertraut machen.

Deshalb nur einige Worte:

Die aktuelle Version des Adafruit Motor Shield stellt 0,6 A pro H-Bridge zur Verfügung. Bei den 1,2 A handelt es sich um den kuzfristigen Spitzenwert. Ein Kühlung (Kühlkörper) ist fast immer zu empfehlen.

Das Shield ist also für deine Motoren ungeeignet.

http://www.watterott.com/de/Arduino-FabScan-Shield

mit 2 Stück.

Es gibt eine Vielzahl von geeigneten Shields. Hier eines:

http://www.watterott.com/de/Arduino-FabScan-Shield

bestückt mit mit 2 Stück

http://www.watterott.com/de/Pololu-A4988-Schrittmoto…

Auch hier gilt: Kühlung nicht vergessen.

Grüße

fribbe

Hallo fribbe,

vielen Dank für deine Antwort. Ich weiß dass du es nur gut meinst, doch meine Frage baut eigentlich auf der Aussage von Peter (TOO) auf. In diesem Artikel:
/t/stromversorgung-mikrocontroller-schrittmotor/7187…
schrieb er:
„Wir haben vor rund 30 Jahren 3V-Schrittmotore dynamisch mit bis zu 100V betrieben um Schrittfrequenzen im kHz-Bereich erreichen zu können.“

Wenn die Nennspannung bei 3 V liegt und er Sie mit 100 V betrieben hat, war die Stromstärke doch sicher minimal, sonst ginge doch der Motor kaputt, oder nicht? Wie kommt man denn dann auf die maximale Stromstärke, die man dem Motor noch zuführen darf?

Liebe Grüße Matthias

Hallo Matthias,

„Wir haben vor rund 30 Jahren 3V-Schrittmotore dynamisch mit
bis zu 100V betrieben um Schrittfrequenzen im kHz-Bereich
erreichen zu können.“

Wenn die Nennspannung bei 3 V liegt und er Sie mit 100 V
betrieben hat, war die Stromstärke doch sicher minimal, sonst
ginge doch der Motor kaputt, oder nicht? Wie kommt man denn
dann auf die maximale Stromstärke, die man dem Motor noch
zuführen darf?

Steht alles in deinem Motoren-Datenblatt :wink:

Ich beziehe mich jetzt auf den -41-10-035

Der hat einen Nennstrom von 1A und einen Ohmschen Spulenwiderstand von 4.5 Ohm.
Macht also bei 4.5VDC = 1A.

Des weiteren ist das Drehmoment direkt abhängig vom vom Strom.

So, nun kommt das Problem, der Motor soll sich drehen!

Nehmen wir mal 4’000 Schritte/s
Das wären dann 2kHz mit welcher die Spule bebtrieben wird.
Nun hat die Spule eine Induktivität = 7.5mH

Damit wird Xl in etwa = 2 * Pi * 2kHz * 7.5mH = 94 Ohm.
Damit weiterhin 1A fliesst müsstest du mit der Spannung auf 94V.

Leider ist es keine Luftspule, weshalb die Rechnung nicht so ganz stimmt, aber die Grössenordnung kann man ersehen.

Auf Seite 10 des datenblatts, unter
6.3 Motor Driver Supply Voltage
kannst du nachlesen, dass die Motorspannung mindestens 2*Unenn betragen sollte, also 9V für deinen Motor.
Wegen Verlusten und den Nichtlinearitäten sollte man nicht über 25*Unenn gehen = 112.5V

Somit liegen wir in dem Bereich, denn ich die mal genannt habe.

Die Motoransteuerung hat nun dafür zu sorgen, dass der Spulenstrom nicht höher als 1A liegt, bzw. Kurzzeitig nicht über 1.5A ansteigt. (Seite 9, 6.2 Motor Current Setting ).

Die Schrittmotoransteuerung ist eine sehr dynamische Geschichte.
Einen Schrittmotor kann man auch nicht einfach aus dem Stand auf volle Drehzahl bringen. Es gibt eine maximal-Drehzahl mit welcher der Schrittmotor angefahren werden kann, dann muss man ihn in einer Rampe auf die gewünschte Drehzahl hochfahren. Umgekehrt geht es mit dem Abbremsen.
Dabei ändert sich der komplexe Widerstand der Spule mit der Drehzahl und mit dem Widerstand auch der SPulenstrom und somit das Drehmoment.
Nun ist aber das Drehmoment wieder die Basis für die mögliche Beschleunigung.

Nicht umsonst gibt es ganze Bücher,welche sich nur mit der optimalen Ansteuerung von Schrittmotoren befassen. Da ist dann viel Mathe und Regeltechnik mit drin.

MfG Peter(TOO)

2 Like

Hallo Peter(TOO),

vielen vielen Dank für deine tolle Erklärung. Jetzt kommen mir noch ein paar Fragen. Das hast geschrieben:

„Die Motoransteuerung hat nun dafür zu sorgen, dass der Spulenstrom nicht höher als 1A liegt, bzw. Kurzzeitig nicht über 1.5A ansteigt. (Seite 9, 6.2 Motor Current Setting).“

Habe ich das richtig verstanden, der Schrittmotortreiber kann also ruhig einen Output von 2A leisten können. Der Motor „zieht“ quasi den benötigten Strom und bekommt ihn nicht vom Shield „zugeschoben“, oder? Das würde dann auch erklären warum der IC gequalmt hat und nicht der Motor.

Dann hast du noch folgendes geschrieben:
„Einen Schrittmotor kann man auch nicht einfach aus dem Stand auf volle Drehzahl bringen. Es gibt eine maximal-Drehzahl mit welcher der Schrittmotor angefahren werden kann, dann muss man ihn in einer Rampe auf die gewünschte Drehzahl hochfahren. Umgekehrt geht es mit dem Abbremsen.
Dabei ändert sich der komplexe Widerstand der Spule mit der Drehzahl und mit dem Widerstand auch der SPulenstrom und somit das Drehmoment.
Nun ist aber das Drehmoment wieder die Basis für die mögliche Beschleunigung.“

Von solch einer Rampe habe ich bisher nur in Foren gelesen. Ich vermute mal, dass solch eine Rampe eine Steuerung ist. In meinem Arduino Buch („Die elektronische Welt mit Arduino entdecken“) stand aber soweit ich weiß nichts davon drin. Die Beispielcodes in diesem Buch und in den bisher gesehenen Videos deuten auch nicht auf eine langsame Anfahrt hin. Kann es also sein, dass die Shields für eine langsame Anfahrt und Bremsung sorgen?

Danke nochmals für deine tolle Hilfe,
liebe Grüße Matthias

Hallo Matthias,

„Die Motoransteuerung hat nun dafür zu sorgen, dass der
Spulenstrom nicht höher als 1A liegt, bzw. Kurzzeitig nicht
über 1.5A ansteigt. (Seite 9, 6.2 Motor Current Setting).“

Habe ich das richtig verstanden, der Schrittmotortreiber kann
also ruhig einen Output von 2A leisten können. Der Motor
„zieht“ quasi den benötigten Strom und bekommt ihn nicht vom
Shield „zugeschoben“, oder? Das würde dann auch erklären warum
der IC gequalmt hat und nicht der Motor.

Nein, der Motor zieht im Extremfall (Stillstand) Ub/4.5Ohm!

Der Schrittmotortreiber ist eine Art Schaltnetzteil.
Der Strom durch eine Spule verhält sich nun mal nicht wie bei einem Ohm’schen Widerstand.
Wenn man eine Induktivität an eine Spannung anschliesst, ist der Strom zuerst praktisch Null. Dieser steigt dann langsam an bis er denjenigen Wert erreicht, welcher sich nur noch aus dem Ohm’schen Widerstand der Spule ergibt. Bei Luftspulen ist der Stromanstieg linear und je grösser die Induktivität ist umso langsamer steigt der Strom an.
Wenn da eine Eisenkern im Spiel ist, ist das ganze nicht mehr linear und es gibt auch noch diverse Verluste im Eisen.

Dein Teiber-IC überwacht nun diesen Stromanstieg und schaltet den Strom ab, wenn der programmierte Wert überschritten wird, ach einer Pause wird dann der Strom wieder eingeschaltet und da Spiel geht von vorne los.

Du musst also dein Shield entsprechend der Motordaten programmieren.
Dabei darf man dann, um Rampen schneller zu durchlaufen, für einige Sekunden, den Strom bis auf 150% erhöhen.

Dann hast du noch folgendes geschrieben:
„Einen Schrittmotor kann man auch nicht einfach aus dem Stand
auf volle Drehzahl bringen. Es gibt eine maximal-Drehzahl mit
welcher der Schrittmotor angefahren werden kann, dann muss man
ihn in einer Rampe auf die gewünschte Drehzahl hochfahren.
Umgekehrt geht es mit dem Abbremsen.
Dabei ändert sich der komplexe Widerstand der Spule mit der
Drehzahl und mit dem Widerstand auch der SPulenstrom und somit
das Drehmoment.
Nun ist aber das Drehmoment wieder die Basis für die mögliche
Beschleunigung.“

Von solch einer Rampe habe ich bisher nur in Foren gelesen.
Ich vermute mal, dass solch eine Rampe eine Steuerung ist. In
meinem Arduino Buch („Die elektronische Welt mit Arduino
entdecken“) stand aber soweit ich weiß nichts davon drin. Die
Beispielcodes in diesem Buch und in den bisher gesehenen
Videos deuten auch nicht auf eine langsame Anfahrt hin. Kann
es also sein, dass die Shields für eine langsame Anfahrt und
Bremsung sorgen?

Ich habe mich mit den Shields nicht befasst. Wenn dann müsste es Parameter für die Beschleunigung geben.
Wie steil die Rampen gefahren werden können, hängt ausschliesslich vom Drehmoment des Motors, der zu beschleunigende Masse und den sonstigen Drehmomenten (Reibungsverluste) ab.
Der Motor alleine kann also schneller beschleunigen, allerdings hat der Rotor auch schon eine Masse, als wenn der Motor noch etwas antreiben muss. Wenn dabei das Drehmoment des Motors überschritten wird, verliert er Schritte oder bleibt ganz stehen.

Das Ganze gilt natürlich für positive und negative Beschleunigungen, bremsen muss man auch über eine Rampe.

Es gibt in einem System eine Minimal-Schrittzahl. Man kann den Schrittmotor bis zu dieser Schrittzahl direkt starten. Dann gibt es eine Maximal-Schrittzahl welche das System erreichen kann. Zwischen diesen Werten musst du über eine Rampe beschleunigen.

MfG Peter(TOO)

1 Like

Hallo Peter(TOO),

vielen vielen Dank für deine großartige Hilfe. Jetzt habe ich erst mal genug Informationen. :smile: Weitere, vorallem grundlegende, Fragen versuche ich erstmal über Bücher und Wikipedia zu klären, um hier nicht unnötig viel Platz zu verschwenden :wink:

Danke auch nochmal an alle die mir sonst noch geholfen haben,
liebe Grüße Matthias