Arduino Schrittmotor?

4 Antworten

Mache es doch mal richtig und schließe alle Eingänge an: Enable auf GND, Reset auf VDD, DIR (Richtung) wahlweise auf GND oder VCC und dann schaust du mal nach MS1-MS3 im Datenblatt. Wenn ich das richtig in Erinnerung habe, ist das die Schrittweite? Das sollte für das erste Experiment auf Vollschritt stehen.

Und schau noch mal, ob du die Spulen richtig angeschlossen hast.

Liefert deine Spannungsversorgung genügend Strom, dass sie nicht kurzzeitig zusammenbricht?


Jogibaer2017  20.04.2025, 10:32
[...] schaust du mal nach MS1-MS3 im Datenblatt. Wenn ich das richtig in Erinnerung habe, ist das die Schrittweite? Das sollte für das erste Experiment auf Vollschritt stehen. [...]

Richtig, MS1-MS3 sind für die Schrittweite. Alle drei auf GND für Vollschritt.

oli02w 
Beitragsersteller
 20.04.2025, 09:34

Danke für deine Antwort, ich lege mal die pins die ich nicht verwende auf GND und schaue dann nochmal.

Strom habe ich sie eingestellt, dass er nicht summt. Er dreht sich ja nur frei, also ohne last, sollte ja erstmal reichen.

Vielleicht ist der Motor falsch angeschlossen.
Versuche mal eine Spule vom Motor umzupolen. Sprich die Anschlüsse an 1A und 1B (oder 2A und 2B) miteinander zu tauschen.

--- edit ---

Datenblatt Motor

Bild zum Beitrag

Datenblatt a4988

Bild zum Beitrag

Woher ich das weiß:Berufserfahrung – Informationselektroniker i.ak.T.
 - (Arduino, Elektromotor)  - (Arduino, Elektromotor)

oli02w 
Beitragsersteller
 19.04.2025, 23:20

Habe ich auch gemerkt, habe das jetzt verbessert, aber macht den selben Fehler. Er bewegt sich nicht einen Schritt weiter, wenn ich auf Step einen Impuls draufgebe. Normalerweise sollte dich 1B und 2B also B+ und B- mit einander verbunden werden und nicht 1A mit 1B oder?

Jogibaer2017  20.04.2025, 06:29
@oli02w

Ich habe in meiner Antwort zur Verdeutlichung Auszüge von Datenblättern eingefügt.
Die Kabelfarben deines Motors müssen nicht unbedingt mit dem Datenblatt übereinstimmen. Da musst du mal in das Datenblatt deines Motors schauen.

Die 1. Spule A (rot) muss mit 1A/1B vom Treiber verbunden werden, und 2. Spule B (grün) mit 2A/2B.
Nun kannst du ggf. probieren die Anschlüsse einer Spule zu tauschen, also statt 1A/1B dann 1B/1A.

oli02w 
Beitragsersteller
 20.04.2025, 09:28
@Jogibaer2017

Ah vielen dank, ich dachte 1A und 2A wäre ein paar, aber dann doch nicht. Ist die polarität innerhalb eines Paars, also 1A und 1B wichtig oder erstmal nicht und nur für die Drehrichtung wichtig?

Jogibaer2017  20.04.2025, 09:53
@oli02w

Ich würde erstmal jeweils den (+) der Spulen auf A legen. Sollte dann der Motor nicht oder unrund laufen, kannst du wie gesagt bei einer Spule die Anschlüsse tauschen.
Die Drehrichtung kannst du dann später über den DIR-Pin steuern.

Du solltest Step und Dir an den Arduino anhängen und beide als Output setzen und entsprechend ansteuern.

Ich kenne dein Breakoutboard nicht aber die Eingänge sollten beide nicht floating sein.


oli02w 
Beitragsersteller
 19.04.2025, 23:19

Ich kann nicht C++ programmieren, ich kann FUP und KOP. Ich benutze Openplc zum programmieren.

Kelec  20.04.2025, 09:54
@oli02w

Das ist doch egal. Auch FUP sollte dir eine Kontrolle über die GPIO Pins geben.

Du kannst auch dir dauerhaft an 3.3V des Arduino hängen oder auf GND du solltest ihn aber nicht offen lassen, sofern das Breakoutboard das du verwendest da keinen Pullup oder Pulldown drauf hat.

oli02w 
Beitragsersteller
 20.04.2025, 11:30
@Kelec

Mein Arduino ist gerade eh kaputt, weil ich kann kein Programm mehr auf ihn laden, er zeigt den Fehler programmer nicht gefunden an, habe schon alles probiert. Seit dem ich ausversehen DO und Vin gebrückt habe geht es nicht mehr, vielleicht habe ich ihn kaputt gemacht. Aber es war auch kein originaler Arduino, es war ein nachtgemachter. Das Programm läuft noch, nur kann ich kein Programm mehr hochladen.

Kelec  20.04.2025, 11:54
@oli02w

Ja VIN ist normal höher als die Maximal zulässige Spannung auf den IO Pins, also kann durchaus sein.

oli02w 
Beitragsersteller
 20.04.2025, 17:28
@Kelec

Entschuldigung, meinte DI. Hatte das Phänomen, dass der Eingang manchmal von sich selbst aktiviert hat und dann habe ich ausversehen DI mit Vin gebrückt, dann haben die leds mal kurz geleuchtet und dann hat der Eingang wieder funktioniert, aber konnte kein Programm mehr draufladen.

Hatte den Verdacht, dass auf dem DI eine Restspannung ist und ihn immer mal aktiviert hat. Ich meine 3,3v reichen schon aus, um ihn zu aktivieren. Das ist nicht viel. So habe ich ihn wahrscheinlich entladen, aber das Board kaputt gemacht.

Kelec  20.04.2025, 18:45
@oli02w

Ob DI oder DO ist dafür egal. Ist am Ende eh der selbe Pin.

Hatte das Phänomen, dass der Eingang manchmal von sich selbst aktiviert

Dann musst du entweder in Hardware einen Pullup oder Pulldown Widerstand vorsehen oder du konfigurierst den Pin enrsprechend mit Pullup oder Pulldown.

Hatte den Verdacht, dass auf dem DI eine Restspannung ist und ihn immer mal aktiviert hat.

Restspannung weniger du hast immer Kriechströme und die können den Pin mal aktivieren.

Ich meine 3,3v reichen schon aus, um ihn zu aktivieren. Das ist nicht viel.

EIgentlich sehr viel wenn man sich andere Spannungspegel ansieht. Also wenn du da nicht über 10m weit gehen willst reicht 3.3V aus für einen sicheren Spannungshub.

oli02w 
Beitragsersteller
 22.04.2025, 21:00
@Kelec

Heute kam der neue Arduino uno r4 und wollte mein Programm drauf laden, doch er zeigt, die selbe Fehlermeldung an.

Das ist die Fehlermeldung:

Der Sketch verwendet 5544 Bytes (17%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.

Globale Variablen verwenden 274 Bytes (13%) des dynamischen Speichers, 1774 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x65

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x65

Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Es liegt nicht am Board, nicht am PC (hatte es an einem anderen PC getestet und genau der selbe fehler), hatte die Software Arduino IDE neu installiert und immer noch der selbe Fehler, hatte ein neues USB Kabel verwendet, andere Schnittstelle benutzt, Treiber deinstalliert und neu Installiert, aber alles kein Erfolg. Ich weiß wirklich nicht warum ich nichts mehr auf das Board uploaden kann. Auch komisch ist, dass es von einem auf den anderen Upload auf einmal nicht mehr geklappt hat.

Was kann ich noch machen?

Kelec  22.04.2025, 21:29
@oli02w

Hast du als Programmer in den Settings das SDK500 ausgewählt? Da muss Arduino eingestellt sein.

Also es hängt eindeutig mit den Projekteinstellungen zusammen.

oli02w 
Beitragsersteller
 22.04.2025, 22:02
@Kelec

SDK500 habe ich nicht, habe Atmel STK500. Habe den ausgewählt, aber immer noch selber Fehler.

Liegt es an dem bootloader? Aber kann auch nicht sein, weil es ist ein Brand neuer und originaler Arduino uno r4.

Was kann ich noch machen?

Kelec  22.04.2025, 22:10
@oli02w

Das meinte ich auch.

Du hast ein STK500?

Das STK Programmiert doch normal über ISP nicht über den Arduino Bootloader, außer du verwendest das STK nur als USB auf UART Bridge.

Wenn du einen Arduino hast dann kannst du den einfach per USB direkt an den PC anhängen ohne das STK500 dazwischen.

oli02w 
Beitragsersteller
 22.04.2025, 22:12
@Kelec

Wenn ich den Arduino an den PC anschließe, erkennt ehr diesen auch als COM und kann diesen auswählen und eigentlich das Programm hochladen, nur geht das nicht und bekomme immer diese Meldung, dass der programmer not responding.

Kelec  22.04.2025, 22:14
@oli02w

Ja aber da steht stk500 du hast kein stk500 sondern einen Arduino.

Das ist klar, dass er das nicht findet wenn keins am PC ist.

Ich kenne deine IDE nicht daher kenne ich die Einstellungen für den Arduino nicht aber das STK500 ist jedenfalls etwas anderes als ein Arduino.

oli02w 
Beitragsersteller
 22.04.2025, 22:21
@Kelec

Ich benutze Arduino IDE 2.3.6, kann in programmer noch mehr auswählen, aber eigentlich brauche ich das doch nicht, er soll das Programm doch eingeltich nur auf den Arduino uploaden. Aber ich glaube die Kommunikation zwischen PC und Arduino ist nicht vorhanden.

Ich kann auf dem programmer noch mehr auswählen, auch USBasp oder Arduino as ISP. Genau weiß ich nicht, für was der programmer ist. Aber egal was ich einstellen, er uploaded das Programm nicht. Habe ja auch an den Einstellungen nichts geändert und es hat vorher funktioniert.

Kelec  22.04.2025, 22:25
@oli02w

Genau da sollte er als Uploadprotokoll den Arduino Bootloader verwenden.

Ist in der IDE das richtige Board eingestellt? Einen Programmer in dem Sinne verwendest du dann ja auch gar nicht.

oli02w 
Beitragsersteller
 22.04.2025, 22:27
@Kelec

Als Board habe ich für meinen Arduino uno r4, den Arduino uno verwendet und als Port den richtigen port verwendet, habe das in dem geräte manager überprüft. Es sollte eigentlich alles passen. Oder habe ich noch was übersehen?

Kelec  22.04.2025, 22:38
@oli02w

Hm wenn alles so eingestellt ist verstehe ich die Fehlermeldung nicht. Ich weiß jetzt nicht wie die IDE intern arbeitet aber das mit dem stk kommt mir eigenartig vor.

oli02w 
Beitragsersteller
 22.04.2025, 22:41
@Kelec

Im Internet sagen die auch immer nur, dass man den bootloader neu draufladen soll, aber dafür braucht man ja einen zweiten Arduino, der einwandfrei funktioniert. Keiner der Arduinos funktioniert.

Kelec  22.04.2025, 22:43
@oli02w

Wie gesagt ich glaube nicht dass es der Bootloader ist.

Ich glaube dass die IDE fälschlicherweise einen Programmer erwartet der nicht angeschlossen ist.

Versuche doch mal einen komplett leeren Sketch drauf zu laden, geht es dann?

oli02w 
Beitragsersteller
 22.04.2025, 22:50
@Kelec

Habe es gerade ausprobiert, es funktioniert auch nicht. Kann einen leeren Sketch auch nicht hochladen, wieder die selbe Fehlermeldung. Programmer is not responding und Not in sync.

Kelec  22.04.2025, 22:51
@oli02w

Dann kann ich dir auch nicht mehr weiterhelfen.

Hallo,

EN, DIR und STEP sind schon die wichtigen Pins für den Schrittmotor-Treiber.

EN=Enable Damit wird der Motor-Treiber aktiv

DIR=Direction=Drehrichtung Damit kannst du anhand LOW/HIGH-Signal die Drehrichtung festlegen

STEP Das ist dein Schrittimpuls-EIngang

MS1-MS3 solltest du auch setzen, je nach schrittweite..

erst dann sollte auch mit STEP bei jedem impus sich der Motor bewegen.