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
BluetoothSerialSerialBT;
4
5
// Schrittmotor-Pinbelegung
6
constintMS_PIN=15;// Schrittauflösung (MS1)
7
constintMS2_PIN=13;// Schrittauflösung (MS2)
8
constintMS3_PIN=12;// Schrittauflösung (MS3)
9
constintEN_PIN=25;// Enable-Pin
10
constintSTEP_PIN=26;// Step-Pin
11
constintDIR_PIN=27;// Richtungs-Pin
12
13
voidsetup(){
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
voidloop(){
34
// Motor eine volle Umdrehung im Uhrzeigersinn durchführen lassen
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?
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 :/
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.
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.
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.
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.
Jonas schrieb:> Erst, wenn ich die Kabel am Motortreiber etwas zusammendrücke, macht der> Motor Geräusche und dreht sich ab und zuJonas 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.
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.
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!
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.
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.
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.
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.
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!
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.
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.
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.
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.
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?)
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.
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.