Ich versuche, meinen Schrittmotor dazu zu bringen, sich um 90 Grad zu drehen, für eine Sekunde anzuhalten und diese Schritte zu wiederholen.
Bitte beachten Sie, dass ich ein Anfänger bin, aber ich habe Physikkurse belegt, sodass ich die meisten grundlegenden Elektronikkonzepte wie Spannung, Stromstärke, Reihenschaltung, Parallelschaltung, Widerstand usw. verstehe.
Ich richte dies also mit einem Himbeer-Pi ein, der an einen a4988 Pololu-Schrittmotortreiber angeschlossen ist, der 2 Ampere bei optimaler Kühlung und 12 V ausgibt, mit einem bipolaren Schrittmotor, der mit 2 / Ampere pro Phase bewertet ist und 12 V empfängt . Die Motoren werden von einem 30 Ampere, 12V Netzteil versorgt.
Alles ist nach beiliegendem Schema verdrahtet und mehrfach getestet. Viele verschiedene Skripte wurden verwendet, und derzeit verwenden wir ein Python-Skript vom RPI, das 50 Schritte (90 Grad) ausführt und dann eine Sekunde wartet. Dieser Code funktioniert und ist korrekt, weil er manchmal funktioniert. Beim Laufen erwärmt sich der Motor zwar, fühlt sich aber nicht heiß an. Wenn es eingeschaltet ist, aber keinen Code ausführt, summt und klickt es manchmal und bewegt sich nicht. Online-Quellen sagten, das sei in Ordnung.
Es scheint sehr zufällig zu sein, wann es funktioniert und wann es nicht funktioniert, zum Beispiel beim Testen des Stroms, der durch einen der Spulendrähte fließt, mit einem in Reihe geschalteten Multimeter, der Motor funktioniert einwandfrei, aber wenn das Multimeter nicht da ist, das Der Motor flippt aus, summt und ändert die Richtung unregelmäßig. Eine Theorie von mir, warum dies der Fall ist, ist auf den zusätzlichen Widerstand zurückzuführen. In diesem Fall kann das Einfügen eines Widerstands in Reihe das Problem beheben, scheint jedoch nicht die Wurzel zu beheben Das Thema.
Andere ergriffene Maßnahmen: - Verwenden eines Arduino Uno anstelle von Pi, dieselben Probleme - Ausführen des Codes auf unterschiedliche Weise, unterschiedliche Bibliotheken usw. - Wechsel zu einem anderen Motor und Treiber. - alles mehrmals neu verdrahtet - Einstellen der Spannungsregelschraube am Treiber. - ausreichende Kühlung für das Netzteil und den Treiber (2 120-Mil-Lüfter)
-- Verdrahtungsplan
https://i.imgur.com/undefined.jpeg – Bild der Einrichtung
- Code verwendet
Jede Hilfe oder Vorschläge wären sehr willkommen, es sind zu viele Stunden in diese Arbeit geflossen. LMK, wenn zusätzliche Informationen benötigt werden.
Mehrere Möglichkeiten:
Sie können versuchen, Verzögerungen hinzuzufügen, um eine Einschaltdauer von 50 % zu erhalten, wie von Jonk vorgeschlagen.
...
GPIO.output(21,true)
time.sleep(0.01)
GPIO.output(21,false)
time.sleep(0.01)
...
Sie können auch versuchen, Ihrem Code Beschleunigungs- und Verzögerungsrampen hinzuzufügen und eine Arduino-Bibliothek zu verwenden, die diese unterstützt (wie AccelStepper).
Außerdem verursacht die Kontextumschaltung auf dem Raspberry Pi eine Ungleichmäßigkeit im Timing der Schrittimpulsfolge, was dazu führt, dass der Motor aufgefordert wird, sehr schnell zu beschleunigen und zu verzögern, was die Drehmomentfähigkeiten des Motors überschreiten kann. Das Drehmoment von Schrittmotoren fällt im Allgemeinen mit der Drehzahl ab, hat jedoch normalerweise ein Resonanzband, in dem das Drehmoment in einem bestimmten Drehzahlbereich auf nahezu Null abfällt. Das Anbringen eines Schwungrads auf der Welle (oder einer anderen Last mit etwas Winkelträgheit) kann den Resonanzeffekt minimieren.
Dies spiegelt mehrere Beobachtungen / Vorschläge von anderen wider und nachdem ich die Stepper-Steuerung mehr als einmal mit A4988 durchgeführt habe, wäre meine Wäscheliste (in Reihenfolge);
Transistor
jonk
Transistor
glen_geek
Jake Chunn
glen_geek
Spannungsspitze
ufok