Wie finde ich heraus, was mit meiner Einrichtung eines bipolaren Schrittmotors mit L293DNE-Treiber, der mit Arduino verbunden ist, nicht stimmt?

Mit diesem Blatt zu einem Arduino Uno versuche ich, einen bipolaren Schrittmotor anzutreiben. Ich habe alle Verbindungen 6 Mal herausgezogen und es jetzt erneut versucht, aber der Stepper macht immer noch nur eine seltsame Vibration, wenn er verbunden ist und ich das Schema hochlade. Ich habe die Paarung der Anschlüsse mit einem Multimeter überprüft, daher weiß ich, dass das nicht das Problem ist, aber irgendwo in meiner Verbindung muss ich etwas durcheinander gebracht haben. Wenn es helfen kann, habe ich einige Screenshots meines Setups am Ende des Beitrags hochgeladen. Ich bitte nicht darum, sie gründlich zu beobachten, um meinen Fehler zu finden, nur um einen kurzen Blick darauf zu werfen, ob offensichtliche Fehler vorhanden sind.

Schrittmotor-Datenblatt Schrittmotor-Spezifikationen

Alle Tipps zu häufigen Fehlern beim Anschließen von Steppern mit dieser Art von Treiber an Arduino sind ebenfalls hilfreich. Oder andere Anfängerfehler.

Hochladen des Schemas auf Arduino, das ich von dieser Seite kopiert habe: http://www.tigoe.com/pcomp/code/circuits/motors/stepper-motors/

Ich habe auch versucht, nur die Standard- Stepper.h-Bibliothek von Arduino.cc zu verwenden und die Werte mit zwei Pins zu ändern. Gleiches Ergebnis, nur zufällige Vibrationen vom Stepper.

Planen:Geben Sie hier die Bildbeschreibung ein

Vor dem Anschließen von Überbrückungskabeln:Geben Sie hier die Bildbeschreibung ein

Anschließen von NPN-Transistoren:Geben Sie hier die Bildbeschreibung ein

Alle Verbindungen hergestellt: (hier habe ich die Buchse, die an die Batterie geht, nur an die Stromquelle der 5 V im Arduino angeschlossen, ich habe es mit einer 12 V-Stromquelle versucht, was das gleiche Ergebnis liefert)Geben Sie hier die Bildbeschreibung ein

Ich weiß nicht, ob es hilfreich ist, aber ich kann mehr Bilder liefern.

Können Sie die Wellenformen des L293 erfassen, um zu bestätigen, dass die Sequenz korrekt ist? (Sie müssen den Motor dafür nicht einstecken) Ist Ihr Netzteil auch in der Lage, genügend Strom zu liefern, um den Motor zu starten/laufen zu lassen? (Laut Spezifikation benötigt es 12 V bei 350 mA oder mehr) Wie schnell treten Sie? (versuchen Sie es langsamer, um zu sehen, ob dies hilft)
@OliGlaser Danke für den Kommentar. Ich habe versucht, eine 12-V-Stromquelle anzuschließen. Der Schaft bewegt sich kaum ein kleines bisschen hin und her, das gleiche, aber weniger kraftvoll ohne Stromquelle. Sie haben nicht genug Erfahrung, um zu verstehen, was das Scoping der Wellenformen bedeutet, können Sie das verdeutlichen? Jetzt mit 1 Schritt mit 500 ms Verzögerung, also sehr langsam.
Entschuldigung - haben Sie ein Oszilloskop? Mit "Scoping" meinte ich, die Wellenformen auf einem zu betrachten.
Das habe ich nicht. Ich kann es aber mit einem anderen l293D-Chip versuchen, wenn das ein Punkt ist. Was ich ziemlich unsicher bin, ist, ob ich das Setup auf meinem NPN und meinen Widerständen richtig habe. #1 des NPN geht zum Widerstand und weiter zu 5V, das ist richtig oder?
OK. Für den NPN geht der Kollektor zum 10k-Widerstand und +V, aber die Pin-Nummer hängt davon ab, welchen NPN Sie verwenden, sie können unterschiedliche Pinbelegungen haben (Infos in den Datenblättern) - welche Teilenummer? Sie benötigen eine 12-V-Versorgung, die mindestens 350 mA (0,35 A) liefern kann.
@OliGlaser Du bist genial! Ich habe die Nummer gegoogelt, es war 2222A, was genau das Gegenteil von dem war, was ich dachte. NPN zurückgesetzt und voila. Es klappt! Danke für die Rückmeldung!
Kein Problem, freut mich dass es funktioniert :-)

Antworten (1)

Ich habe langjährige Erfahrung mit Schrittmotor-Antriebsschaltungen und an dem von Ihnen bereitgestellten Schaltplan ist grundsätzlich nichts auszusetzen. Es entspricht den Anforderungen des Datenblattes. Die Tatsache, dass der Motor summt, zeigt auch an, dass Sie Strom zum Treiber haben, Logiksignale mit dem Treiber verbunden sind und der Treiber mit dem Motor verbunden ist.

Um diese Schaltung zu finden, benötigen Sie ein Multimeter, ein paar kleine LEDs und ein paar Widerstände (Bereich 330R bis 680R).

Überprüfen Sie zuerst die Netzteile:

  1. Überprüfen Sie, ob alle Gnd-Anschlüsse miteinander verbunden sind - Ihr Arduino Gnd, die Treiber-+5-V-Versorgung Gnd und die Motor-+12-V-Versorgung Gnd. Wenn nicht, wird sich nichts so verhalten, wie Sie es erwarten.

  2. Wenn alles angeschlossen und eingeschaltet ist, überprüfen Sie mit dem Multimeter, ob zwischen Pin 16 und Gnd 4,5 V bis 5,5 V und zwischen Pin 8 und Gnd 10 V bis 15 V anliegen. Wenn nicht, müssen Sie dies zuerst korrigieren.

Verbinden Sie jede LED in Reihe mit einem der Widerstände. Schließen Sie dann eine LED-Widerstand-Kombination zwischen +5V und Pin 7 und die andere zwischen +5V und Pin 10 an Gnd). Ihre NPN-Transistor-Wechselrichter schalten diese LEDs gleichzeitig ein, während sie die invertierten Treiberstifte auf Low ziehen, sodass Sie genau sehen können, was mit Ihren Treibersignalen los ist.

Ändern Sie nun Ihren Arduino-Code so, dass er mit einer langsamen Schrittgeschwindigkeit läuft, etwa 1 Schritt pro Sekunde ist perfekt, und beobachten Sie die LEDs. Wenn Ihr Code korrekt ist und der Arduino korrekt mit der Schaltung verdrahtet ist, sollten Sie Folgendes beachten:

  1. Jede LED sollte alle 2 Sekunden ein- und ausschalten (4 Schritte für jede LED, um ihren Zyklus abzuschließen). Wenn eine der beiden LEDs nicht blinkt, überprüfen Sie, ob die LEDs richtig angeschlossen sind und der Arduino richtig mit dem Stromkreis verbunden ist.

  2. Jede LED sollte für die Hälfte der Zeit eingeschaltet sein, 2 Schritte ein und zwei Schritte aus. Wenn dies nicht der Fall ist, überprüfen Sie Ihren Arduino-Code.

  3. Bei jedem Schritt sollte nur eine LED den Zustand ändern. Wenn beide zusammen wechseln, entweder beide gleichzeitig an oder einer an und der andere gleichzeitig aus, dann hat der Motor keine Richtungsinformation und dreht sich nicht. Es bewegt sich abwechselnd von der Rastposition in eine aktivierte Position (weniger als einen halben Schritt) und wieder zurück. Wenn dies der Fall ist, gehen Sie zurück und sehen Sie sich Ihren Arduino-Code an. Sie haben ein Softwareproblem, kein Schaltungsproblem.

  4. Wenn die LEDs wie oben in 4-Zustands-Zyklen blinken, sind die Antriebssignale korrekt. Ihr Fokus muss sich nun auf die Verbindung zwischen Fahrer und Motor verlagern.

  5. Trennen Sie die Motoranschlüsse an den Pins 3 und 6 und messen Sie den Widerstand der Motorwicklung mit einem Multimeter. Es sollte ein Wert zwischen 25 und 50 Ohm sein. Wenn nicht, haben Sie nicht den Motor, von dem Sie denken, dass Sie ihn haben, oder wenn der Widerstand sehr hoch ist (oder ein offener Stromkreis), dann ist der Motor trotz Ihrer Überprüfung nicht richtig verdrahtet. Trennen Sie in diesem Fall die anderen beiden Drähte und suchen Sie ein Paar, das den korrekten Widerstand zwischen ihnen misst, und verbinden Sie dieses mit den Stiften 3 und 6 und die anderen beiden mit 10 und 15.

  6. Wenn die Motordrähte an den Pins 3 und 6 den richtigen Widerstand haben, schließen Sie sie wieder an und überprüfen Sie dasselbe mit den Drähten zwischen den Pins 10 und 15. Wenn ein Paar korrekt ist, das andere jedoch nicht, dann haben Sie einen defekten Motor dreht sich nicht unter Kontrolle.

Wenn alles oben genannte in Ordnung ist, aber die Schaltung immer noch nicht funktioniert, dann haben Sie meine Vorstellungskraft erschöpft. Bitte lassen Sie mich wissen, was Sie finden, und ich werde mein Bestes tun, um Ihnen weiter zu helfen.

Irgendwann, wenn alles funktioniert, die LED-Widerstandskombinationen entfernen, das waren nur Diagnosehilfen. Es gibt einige kleine Schaltungsverbesserungen, die ich vornehmen würde:

  1. Verringern Sie die Pullup-Widerstände des Wechselrichterausgangs auf etwa 2k7 (da beim maximal angegebenen Eingangsstrom möglicherweise ein Volt abfällt); Und

  2. Fügen Sie dem Treiber-IC einige gute Entkopplungskondensatoren hinzu (100-nF-Keramik zwischen Pin 16 und Gnd und etwas über 100 uF bei nicht weniger als 50 V Nennleistung zwischen Pin 8 und Gnd.

Diese halten die Dinge schön und ordentlich und widerstandsfähiger gegen Störungen und Temperaturänderungen, aber es ist NICHT Ihr Problem, sie nicht zu tun.

Betreiben Sie diese Schaltung nicht mit einer Motorversorgung über 18 V. Die ursprünglichen Silizium-Designs dieser Treiberfamilie waren fehleranfällig, wenn Sie auch nur daran dachten, dass die Motorspannung über die max. 36 V hinausging. Und viele Leute sind beim Ansteuern von Trägheitslasten aus dem Ruder gelaufen, die dazu führen, dass die Motoren Energie in die Motorversorgung regenerieren, die Versorgungsspannung vorübergehend erhöhen und den Treiber in die Luft jagen. Die maximal regenerierte Spannung ist gleich der Versorgungsspannung, also halten Sie diese unter 18 V und Sie können den Treiber nicht durch Regenerieren töten.

Viel Glück!

Wenn Sie die Kommentare gelesen hätten, hätten Sie gewusst, dass das Problem gelöst wurde und nichts mit Ihrer Aussage zu tun hatte.
@David Kessner Zing !
Ah, ich habe gesehen, dass @OliGlaser so dachte, aber die gezeigten Kommentare führten nicht zu diesem Schluss. Ich bin neu auf dieser Seite und habe nicht auf "Weitere Kommentare anzeigen" geklickt. Grundlegender Anfängerfehler, und das Obige wird nützlich sein, wenn nur jemandem beim Einschlafen helfen soll ...
@Billysugger Wirklich schöner Beitrag! Danke. Es ist gut, dass es als zukünftige Referenz dienen kann, wenn andere ähnliche Probleme wie meine haben. Wahrscheinlich eine häufige Frage für Leute aus dem Arduino-Neuling.
Meine Güte @Hakonbogen, das war mein erster Beitrag hier. Schön, dass es sich für Sie gelohnt hat. Sobald Sie Stepper zum Laufen gebracht haben, können Sie jede Menge damit machen.