NEMA 17 Schrittmotor lässt sich nicht ansteuern.

OP #7474060
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
}
Moderator (Firma: Titel) Persönliche Seite #7474070
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?

OP #7474075
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 :/

#7474089
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.

OP #7474090
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.

Angehängte Dateien:
#7474093
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.

#7474133
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.

Gast #7474361
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.

Moderator (Firma: Titel) Persönliche Seite #7474435
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.

OP #7474563
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.

#7474616
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.

#7474654
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.

Moderator (Firma: Titel) Persönliche Seite #7474662
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.

OP #7474791
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.

#7475043
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren