Forum: Mikrocontroller und Digitale Elektronik Schrittmotor Präzision, A3967 controller, Arduino 328P


von Andreas S. (ascholz)


Lesenswert?

Liebe Forenmitglieder,

ich steuere einen Nema17-Schrittmotor (HS174417) über einen EasyDriver 
(mit A3967 chip) an um eine Kamera im Fokus meines Teleskops zu halten. 
Dazu ist nicht viel Drehmoment nötig, es gibt keine langen Fahrten, die 
besondesr schnell sein müssen. Wichtig ist aber vorher festgelegte 
Positionen möglichst genau anzufahren. Dazu zählt die Anwendung die 
Schritte, weil kein Encoder vorhanden ist.

Der Motor wird mit 12V versorgt (zieht ungefähr 400mA aus dem Netzteil) 
und der Regler auf dem Easydriver-Board für die Stromstärke ist bis zum 
Maximum hochgedreht (lt. Easydriver-Spezifikation: 750 mA pro Phase) und 
es wird 1/8-Microstepping genutzt um den Motor möglichst ruhig und 
präzse laufen zu lassen. Das STEP-Signal wird über die PWM-Hardware des 
Arduino's erzeugt.

Der Schrittmotor hat einen Schrittwinkel von 1,8 Grad. Damit wäre zu 
erwarten, dass 1600 STEP-Signale exakt eine volle Umdrehnung bewirken.

Meine Experimente zeigen, dass es von der Frequenz des PWM-Signals 
abhängt, wie viele Schritte verloren gehen. An der oberen Grenze (ca. 
1,4 kHz) sind es erwartungsgemäß besonders viele (>10Grad pro 
Umdrehung), aber auch bei langsamen Bewegungen (< 500Hz) gehen viele 
Schritte(5-10 Grad pro Umdrehung) verloren. Dazwischen gibt es aber auch 
einzelne Frequenzwerte, bei denen der Motor recht exakt läuft.

Nun ist mir bekannt, dass Schritte verloren gehen können, wenn's zu 
schnell geht. Mir ist aber auch aufgefallen, dass bei manchen Frequenzen 
der Motor mehr als eine Umdrehnung macht. Wenn ich full step Modus 
verwende sind die Effekte teils noch viel übler.

Es wäre super, wenn ihr mir Hinweise geben könnt, wie ich exakt besimmen 
kann, welche Frequenz (ggf. auch Stromstärke) ich nutzen muß, damit der 
Motor möglichst exakt läuft. Ich kann mir die Effekte nicht erklären.
Woran liegt diese Frequenzabhängigkeit?

Schon mal vielen Dank im voraus

von Wolfgang (Gast)


Lesenswert?

Andreas S. schrieb:
> An der oberen Grenze (ca. 1,4 kHz) sind es erwartungsgemäß besonders
> viele (>10Grad pro Umdrehung), aber auch bei langsamen Bewegungen
> (< 500Hz) gehen viele Schritte(5-10 Grad pro Umdrehung) verloren.

Es ist eine Schande, dass überhaupt Schritte verloren gehen.
Welche Nennspannung ist für den Motor angegeben?
Wie erzeugst du mit der "PWM-Hardware" vernünftige 
Beschleunigungsrampen?

> Woran liegt diese Frequenzabhängigkeit?
Das können Resonanzen sein. Was hast du als Dämpfung auf der Motorachse?

von Kurt (Gast)


Lesenswert?

Brauch es Beschleunigungsrampen?
Wie schwer ist die Kamerakonstuktion und wie schnell drehst du?

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


Lesenswert?

Ich glaube nicht, dass hier der Motor Schritte verliert. In den meisten 
Fällen kommt der Motor dabei geänzlich aus dem Tritt. Insbesondere 
zuviele Schritte sind unüblich. Entweder stimmen die Brems- und 
Beschleunigungsrampen nicht, und die Lastmasse ist groß im Vergleich zur 
Massenträgheit des Motors. Dann wird der Motor u.U. über das Ziel hinaus 
"geschoben". Oder das Taktsignal zum Shield ist elektrisch gestört. Das 
erscheint mir auf den ersten Blick hier am wahrscheinlichsten.

Mit freundlichen Grüßen
Thorsten Ostermann

von Andreas S. (ascholz)


Lesenswert?

Wolfgang schrieb:
> Es ist eine Schande, dass überhaupt Schritte verloren gehen.
> Welche Nennspannung ist für den Motor angegeben?
2,55V

> Wie erzeugst du mit der "PWM-Hardware" vernünftige
> Beschleunigungsrampen?
Dazu gibt's z.B. eine Application Note von Atmel. Schau mal nach AVR446.

>
>> Woran liegt diese Frequenzabhängigkeit?
> Das können Resonanzen sein. Was hast du als Dämpfung auf der Motorachse?
Ich mache die Messungen aktuell ohne jede Last oder Dämpfung auf der 
Achse. Aus welchem Grund könnte das ein Problem sein?

von Andreas S. (ascholz)


Lesenswert?

Kurt schrieb:
> Brauch es Beschleunigungsrampen?
ich arbeite im Moment ohne Beschleunigungsrampen für die Messungen um es 
nicht noch komplexer zu machen.


> Wie schwer ist die Kamerakonstuktion und wie schnell drehst du?
Ich möchte gerne gerne mit 1 kHz drehen.

von Einer K. (Gast)


Lesenswert?

Naja...
Nema17 sagt was über die Bauform aus, aber nicht viel über den Strom 
usw...

Meine Nema 17 sind mit 1,7A  bei 3V, o.ä.spezifiziert.
Deine A3967 wären da gnadenlos unterdimensioniert.

von Andreas S. (ascholz)


Lesenswert?

Thorsten O. schrieb:
> Ich glaube nicht, dass hier der Motor Schritte verliert. In den meisten
> Fällen kommt der Motor dabei geänzlich aus dem Tritt. Insbesondere
> zuviele Schritte sind unüblich. Entweder stimmen die Brems- und
> Beschleunigungsrampen nicht, und die Lastmasse ist groß im Vergleich zur
> Massenträgheit des Motors. Dann wird der Motor u.U. über das Ziel hinaus
> "geschoben". Oder das Taktsignal zum Shield ist elektrisch gestört. Das
> erscheint mir auf den ersten Blick hier am wahrscheinlichsten.
>
> Mit freundlichen Grüßen
> Thorsten Ostermann
Danke für die Hinweise. Die Rampen habe ich aktuell nicht konfiguriert. 
Ich probiere es dann mal mit Rampen. Gestörtes Taktsignal würde ich 
ausschließen, das habe ich mit dem Oszilloskop nachgeprüft.

Mit vielen Grüßen
 Andreas Scholz

von MaWin (Gast)


Lesenswert?

Andreas S. schrieb:
> Der Motor wird mit 12V versorgt (zieht ungefähr 400mA aus dem Netzteil)
> und der Regler auf dem Easydriver-Board für die Stromstärke ist bis zum
> Maximum hochgedreht (lt. Easydriver-Spezifikation: 750 mA pro Phase) und
> es wird 1/8-Microstepping genutzt um den Motor möglichst ruhig und
> präzse laufen zu lassen. Das STEP-Signal wird über die PWM-Hardware des
> Arduino's erzeugt.

Falsch.

WENN du Mikroschritte haben willst, muss der Maximalstrom BEGRENZT sein, 
sonst kann z.B. 45 Grad nicht das 0.7-fache davon sein.

Da ich zu deiner Typennummer HS174417 kein Datenblatt finde, kann man 
den richtigen Strom/Spannung nicht nennen.

von Jens W. (jensw)


Lesenswert?

Hallo,

versuche als erstes Mal die Rampen. Wobei ich hier meinem Vorredner 
zustimme. Daran wird es nicht liegen. Wenn du mit 1/8 Microschritten 
fährst und dein Taktsignal 1,6kHz hat, dann macht der Motor 1 Umdrehung 
pro Sekunde (bei 1,8°).
Das ist nicht so schnell.

Es kann an deinem Aufbau liegen. Bedenke, dass der Treiber den Strom 
durch deine Motorwicklungen begrenzt. Diese werden angesteuert wie bei 
einem Schaltregler. Wenn die Leitungen zum Motor recht lang und 
durcheinander sind oder große Schleifen bilden kann dein Treiber hier 
vermutlich nicht mehr sauber arbeiten.

Wie ist das denn angeschlossen? Kannst du mal ein Bild machen?
Die Motorleitungen gehören alle zusammen verdrillt angeschlossen.

Ein anderes Problem kann der Motor sein. Die Treiber haben manchmal ein 
Problem, wenn ein ungünstiges Verhältnis von Widerstand und Induktivität 
in den Spulen herrschen. Aber das kann man ohne Datenblatt nicht weiter 
eingrenzen.
Hast du das Datenblatt? Kannst du das zur Verfügung stellen?

Gruß, Jens

von m.n. (Gast)


Lesenswert?

Für einen ruhigen, vibrationsarmen Lauf ist es ratsam, den Strom nicht 
auf den max. Wert einzustellen, sondern auf einen Wert, der für die 
erforderliche Kraft ausreicht.

Hier ein Beispiel, was auch auf einem UNO R3 läuft: 
http://mino-elektronik.de/Generator/takte_impulse.htm#bsp7
Es lassen sich Drehzahl und Anfahrpositionen vorgeben; die Rampen werden 
automatisch generiert. 
http://mino-elektronik.de/progs/avr/step_m328/stepper_a4982.ino

von aSma>> (Gast)


Lesenswert?

Andreas S. schrieb:
> Gestörtes Taktsignal würde ich
> ausschließen, das habe ich mit dem Oszilloskop nachgeprüft.

Dann guck dir mal am Shunt den Chopper Betrieb an. Dann siehst du, ob es 
eventuell am Treiber liegt. Die China driver haben immer irgendwelche 
Probleme mit decay oder osc resistance.

von Tany (Gast)


Lesenswert?

m.n. schrieb:
> Für einen ruhigen, vibrationsarmen Lauf ist es ratsam, den Strom nicht
> auf den max. Wert einzustellen, sondern auf einen Wert, der für die
> erforderliche Kraft ausreicht
eher Spannung.

>...auch auf einem UNO R3 läuft
oder grbl:
https://github.com/grbl/grbl

von Oleg A. (oga)


Lesenswert?

Andreas S. schrieb:
>>
>>> Woran liegt diese Frequenzabhängigkeit?
>> Das können Resonanzen sein. Was hast du als Dämpfung auf der Motorachse?
> Ich mache die Messungen aktuell ohne jede Last oder Dämpfung auf der
> Achse. Aus welchem Grund könnte das ein Problem sein?

Das ist Resonanz.
Jeder Schrittmotor hatt mindestenz eine Resonanzfrequenz besonders wenn 
seine Last an einem längeren Hebel hängt.
Als Erstes lohnt es sich ein paar Versuche mit verschiedenen 
Schrittfrequenzen zu machen. Im Optimum ist der Motor leise und der 
Stromverbrauch ist minimal.
Danach experimentiert man mit der Strombegrenzung vom Treiber, auch dort 
kann noch optimiert werden. Falls Du Möglichkeiten hasst einen 
Laserpointer radial zur Welle anzubringen kannst Du damit ziemlich gut 
das Optimum finden

von Andreas S. (ascholz)


Lesenswert?

Herzlichen Dank an alle, die sich die MÜhe gemacht haben zu antworten 
und sorry an alle, die ich mit dem Schreibfehler beim Typ der Motors 
verwirrt habe es muss natürlich heißen 17HS4417.

Nach ewigem herumprobieren mit Rampen usw. war die Lösung am Ende doch 
ganz einfach: Der Easydriver war offentlichtlich kaputt. Habe ihn jetzt 
ersetzt durch einen China-Clone (!). Seit dem keine Frequenzabhängigkeit 
mehr. Bei allen Geschwindigkeiten im spezifizierten Bereich (+/- 5% = 
+/- 1 Schritt pro Umdrehung). Wenn ich alle vier Vollumdrehungen jeweils 
einen Extra-Schritt dazugebe, dann läuft der Motor rund und exakt. Zu 
viele Schritte habe ich gar nicht mehr beobachtet.

Nochmal Danke -> gelöst.

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.