Verlangsamen Sie die Geschwindigkeit des Schrittmotors mit dem Schritttreiber DRV 8825

Ich habe eine Nema 17 mit einer Nennleistung von 0,8 Ampere und einem Schrittwinkel von 1,8 Grad .

Der Motor sieht so aus und hat sechs Drähte, die aus ihm herauskommen:

Nema 17

Die vier Drähte, die ich verwendet habe, sind die unten gekennzeichneten (ich wurde von meinem Verkäufer angewiesen, alles außer dem schwarzen und dem weißen zu verwenden):

Drähte

Meine aktuelle Verkabelung:

Sowohl die Drähte A+ als auch B+ sind mit A1 bzw. B1 verbunden. Ebenso sind A- und B- mit A2 bzw. B2 verbunden.

Verdrahtung

Ich versuche, diesen Motor mit einem Arduino Uno und einem Polulu DRV 8825- Treiber zu verwenden. Die Stromversorgung des Motors beträgt 12 V, 500 mA über den Schritttreiber.

Ich treibe den Stepper-Treiber mit zwei Drähten (einer für den Schritt, einer für die Richtung). Meine gesamte Verkabelung wurde auf Korrektheit überprüft.

Ich versuche, diesen Motor für meinen Kameraschieber zu verwenden, aber ohne Glück.

Das Problem

Ich möchte mit meinem Stepper eine wirklich langsame, aber gleichmäßige Rotation erreichen, kann dies aber nicht. Idealerweise möchte ich so niedrige Geschwindigkeiten erreichen, wie in diesem YouTube-Video gezeigt .

Wenn ich versuche, die Geschwindigkeit der Schrittgeschwindigkeit durch meinen Code zu variieren, verringert sich die Geschwindigkeit nur geringfügig (definitiv nicht so langsam, wie ich möchte), und selbst wenn dies der Fall ist, gibt es bei diesen bestimmten Geschwindigkeiten viele Vibrationen. Allerdings gibt es nur einen (kleinen) Drehzahlbereich, in dem der Motor leise ist. Ich fürchte, diese Vibrationen können mein Slider-Setup völlig unbrauchbar machen.

Gearing ist aufgrund des Platzmangels auch keine wirkliche Option (ich möchte, dass dieser Slider leicht ist und ohne große Probleme in einen Reisekoffer passt.)

Ich habe auch versucht, Mikroschritte durch meinen Treiber (DRV 8825) zu machen - Bei gleichen Geschwindigkeitswerten (wie bei Vollschritten) kann die Motorspule vibrieren gehört werden. Und wenn ich die Werte anpasse, um den Motor drehen zu lassen, scheint es ein (ungefähres) Vielfaches der Werte zu sein, die ich zuvor für Vollschritte verwendet habe, wodurch der Motor wiederum nur in den gleichen Bereichen verwendbar ist wie im Vollschritt Modus. Andernfalls vibriert der Motor entweder stark oder leicht, aber ohne Drehung.

Versuchte Lösungen:

1) Mikroschritt (kein Glück)

2) Gearing (Erprobt und funktioniert, kann aber nicht für meinen Anwendungsfall verwendet werden)

3) Verschiedene Stepper-Bibliotheken (Accel, PWM usw.)

4) Variable Widerstandssteuerung (Kein Glück)

An diesem Punkt bin ich völlig verloren und ahnungslos. Könnte es etwas Einfaches sein, das ich vielleicht verpasse? Oder könnte es etwas Drastisches sein, wie das Ändern einer Hauptkomponente (wie des Motors selbst oder des Treibers)? Jede Hilfe wäre sehr willkommen, und wenn Erläuterungen erforderlich sind, werde ich sie sehr gerne zur Verfügung stellen.

Danke!

Mein aktueller Code als Referenz:

#include <AccelStepper.h>

AccelStepper stepper (1, 9, 8);
int MODE0 = 7;
int MODE1 = 6;
int MODE2 = 5;

void setup()
{  
   stepper.setMaxSpeed(15000);
   stepper.setSpeed(12000);
   pinMode(MODE0, OUTPUT); 
   pinMode(MODE1, OUTPUT); 
   pinMode(MODE2, OUTPUT);


   //Motor is now running in Microstepping mode (1/16)

   digitalWrite(MODE0, LOW);
   digitalWrite(MODE1, LOW);
   digitalWrite(MODE2, HIGH);

}

void loop()
{  

   stepper.runSpeed();
}
Wie haben Sie entschieden, wie Sie die 6 Drähte des Schrittmotors mit den 4 Ausgängen des DRV8825 verbinden?
Gemäß den Dokumenten, die besagen, dass ich dies tun kann, hier: pololu.com/product/2133
Hmm, du machst es dir nicht leicht. Ich habe gefragt, wie Sie entschieden haben, wie die Drähte angeschlossen werden sollen - ich wollte keinen Link zu einem Datenblatt, das NUR DIE HÄLFTE der Geschichte wiedergibt. Beweisen Sie mir, dass Sie es richtig verdrahtet haben.
Entschuldigung, das war nicht meine Absicht. Ich verwende den unipolaren Schrittmotor als bipolaren Schrittmotor. Ich verbinde die vier Drähte mit den vier Leitungen des Treibers. Die verbleibenden zwei bleiben im Leerlauf (wie im FAQ-Abschnitt der oben verlinkten Dokumente erwähnt). Beifall!
Details zu den 6 Drähten, von denen Sie 4 verwendet haben?
Hallo Andy, ich habe ein Foto hinzugefügt und auch meine Frage bearbeitet. Danke!
Was ist also mit den Details, damit wir uns selbst überprüfen können? Wenn ich mir Ihr Bild ansehe, sehe ich 4 Drähte mit dem Namen, aber wie werden diese mit dem DRV8825 verbunden? Ich sage das, weil ich ein potenzielles Problem mit dem sehe, was Sie für A- und B + halten - ich glaube, Sie haben sie falsch herum.
Wow, daran habe ich nie gedacht. Ich habe die Frage mit meinem aktuellen Schaltplan aktualisiert. Beifall!
Warum stellen Sie keine Verbindung zum Motor her, damit ich überprüfen kann, ob Sie die Verkabelung richtig interpretiert haben?
Hallo Andy, ich habe es in Singapur in einem örtlichen Elektronikgeschäft gekauft, diese Bilder und (vage) Beschreibungen hatte mir der Händler per E-Mail geschickt. Da Sie dies jedoch vorgeschlagen haben, werde ich die Ohm zwischen den Spulen messen, um zu sehen, ob sie korrekt sind. Das sollte ein guter Anfang sein, meinst du nicht? Wenn das, was Sie vorgeschlagen haben, eine Antwort wäre und wenn dies der Fall wäre, würde ich sie gerne akzeptieren und diese Frage schließen (wenn Sie Recht hätten) :)
Sie sind sich nicht sicher, wie Sie Mikroschritte mit Code ändern könnten, wenn Sie den Treiber auf M0M1M2 nicht mit dem Prozessor verbunden haben? Zumindest ist es nicht in Ihrem Diagramm. Kannst du bestätigen? Marek
Ihr Code für Mikroschritte ist korrekt. Aber Sie haben die Befehlsausgänge (Pins 5,6,7 des Arduino) nicht mit den entsprechenden Eingängen auf dem Schild verbunden: M0, M1 und M2 !!!
@BlaiseMuller: Willkommen bei EE.SE. Während diese Signale auf dem Schaltplan weggelassen wurden, gehe ich davon aus, dass der Fragesteller sie richtig angeschlossen hatte und sich mehr um die Verbindungen zwischen dem Controller und dem Motor sorgte, nicht um die Verbindungen zwischen dem Arduino und dem Controller.
Ich stimme dafür, diese Frage als unbeantwortbar unklar zu schließen, da wichtige Details der Treiberplatinenverbindung weggelassen werden. Darüber hinaus hat der Poster eine Antwort akzeptiert, die tatsächlich falsch ist – derzeit lädt der Stand der Frage zu neuen Antworten ein, um diese Fehler zu korrigieren, aber diese Antworten werden nicht begrüßt, da sich der Poster anscheinend irgendwie befriedigt hat. Diese Frage hier zu haben, nützt niemandem, "es ist eine Falle!"

Antworten (3)

Okay, es stellte sich heraus, dass es auch ein Problem mit einer Verkabelung gab und die Beschriftung der Motoren tatsächlich falsch war. Ein großes Dankeschön an Andy, der seine kostbare Zeit damit verbracht hat, mir zu helfen.

Wie ich das Problem gelöst habe

Update: Nach einer Diskussion mit einem der folgenden Kommentatoren wurde festgestellt, dass es keinen Unterschied in der Reihenfolge der an den Treiber angeschlossenen Kabel gibt, daher spielt die Reihenfolge der in meiner Frage und in der folgenden Antwort gekennzeichneten Kabel keine so große Rolle als Einstellung des Werts am variablen Widerstand selbst.

Diese Treiber haben einen winzigen variablen Onboard-Widerstand, der den Strom zum Motor begrenzt. Ich musste es nur optimieren, damit alles funktionierte. Jetzt läuft der Motor mit extrem niedrigen Drehzahlen, wenn auch mit leichten Vibrationen (im Vollschrittmodus).

Nachdem ich den vom Chip bereitgestellten Mikroschrittmodus aktiviert hatte, konnte ich die Vibrationen erheblich dämpfen und alles funktionierte butterweich.

Für alle anderen, die diesen Motor haben könnten, hier sind einige Referenzen:

Orange und braune Drähte bilden eine Spule dieses Motors, wobei das Schwarze der Mittelabgriff ist.

Ebenso bilden Gelb und Rot die zweite Spule, wobei der weiße Draht der Mittelabgriff ist.

Die Art und Weise, wie Sie es an einen Polulu DRV8825 anschließen, ist wie folgt:

Geben Sie hier die Bildbeschreibung ein

Ich hoffe, das hilft allen anderen, die das gleiche Problem haben.

Beifall.

Dies ist als Antwort problematisch, da Sie sagen, dass das Problem bei der Verkabelung lag, aber was Sie jetzt tun, unterscheidet sich nicht von dem, was Ihre Frage impliziert, dass Sie es zuvor getan haben. Es scheint, als ob Ihr eigentliches Problem darin bestand, dass das, was Sie in der Frage präsentiert haben, nicht mit dem übereinstimmt, was Sie tatsächlich tun.
Wenn Sie das Diagramm in der Frage und das in der Antwort dargestellte Diagramm genauer betrachten, zeigt dies, dass die Reihenfolge der Verkabelung anders (und damit falsch) war, was die ursprünglich akzeptierte Antwort vorgeschlagen und daher in meinem festgelegt hatte auch antworten.
Bei der Verkabelung eines Schrittmotors gibt es keine "Reihenfolge". Es gibt nur Spulen, die Sie jetzt so identifizieren, wie Sie es von Anfang an getan haben. Wenn Sie die Polarität des Anschlusses an eine Spule ändern, dreht sich der Motor nur noch in die entgegengesetzte Richtung für die gleiche elektrische Sequenz.
@ChrisStratton Wenn die Polarität eines Spulenpaars nicht mit dem zweiten Paar übereinstimmt, würde sich der Schrittmotor nicht drehen (zumindest in meinem Fall), sondern nur einfach vibrieren, wenn er versucht, zwischen dem Linksdrehen zu wechseln und rechts. Hoffe, das beantwortet, warum die Bestellung existiert. Wie auch immer, die Reihenfolge ist ein Attribut der Antwort, das sich von der gestellten Frage unterscheidet, wodurch Ihre Punkte / Annahmen zur Frage selbst ungültig werden (dass es keinen Unterschied zwischen den Verbindungen des Systems und der Frage und Antwort gibt).
Du scheinst etwas zu beschuldigen, das eigentlich keine Rolle spielt. Wenn Sie ein funktionierendes Stepper-Setup haben und die Drähte einer Spule trennen und tauschen, wird die Motorleistung überhaupt nicht reduziert. Bei einem 6-Draht-Motor können Sie nicht "die Hälfte" einer Spule relativ zur anderen Hälfte umkehren - das wird nur mit einem 8-Draht-Motor möglich. Das einzige, was Sie mit einem Motor mit sechs Drähten tun könnten, wäre, alle drei Drähte zu verwenden, wobei der mittlere Abgriff an einem Anschluss und beide Enden am anderen liegen, sodass sich das Feld selbst aufhebt.
@ChrisStratton Ok, danke für die Klarstellung. Dann könnte die verursachte Vibration auf den falschen Wert zurückzuführen sein, der mit dem variablen Widerstand eingestellt wurde.

Nur wie die Drähte aus dem vom OP gelieferten Bild in den Schrittmotor gelangen, besteht eine vernünftige Chance, dass A- und B + falsch benannt werden. So interpretiere ich die Verkabelung zu den beiden Spulen mit Mittelabgriff im Schrittmotor: -

Geben Sie hier die Bildbeschreibung ein

Wenn dies der Fall ist, bin ich nicht überrascht, dass sich der Motor nicht richtig verhält. Ich begründe dies auf der Tatsache, dass Orange, Weiß und Gelb gruppiert zu sein scheinen, als ob sie zu einer der Spulen gehören und Braun, Schwarz und Rot für die andere Spule. Wenn dies der Fall ist, werden die Etiketten A- und B+ fälschlicherweise vertauscht.

Das klingt wahrscheinlich. Das OP muss mit einem Multimeter testen.
Tests laufen, wird bald aktualisiert, Leute! Vielen Dank :D
Nein, immer noch kein Glück. Der Multimetertest zeigt die folgenden Ergebnisse: [Orange-Braun = 8 Ohm] [Gelb-Rot = 8 Ohm] [Orange-Schwarz, Braun-Schwarz = 4,6 Ohm] Und [Gelb-Weiß, Rot-Weiß = 4,6 Ohm]. Daher sind Weiß und Schwarz die Mittelabgriffe. [Orange, Braun] und [Rot, Gelb] sind die erforderlichen Drähte. Aber auch nach der Neuverkabelung scheint das Verhalten das gleiche zu sein, wie ich es in der Frage beschrieben habe - Wenn ich versuche, eine bestimmte Geschwindigkeit zu unterschreiten, vibriert der Motor nur. Es gibt auch keine große Geschwindigkeitsänderung, wenn die Geschwindigkeit im Code variiert wird :(
Klingt enttäuschend - vielleicht ist der an Sie verkaufte Schrittmotor einfach nicht geeignet, das zu tun, was Sie wollen, oder vielleicht ist es eine Softwaresache? Hast du bestätigt, dass es keinen Zusammenhang zwischen Gelb und Schwarz gibt?
Hallo Andy, ich habe gerade bestätigt - KEINE Verbindungen zwischen Gelb und Schwarz und Orange und Weiß. Ich hoffe, dass dies nur ein Softwareproblem ist, da der Motor ansonsten ein hervorragendes Drehmoment (0,55 Nm) hat. Worauf sollte ich jetzt noch achten, nachdem die Verkabelung bestätigt wurde? Irgendwelche Hinweise?? Danke!
Während diese Antwort anscheinend akzeptiert wurde, weil sie das Poster irgendwie auf den richtigen Weg gebracht hat, ist es erwähnenswert, dass sie tatsächlich falsch ist. Die hier vorgeschlagene Verdrahtungstheorie entspricht nicht den Tatsachen.

Ihr Code kann den Mikroschrittmodus nur einstellen, wenn Sie die Befehlsausgänge Ihres Arduino (Pins 7, 6 und 5) mit den entsprechenden Eingängen auf dem DRV882x-Schild (Eingänge M0, M1 und M2) verbinden. Warum sollte der Chip sonst wissen, was Sie wollen?

In der Tat - obwohl dies anscheinend bereits getan wurde, aber nicht in Frage kam. Da das Problem des Posters offensichtlich gelöst wurde, ist die Dokumentation solcher Versäumnisse genauso wichtig wie alles andere, was hier gesagt wurde, wenn das Fortbestehen der Seite auf der Site einen zukünftigen Nutzen haben soll.