Forum: Analoge Elektronik und Schaltungstechnik NEMA 17 Schrittmotor lässt sich nicht ansteuern.


von Jonas (jocze)



Lesenswert?

Hallo zusammen,

ich bin ein ziemlicher Anfänger im Bereich der 
Mikrocontroller-Programmierung und benötige etwas Hilfe für ein 
Uni-Projekt.

Ich will eigentlich erst mal nichts anderes als einen NEMA 17 
Schrittmotor ansteuern, habe damit aber unerwartet viele Probleme.

Hier mein Aufbau:
Mikrocontroller: ESP32 TTGO T1
Schrittmotor: ‎17HE15-1504S von StepperOnline (NEMA 17)
Schrittmotortreiber: A4988 von TEQStone (‎TEQ-800-001-0776)

Beim Motorsteuerungsmodul hab ich das Motor Current Limit auf etwa 0.816 
eingestellt gemäß der Anleitung aus diesem Video: 
https://www.youtube.com/watch?v=OpaUwWouyE0&ab_channel=MichaelKlements

In die Formel hab ich dabei 1.5 Ampere für den maximalen Motorstrom und 
0.068 Ohm für die current sensing resistance verwendet, wobei ich diesen 
Standardwert aus dem Video entnommen habe. In den Daten zum Motortreiber 
hab ich diesen Wert leider nicht gefunden.

Ich nutze ein Netzteil, um das Motorsteuerungsmodul mit 18V zu 
versorgen. Der Motor kann mit einer Spannung von 8-35 Volt umgehen, das 
sollte also auch kein Problem sein.

Mit diesem Aufbau (und dem unten beigefügten Code) passiert aber nichts 
mit dem Motor. Erst, wenn ich die Kabel am Motortreiber etwas 
zusammendrücke, macht der Motor Geräusche und dreht sich ab und zu mal 
(aber auch nur um ein paar Grad) - siehe Video im Anhang.

Ich habe zwei Motoren, zwei Treiber und auch dutzende Jumper Wires, die 
ich alle mal durchgewechselt habe. Ich komme aber auf kein anderes 
Ergebnis als das oben beschriebene.

Hat irgendwer eine Idee, was an diesem Aufbau falsch laufen könnte?

Hier dann noch mein Code, der auf dem Mikrocontroller läuft:
1
#include "BluetoothSerial.h"
2
3
BluetoothSerial SerialBT;
4
5
// Schrittmotor-Pinbelegung
6
const int MS_PIN = 15;    // Schrittauflösung (MS1)
7
const int MS2_PIN = 13;   // Schrittauflösung (MS2)
8
const int MS3_PIN = 12;   // Schrittauflösung (MS3)
9
const int EN_PIN = 25;    // Enable-Pin
10
const int STEP_PIN = 26;  // Step-Pin
11
const int DIR_PIN = 27;   // Richtungs-Pin
12
13
void setup() {
14
15
  // Pin-Modi festlegen
16
  pinMode(MS_PIN, OUTPUT);
17
  pinMode(MS2_PIN, OUTPUT);
18
  pinMode(MS3_PIN, OUTPUT);
19
  pinMode(EN_PIN, OUTPUT);
20
  pinMode(STEP_PIN, OUTPUT);
21
  pinMode(DIR_PIN, OUTPUT);
22
23
  // Schrittauflösung einstellen (Vollschritt)
24
  digitalWrite(MS_PIN, LOW);
25
  digitalWrite(MS2_PIN, LOW);
26
  digitalWrite(MS3_PIN, LOW);
27
28
  digitalWrite(EN_PIN, LOW); // Set the Enabled state to LOW, so the driver is being used
29
  
30
  Serial.begin(115200);
31
}
32
33
void loop() {
34
  // Motor eine volle Umdrehung im Uhrzeigersinn durchführen lassen
35
  digitalWrite(DIR_PIN, HIGH);  // Richtung: Uhrzeigersinn
36
  
37
  for (int i = 0; i < 200; i++) {
38
    digitalWrite(STEP_PIN, HIGH);
39
    delayMicroseconds(500);  // Schrittpause
40
    digitalWrite(STEP_PIN, LOW);
41
    delayMicroseconds(500);  // Schrittpause
42
  }
43
44
  delay(25);
45
}

: Verschoben durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jonas schrieb:
> Hat irgendwer eine Idee, was an diesem Aufbau falsch laufen könnte?
Hast du mal gemessen (Oszilloskope sind echt tolle Geräte!), ob die 
Pulse in wie  in Pegel und Frequenz benötigt an der Steuerung anliegen?

> 1.5 Ampere für den maximalen Motorstrom
Dir ist schon irgendwie klar, dass diese Steckbrettkontakte samt Kabel 
bestenfalls für 100mA taugen?

: Bearbeitet durch Moderator
von Jonas (jocze)


Lesenswert?

Nein, diese Messung habe ich nicht durchgeführt. Ich habe auch leider 
kein Oszilloskop, nur ein Multimeter.

Zum zweiten Teil der Antwort:
Ich habe den gesamten Versuchsaufbau auch ohne Steckbrett und nur über 
Jumper Wires gemacht, auch da hatte ich kein anderes Ergebnis.

Oder ist die Verwendung von Jumper Wires an bestimmten Stellen des 
Aufbaus generell nicht zulässig?

Wie gesagt, ich bin in dem Thema wirklich nicht erfahren :/

von H. H. (Gast)


Lesenswert?

Lothar M. schrieb:
> Dir ist schon irgendwie klar, dass diese Steckbrettkontakte samt Kabel
> bestenfalls für 100mA taugen?

Und die Eisendrähte in den Käbelchen sind auch nicht für höhere Ströme 
tauglich.

von Udo S. (urschmitt)


Lesenswert?

Jonas schrieb:
> für ein Uni-Projekt.

Jonas schrieb:
> Ich habe auch leider kein Oszilloskop, nur ein Multimeter.

Dann geh zu deinem Betreuer und lass dir eins geben.
Von einem Studenten sollte man etwas mehr an Eigeninitiative erwarten 
können.

von Andreas M. (amesser)


Lesenswert?

Jonas schrieb:
> 0.068 Ohm für die current sensing resistance verwendet, wobei ich diesen
> Standardwert aus dem Video entnommen habe. In den Daten zum Motortreiber
> hab ich diesen Wert leider nicht gefunden.

Dein Treiber hat 200mOhm Sense-Widerstände. D.h. der liefert mit der 
Einstellung jetzt max 500mA. Hier ist der Schaltplan:

https://shop.myhobby-cnc.de/bauteile/elektronische-bauteile/aktive/38/stepstick-a4988-treibermodul

(Man sieht es auch gut auf dem Foto von Deinem Amazon Link. Doe beiden 
großen Widerstände mit "R200" sind die Sense-Widerstände. Kannst ja mal 
mit Deinem Board vergleichen.

Ich sehe auf Deinem Foto nochmal Jump-Wires zwischen Motor und Treiber. 
Kannst Du den Motorstecker nicht direkt auf den Treiber stecken?

Die Jumpwires für die Motorstromversorgung würde ich durch anständige 
Drähte ersetzen, am besten direkt anlöten oder selber Crimpen. Gute 
Dupont Verbinder sollten bis 2A gehen.

von Jonas (jocze)


Angehängte Dateien:

Lesenswert?

H. H. schrieb:
> Lothar M. schrieb:
>> Dir ist schon irgendwie klar, dass diese Steckbrettkontakte samt Kabel
>> bestenfalls für 100mA taugen?
>
> Und die Eisendrähte in den Käbelchen sind auch nicht für höhere Ströme
> tauglich.

Ich habe den Versuchsaufbau entsprechend angepasst und habe die Klemmen 
nun direkt mit dem Motortreiber verbunden.

Auch nutze ich hier kein Breadboard mehr sondern verkabel alle PINs 
direkt über Female-to-Female Jumper Wire (siehe Anhang).

Auch hier ändert sich leider nichts am Resultat.

von Michael B. (laberkopp)


Lesenswert?

Jonas schrieb:
> Erst, wenn ich die Kabel am Motortreiber etwas zusammendrücke, macht der
> Motor Geräusche und dreht sich ab und zu

Jonas schrieb:
> Hat irgendwer eine Idee, was an diesem Aufbau falsch laufen könnte?

Offensichtlich Kontaktprobleme, daher;

Jonas schrieb:
> dutzende Jumper Wires,

Ein 1.5A Schrittmotor benötigt 2.1A Treiberstrom für volles Drehmoment. 
Da sind deine Winztreiber zum Geizpreis nicht geeignet, die bei 800mA 
schon  den Hitzetod sterben. Aber drehen müsste er sich. Mit 1000Hz Takt 
sollte der Motor drehen, auch wenn man ENABLE, MS1, MS2, MS3, RESET und 
SLEEP nicht angeschlossen hat. Du hast sie mit dem ESP verbunden und 
setzt sie auf Vollschritt, macht 300upm, ich würde mal 1/16 Mikroschritt 
wählen, wozu kauft man sonst einen Mikroschritttreiber.

Den überall gezeichneten mindestens 100uF (besser 1000uF) Elko an der 
Versorgungsspannungsanschlüssen des A4988 Boards gegen Rückströme hast 
du NATÜRLICH nicht eingebaut, man soll sie auch auf der Platine anlöten 
weil sie gesteckt schon fast wirkungslos sind und eine Beschädigung des 
Treiber-IC nicht mehr verhindern können. Zumindest so lange man nicht an 
der Motorachse per Hand dreht und den Schrittmotor im Generatorbetrieb 
in die Versorgungsspannung speisen lässt.

Masse der 3.3V sollte mit Masse der 18V über das A4988 Board hergestellt 
sein. Eine extra Verbindung kann auch nicht schaden.

von Heiner B. (karadur)


Lesenswert?

Wie versorgst du eigentlich den Controller?

18V seh ich für den Motor.

von Rainer W. (rawi)


Lesenswert?

Jonas schrieb:
> Nein, diese Messung habe ich nicht durchgeführt. Ich habe auch leider
> kein Oszilloskop, nur ein Multimeter.

Dann nimm dein Multimeter.

Mit dem A4988 kannst du den Motor Schritt für Schritt weiterschalten und 
bei jedem einzelnen Schritt alles nachmessen. Vergiss erstmal den ESP32 
und steuere den Stepper-Controller z.B. über Kippschalter (mit RS-FF zur 
Entprellung) an.

von Andreas M. (amesser)


Lesenswert?

Heiner B. schrieb:
> Wie versorgst du eigentlich den Controller?

Ja genau, auf Deinem Foto sieht es so aus, als ob der ESP gar keinen 
Strom hat. Das Schrittmotor-Board stellt keine Stromversorgung für den 
ESP bereit!

von Steve van de Grens (roehrmond)


Lesenswert?

Andreas M. schrieb:
> Das Schrittmotor-Board stellt keine Stromversorgung für den
> ESP bereit!

Und selbst wenn es so wäre, sehe ich immer noch (wahrscheinlich) 
ungeeignete Dupont Kabel. Die taugen nicht zur Stromversorgung von ESP 
Modulen.

Das wurde bereits geschrieben, offenbar noch nicht oft genug.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jonas schrieb:
> Ich habe den Versuchsaufbau entsprechend angepasst
Hast du einen Schaltplan zu dieser Verdrahtung? Schaltpläne sind das 
sprachübergreifende Kommunikationsmittel schlechthin bei 
Elektr(on)ikern. Daran kann man systematische Fehler am einfachsten 
erkennen.

> Auch hier ändert sich leider nichts am Resultat.
Wie gesagt: nicht im Trüben herumstochern, sondern Tatsachen 
feststellen. Mit einem geeigneten Messgerät. Für höhere Frequenzen und 
dynamische Signale ist das ein Oszilloskop. Ein Hardwareentwickler und 
ein maschinennaher Embedded-Programmierer sollte so ein Gerät 
(wenigstens rudimentär) bedienen können.

Bis du eines gefunden hast, kannst du auch einfach mal einen 
Sekundentakt ausgeben und mit dem Multimeter messen, ob die Pegel passen 
(gemessen an den Pins des Schrittmtotrtreibers, denn der sieht nur die 
Pegel, die dort anliegen). Dann müsste der Schrittmotor eben ganz 
langsam laufen.

Rainer W. schrieb:
> Vergiss erstmal den ESP32 und steuere den Stepper-Controller z.B. über
> Kippschalter (mit RS-FF zur Entprellung) an.
Ich nehme für erste Inbetriebnahme einfach einen Signalgenerator.

von Steve van de Grens (roehrmond)


Lesenswert?

Lothar M. schrieb:
> Ich nehme für erste Inbetriebnahme einfach einen Signalgenerator.

Ich auch, nutze so etwas: 
https://www.aliexpress.com/item/1005004904078432.html
Davon gibt es gefühlt alle 3 Monate andere Varianten.

von Jonas (jocze)


Lesenswert?

Heiner B. schrieb:
> Wie versorgst du eigentlich den Controller?
>
> 18V seh ich für den Motor.

Der Controller wird über meinen Laptop versorgt, von dem auch der Sketch 
auf den ESP32 geladen wird. Auf den Fotos ist er nur gerade nicht 
angeschlossen.

von Jonas (jocze)


Lesenswert?

Michael B. schrieb:
> Jonas schrieb:
>> Erst, wenn ich die Kabel am Motortreiber etwas zusammendrücke, macht der
>> Motor Geräusche und dreht sich ab und zu
>
> Jonas schrieb:
>> Hat irgendwer eine Idee, was an diesem Aufbau falsch laufen könnte?
>
> Offensichtlich Kontaktprobleme, daher;
>
> Jonas schrieb:
>> dutzende Jumper Wires,
>
> Ein 1.5A Schrittmotor benötigt 2.1A Treiberstrom für volles Drehmoment.
> Da sind deine Winztreiber zum Geizpreis nicht geeignet, die bei 800mA
> schon  den Hitzetod sterben. Aber drehen müsste er sich. Mit 1000Hz Takt
> sollte der Motor drehen, auch wenn man ENABLE, MS1, MS2, MS3, RESET und
> SLEEP nicht angeschlossen hat. Du hast sie mit dem ESP verbunden und
> setzt sie auf Vollschritt, macht 300upm, ich würde mal 1/16 Mikroschritt
> wählen, wozu kauft man sonst einen Mikroschritttreiber.
>
> Den überall gezeichneten mindestens 100uF (besser 1000uF) Elko an der
> Versorgungsspannungsanschlüssen des A4988 Boards gegen Rückströme hast
> du NATÜRLICH nicht eingebaut, man soll sie auch auf der Platine anlöten
> weil sie gesteckt schon fast wirkungslos sind und eine Beschädigung des
> Treiber-IC nicht mehr verhindern können. Zumindest so lange man nicht an
> der Motorachse per Hand dreht und den Schrittmotor im Generatorbetrieb
> in die Versorgungsspannung speisen lässt.
>
> Masse der 3.3V sollte mit Masse der 18V über das A4988 Board hergestellt
> sein. Eine extra Verbindung kann auch nicht schaden.

Es soll halt für ein Uniprojekt herhalten und ich bin der - im 
Nachhinein scheinbar naiven - Vorstellung an das Projekt rangegangen, 
dass es schon nicht so schwer und finanziell problematisch sein kann, 
einen etwas stärkeren Motor anzusteuern.

Auch Eigenrecherchen hatten mich ermutigt, dass die Kombination aus 
Motor und Motortreiber in Ordnung seien.

Den Capacitor habe ich tatsächlich vergessen. Ich habe leider auch 
mittlerweile die Befürchtung, dass die beiden Treiber durch die vielen 
Versuche hinüber sind.

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Jonas schrieb:
> Ich habe leider auch mittlerweile die Befürchtung, dass die beiden
> Treiber durch die vielen Versuche hinüber sind.

Wichtiger Hinweis am Rande:
Trenne NIEMALS die Verbindung zum Schrittmotor wenn der Treiber mit 
Spannung versorgt wird!

von Steve van de Grens (roehrmond)


Lesenswert?

Jonas schrieb:
> Ich habe leider auch mittlerweile die Befürchtung, dass
> die beiden Treiber durch die vielen Versuche hinüber sind.

Was man mit einem Oszilloskop und zwei simplem Lastwiderständen 
(anstelle des Motors) sehr schnell prüfen könnte.

von Uli S. (uli12us)


Lesenswert?

Es ist auch nicht schwer so einen Motor anzusteuern, es gibt schon für 
einstellige bzw mittlerweile ganz minimal 2 stellige Euros richtige 
Steppertreiber TB6600. Über die Qualität reden wir da besser nicht, 
genausowenig über das, was da drin verbaut ist. Jedenfalls brauchen die 
Dinger nicht mehr wie eine entsprechend leistungsfähige Stromversorgung 
und Ansteuerung über Step/dir.

Oder vielleicht besser für dich, es gibt auch Schrittmotore mit 
eingebautem Treiber, der ist dann auf den Motor abgestimmt, da passt 
dann alles zusammen, aber der Nachteil ist halt, so was kostet deutlich 
mehr wie eine Kombi aus 2 Teilen.

von Andreas M. (amesser)


Lesenswert?

Jonas schrieb:
> Es soll halt für ein Uniprojekt herhalten

Und an der ganzen Uni gibt es natürlich kein einziges Oszi...

Jonas schrieb:
> im
> Nachhinein scheinbar naiven - Vorstellung an das Projekt rangegangen,
> dass es schon nicht so schwer

Ist es auch nicht. Erstinbetriebnahme ist ne Sache von max. einer halben 
Stunde, mit Erfahrung dauert das keine 10 Minuten. Wie oben bereits 
geschrieben ist der erste Schritt den Treiber ohne den ESP zu verwenden. 
Man kann die Steuersignale auch händisch erzeugen, da reichen ein paar 
Taster.

Jonas schrieb:
> Ich habe leider auch
> mittlerweile die Befürchtung, dass die beiden Treiber durch die vielen
> Versuche hinüber sind.

Glaube ich nicht. Die haben ne ganze Menge Schutzschaltungen integriert. 
Da musst Du schon sehr viel verpolt haben.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jonas schrieb:
> habe leider auch mittlerweile die Befürchtung
Daraus lässt sich mit einem Oszilloskop innerhalb einiger Minuten 
Gewissheit machen.

Ein Wort aus der Praxis: wenn irgendwo was faul ist und nicht so tut wie 
ich es will, dann nehme ich ein Oszilloskop. Dieses Messgerät zu 
besitzen (oder wenigstens einen, der es verleiht) und zu beherrschen ist 
unabdingbar wenn man mit Elektronik rummachen will. Und da gibts heute 
schon Teile, die weniger kosten als das, was man an einem Urlaubstag auf 
den Kopf haut oder auch weniger als die Eintrittskarte zum nächsten 
hippen Konzert eines angesagten Musikanten.

Steve van de Grens schrieb:
> Was man mit einem Oszilloskop und zwei simplem Lastwiderständen
> (anstelle des Motors) sehr schnell prüfen könnte.
Nichtmal unbedingt sicher, dass das geht, denn die getaktete 
Stromregelung (Chopper) könnte da einen Strich durch die Rechnung 
machen. Aber mit dem Widerstandsmessbereich des Multimeters kann man den 
Schrittmotor prüfen (beide Wicklungen müssen den selben Widerstand 
haben) und dann die Motorspannung mit dem Oszilloskop anschauen.

Magnus M. schrieb:
> Wichtiger Hinweis am Rande:
> Trenne NIEMALS die Verbindung zum Schrittmotor wenn der Treiber mit
> Spannung versorgt wird!
Es ist generell schlecht, Schaltungen unter Spannung umzustecken, denn 
da können Ströme auf Wegen fließen, die nicht für den Stromfluss 
ausgelegt sind. Und mit den Steckbrettern passiert das wegen 
irgendwelchen Wackelkontakten auch ohne dass man da aktiv mitwirkt.

von Steve van de Grens (roehrmond)


Lesenswert?

Ein Elektroniker ohne Oszilloskop ist
- wie ein Geisterjäger ohne Wünschelrute
- wie ein Klavierstimmer ohne Gehör
- wie ein Maler ohne Licht

(Wem fallen noch blödere Vergleiche ein?)

von Udo S. (urschmitt)


Lesenswert?

Steve van de Grens schrieb:
> Wem fallen noch blödere Vergleiche ein?

wie ein Moby ohne mikrocontroller.net

SCNR

von Jonas (jocze)


Lesenswert?

Andreas M. schrieb:

> Und an der ganzen Uni gibt es natürlich kein einziges Oszi...

Versteht mich nicht falsch. Ich bin extrem dankbar für jeden Hinweis und 
werde auch versuchen, die Tipps nach und nach zu testen und die 
fehlenden nötigen Bauteile zu organisieren u.a. auch mit Absprache 
meiner Dozenten.

Es ist ja mitnichten so, dass ich all diese Fehler absichtlich oder aus 
reiner Faulheit mache sondern viel mehr aus (noch) Unwissenheit.

: Bearbeitet durch User
von Uli S. (uli12us)


Lesenswert?

Wie gesagt, beschaff dir so einen TB6600 Steppertreiber. Das Teil kostet 
je nachdem wo knapp unter bis über nem Zehner. Die Dinger funktionieren, 
haben halt nicht den besten Ruf, besonders was Laufruhe und Kraft bei 
hohen Drehzahlen anbetrifft. Beides sollte für deine Zwecke aber kaum 
eine Rolle spielen. Ach so, du brauchst natürlich auch ein Netzteil das 
den Strom bei der gewünschten Betriebsspannung liefert.

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.