Fragen zum Schrittmotortreiber A4988

Da dies mein erster Post hier im Forum ist zuerst einmal HI ! :) Ich beschäftige mich allerdings schon etwas länger mit dem Arduino und habe in dieser Zeit auch schon öfters mal hier im Forum vorbeigeschaut (rein aus Intresse).

Aber nun zum eigentlich Thema. Ich und ein Freund haben uns vorgenommen zusammen etwas in Richtung CNC zu basteln, sind aber noch gaaanz am Anfang und gerade kurz davor unsere 1. Linearführung mit nem Schrittmotor zu verbinden der (wie wohl zu erwarten... :)) vom Arduino angesteuert werden wird. Dazu habe ich mir einen Schrittmotor von Trinamic und den "berühmten" A4988 Schrittmotortreiber von Pololu angeschafft.(Links zu den Datasheets am Ende des Posts).

Gestern Abend habe ich das ganze dann zum ersten Mal zusammengebastelt, allerdings ohne Last, da die Führung bei dem Freund im Keller steht und wollte mal testen auf was für Drehzahlen ich mittels dem Treiber so komme. Der dazugehörige Code ist net weiter erwähnenswert, ich habe lediglich einen Puls auf den Step-Pin des Treibers gegeben und dabei die Zeiten zwischen den einzelnen Pulsen variiert.

Also schonmal vorweg, funktioniert hat das ganze ABER:

-Schon vor dem ersten Probelauf hatte ich das Problem, dass ich es net hinbekommen hab die Spannung über dem Sense-Poti abzugreifen. Ich habe genau so gemessen wie vorgeschrieben, Poti gegen Masse, allerdings immer nur 0 V gemessen. Ich habe auch versucht die Masse zu "wechseln", also mal gegen Masse der 5V Versorgungspannung, mal gegen Masse der Motorspannungsversorgung. Desweiteren gibt es ja auf dem Chip so ne Art extra Abgriffspunkt in Form eines kleinen Loches mit Metallrand.... auch versucht, aber auch dort 0 V. Naja letztendlich hab ich es dann halt gelassen und das Poti möglichst groß gestellt um den chip net versehentlich zu grillen, da mir bis jetzt leider ein passendes Stückchen Metal fehlt, dass ich als Kühlung nutzen könnte. Btw als Versorgungspannung hatte ich ein 24 V Netzteil gewählt. Daher als meine 1. Frage, wo könnte mein Fehler liegen ?

-Was mich dann bei den Probeläufen etwas ernüchterte war, dass ich net über 2,5 Umdrehungen pro Sekunde kam. Sobald ich die Taktung etwas höher schraubte fing der Motor an nur noch zu zucken. Natürlich ist mir bewusst, dass ich "nur" 24 V Versorgungsspannung angelegt hab (der Treiber arbeitet mit bis zu 35 V, wenn ich das richtig in Erinnerung habe :)) und den Strom mittels Poti zumindest anfangs arg begrenzt hatte. Nun die 2. Frage, hat vielleicht wer Erfahrung mit dem Treiber und kann mir sagen ob das schon das Ende der Fahnenstange ist oder ob das Problem (wie ich doch hoffe und auch annehme) bei mir bzw. meinem Aufbau liegt.

-Der zumindest anfangs arg begrenzte Strom führt mich dann gleich zur 3. Sache die mich stutzig machte. Nachdem ich merkte das bei 2,5 RpS Schluss war fing ich an den Poti langsam runter zu schrauben (und fühlte immer brav am Chip ob das Ding net zu warm wird :)). Letztendlich hatte ich dann das Poti komplett "aufgedreht", aber weder wurde der Chip warm, noch ändert sich was am Verhalten des Motors.

So mehr fällt mir momentan net mehr ein, ich freue mich über Ratschläge, Anmerkungen oder kurze Erfahrungsberichte zum Pololu A4988. Das CNC Projekt gefällt mir sehr gut, allerdings gibts es mir doch schwer zu denken, dass bei so einfach Dingen schon zu hapern scheint :).

MfG

Flo

Sorry dei Datasheets ganz vergessen ... :

Motor: http://www.trinamic.com/tmc/media/Downloads/QMot_motors/QSH4218/QSH4218_manual.pdf

Pololu A4988: http://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf

Die edit funktion hab ich auf die schnelle leider nicht gefunden ^^

Welches Microstepping hast Du denn eingestellt?

Welchen Motor hast Du? Das Datenblatt ist für 4 verschiedene Motormodelle.

Die max Drehzahl/Drehmoment bei dieser Drehzahl hängt am wenigsten vom Treiber ab sondern vom Motor und von der Mechanik (Widerstand/Reibung, Trägheitsmoment ecc)

Grüße Uwe

Erstmal danke für die schnelle Antwort.

pylon: Welches Microstepping hast Du denn eingestellt?

Kein Microstepping, die 3 Pins für das Microstepping habe ich unbeschaltet gelassen => Fullstep .

uwefed: Welchen Motor hast Du?

Die genaue Bezeichnung ist QSH 4218-35-10-027 (direkt vom Motor abgeschrieben).

Aber schonmal intressant, ich ging davon aus es sei genau anderst rum, sprich es gibt keine großen Unterschiede in Sachen Motor und der Treiber ist hauptsächlich für die maximale Frequenz und das resultierende Moment verantwortlich ^^

MfG Flo

Ich habe zwar selbst noch nicht viel damit rumgespielt, aber die grössten Geschwindigkeiten erreicht man bei Schrittmotoren meist, wenn sie angefahren und wieder abgebremst werden. D.h. Du solltest am Anfang mit langsamerem Takt fahren, dann steigern, auf vollem Tempo fahren und wieder runtertakten. Wenn Du sofort mit dem hohen Takt kommst, kommt der Motor in's stottern. Welches allerdings bei Deinem Motor die Maximalgeschwindigkeit ist, weiss ich auch nicht. Bei meinen (nicht sehr ausführlichen) Tests mit billigen Schrittmotoren habe ich etwa die doppelte Maximalgeschwindigkeit erreicht, wenn ich hochgefahren bin, im Vergleich zu sofort volle Pulle.

Die Eckwerte des Motors sind 1A Phasenstrom und 5,3V Nennspannung und 27 Ncm Haltemoment. Haltemoment ist das Moment das der Motor statisch im stromdurchflossenen Zustand halten kann (nennstrom auf beiden wicklungen). Statisch meine ich daß der Strom nicht durch die Wicklungsinduktivität begrenzt wird sondern nur durch den Wicklungswiderstand bei Nennspannung an einer Windung. Ohne Strom ist der Haltemoment 22 mNm.

Grafik 5.1 Motor QSH4218-35-10-027 von http://www.trinamic.com/tmc/media/Downloads/QMot_motors/QSH4218/QSH4218_manual.pdf gibt Aufschluß auf das maximale Drehmoment das der Motor aufbringen kann in Funktion der Geschwindigkeit ausgedrückt in ppm bei einer Stromansteuerung von 1A auf jeder Phase in half step operation und 24V Versorgungsspannung des Treibers. Also bei 200 Schritte pro Umdrehung sind 6000 PPS (Pulse pro Sekunde) das 30 Umdrehungen pro Sekunde bei einem maximalen Drehmoment von 12Ncm. Wenn das maximale Drehmoment überschritten wird bleibt der Motor stehen und vibriert nur mehr. Das Drehmoment geht mit der Drehgeschwindigkeit zurück, weil die Induktivität dem Stromanstieg entgegenwirkt und somit der Nennstrom nicht dauernd fließen kann. Einen Stromansteuerung kann diesem Effekt entgegenwirken aber nur in einem bestimmten Bereich.

Ich würde Dir raten Kapitel 6 gut durchzulesen. http://www.trinamic.com/tmc/media/Downloads/QMot_motors/QSH4218/QSH4218_manual.pdf

-Schon vor dem ersten Probelauf hatte ich das Problem, dass ich es net hinbekommen hab die Spannung über dem Sense-Poti abzugreifen. Ich habe genau so gemessen wie vorgeschrieben, Poti gegen Masse, allerdings immer nur 0 V gemessen. Ich habe auch versucht die Masse zu "wechseln", also mal gegen Masse der 5V Versorgungspannung, mal gegen Masse der Motorspannungsversorgung. Desweiteren gibt es ja auf dem Chip so ne Art extra Abgriffspunkt in Form eines kleinen Loches mit Metallrand.... auch versucht, aber auch dort 0 V. Naja letztendlich hab ich es dann halt gelassen und das Poti möglichst groß gestellt um den chip net versehentlich zu grillen, da mir bis jetzt leider ein passendes Stückchen Metal fehlt, dass ich als Kühlung nutzen könnte. Btw als Versorgungspannung hatte ich ein 24 V Netzteil gewählt. Daher als meine 1. Frage, wo könnte mein Fehler liegen ?

Der A4988 ist ein Chopperregler, das heißt wenn der Motorstrom über den Sollwert steigt werden die Ausgangstransistoren abgeschaltet und nach kurzer Zeit wieder eingeschaltet bis wiederum der Nennstrom erreicht ist. Es wird also digital durch ein-Ausschalten geregelt nicht analog durch einen Transistor der seinen Widerstand regelt damit der Nennstrom fließt. Darum ist die maximale Verlustleistund am a4988 bei maximalstrom sprich 2A gegeben nicht bei Zwischenwerten. Wenn Du den Stromwert auf Maximum stellst reskierst Du daß der Motor abraucht da dieser zuviel Strom bekommt. Du mußt den Sollwert am Poti auf 1A stellen. Notfalls steuer den Motor sehr langsam an und mißt Du den Strom in einer Motorwindung. Bei Fullstep fleißen 70% des Nennstroms (siehe Grafik 8 Seite 14 von http://www.pololu.com/file/download/a4988_DMOS_microstepping_driver_with_translator.pdf?file_id=0J450 )

-Der zumindest anfangs arg begrenzte Strom führt mich dann gleich zur 3. Sache die mich stutzig machte. Nachdem ich merkte das bei 2,5 RpS Schluss war fing ich an den Poti langsam runter zu schrauben (und fühlte immer brav am Chip ob das Ding net zu warm wird smiley). Letztendlich hatte ich dann das Poti komplett "aufgedreht", aber weder wurde der Chip warm, noch ändert sich was am Verhalten des Motors.

Wasmeinst Du mit Verhalten des Motors ? daß er bei 2,5RpS blockierte oder daß der blockierte Motor nicht wieder startete?

Ein schrittmotor der wegen eines zugroßen abverlangteen Moments blockiert startet nicht wieder. Er muß wieder neu angefahren werden. Die im Diagramm angegebenen Drehmomente beziehen sich auf konstante Drehzahlen. Um diese Drehzahlen zu erreichen muß der Motor langsam angefahren werden. Du mußt eine Startrampe programmieren damit der Motor langsam beschleunigt.

Viele Grüße Uwe

Wow vielen Dank für dieses wirkliche ausführliche Feedback und die damit verbundene Arbeit !

Ich werde mir dann wie von uwefed empfohlen mal Kapitel 6 des Manuals genau durchlesen und versuchen den maximalen Motorstrom durch messen einzustellen. Allerdings dazu noch eine Frage, selbst wenn ich das während einer sehr langsamen Taktung messe, wäre der Output an der Motorspule doch ...naja sagen wir mal eine Art Pulssignal ... kann ich den Wert mit meinem 0815 Multimeter überhaupt richtig messen ? Weil das ja eigentlich nur ne Gleichspannung oder im Falle von Wechselstrom eine sinusförmige Größe richtig messen kann.(Effektivwert * Wurzel2 = Amplitudenwert etc. .... ). Oder kommt vielleicht daher der Faktor 0.7 * Messwert = momentan eingestellter Nennstrom ?

Was meinst Du mit Verhalten des Motors ? daß er bei 2,5RpS blockierte ...

Ich meinte damit das er genau wie vorher bei 2,5 Rps blockiert.

Noch zur Startrampe, ich hab davon schon öfters gelesen und hatte das gestern auch probiert, wobei ich mir nicht sicher bin ob das was ich da programmiert hab das ist was man unter Startrampe versteht. Ich hab den Motor halt wie schon von pylon empfohlen langsam anfahren lassen.

Zuerst 200 Schritte bei 0.5 RpS, dann 200 bei 1 RpS, 200 bei 2 Rps und wollte dann auf 3 springen, aber Ergebnis wie anfangs schon beschrieben .... Motor blockiert udn fängt an zu zucken sobald die 2,5 überschritten werden. Aber wie gesagt bin mir auch net 100% sicher wie ne Startrampe auszusehen hat, ich habs auch schon gegoogelt aber leider nix sonderlich hilfreiches bzw. ne ordentliche Erklärung dazu gefunden, also wenn ihr nen Link habt nur her damit ^^

So werd dann morgen mal versuchen den Strom mittels messen richtig einzustellen und meld mich dann die Tage wieder ! Nochmals vielen dank für eure Mühe !

MfG

Flo

Startrampe ist eine gleichmäßige Erhöhung der Drehzahl gemeint einfach eine For schleife die langsam die Drehzahl hinaufzählt oder die Wartezeit herunterzählt.
Der Motorstrom ist eine Gleichstrom mit einer gewissen Restwelligkeit von einigen kHz. Ein 0 8 15 Tester mißt schon ca das richtige.
Grüße Uwe