Schnellstart
Um einen Schrittmotor zum Laufen zu bringen, sind drei Dinge erforderlich: eine logische Verbindung zu Ihrer Steuerung, eine separate Stromversorgung für den Motor und eine Strombegrenzung, die auf den vorhandenen Motor abgestimmt ist. Stellen Sie die Strombegrenzung ein, bevor sich der Motor überhaupt dreht, damit die Spulen niemals stärker belastet werden, als sie ausgelegt sind. Die Vorgehensweise finden Sie unter Hardware-Details.
In den hier gezeigten Beispielen wird der NULA DeepSleep ESP32-S3 als Controller verwendet. Jede Platine mit fünf freien digitalen Pins und 3,3-V- oder 5-V-Logik ist geeignet; lediglich die Pin-Nummern ändern sich.
Sie programmieren den an dieses Breakout-Board angeschlossenen Controller. Das Breakout-Board selbst wird nicht geflasht.
- Arduino
- MicroPython
1. Schließen Sie das Breakout-Board an
RESET und SLEEP müssen beide auf High liegen, damit der Treiber läuft, und beide verfügen über interne Pull-Down-Widerstände, sodass ein nicht angeschlossenes Board im Reset- und Schlafmodus bleibt. Die Arduino-Bibliothek greift niemals auf diese Pins zu. Verbinden Sie sie mit 3V3 und lassen Sie sie dort.
| Controller | Schrittmotortreiber-Platine DRV8825 |
|---|---|
| GND | GND (das Pad neben FAULT) |
| 3V3 | RST |
| 3V3 | SLEEP |
| IO5 | STEP |
| IO4 | DIR |
Die Motorstromversorgung ist separat und erfolgt nicht über den Controller:
| Motorstromversorgung | Schrittmotortreiber-Platine DRV8825 |
|---|---|
| 8,2 V bis 45 V | VIN |
| GND | GND (die Kontaktfläche neben VIN) |
Schließen Sie einen Kondensator über die Motorstromversorgung auf der Platine an. Das eigene Beispiel des MicroPython-Moduls weist darauf hin; den Wert entnehmen Sie bitte dem Datenblatt Ihres Motors.
2. Bibliothek installieren
Installieren Sie die „Soldered Basic Stepper Driver Arduino Library“ über den Bibliotheksmanager der Arduino-IDE oder laden Sie sie von der unten angegebenen Quelle herunter.
🔗Arduino-Bibliothek für einen gelöteten einfachen Schrittmotortreiber
AccelStepper-basierte Arduino-Bibliothek von Soldered
Tipp: Herunterladen von GitHub. Klicken Sie auf der GitHub-Seite der Bibliothek auf die grüne Code-Schaltfläche und wählen Sie ZIP herunterladen; fügen Sie die Bibliothek anschließend in der Arduino-IDE über Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen... hinzu.
3. Das erste Beispiel ausführen
Dies ist die Datei ConstantSpeed.ino mit einer Änderung: Der mitgelieferte Sketch ist
mit der Standardeinstellung FULL4WIRE erstellt, während dieses Board BasicStepper::DRIVER mit
Ihren STEP- und DIR-Pins benötigt. Ansonsten gibt es keine Unterschiede.
#include <Basic-Stepper-Driver-SOLDERED.h>
#define dirPin 4
#define stepPin 5
BasicStepper stepper(BasicStepper::DRIVER, stepPin, dirPin);
void setup()
{
stepper.setMaxSpeed(1000);
stepper.setSpeed(200);
}
void loop()
{
stepper.runSpeed();
}
4. Überprüfen Sie das Ergebnis
Der Motor dreht sich kontinuierlich in eine Richtung mit 200 Schritten pro Sekunde, was bei einem 200-Schritt-Motor im Vollschrittbetrieb etwa einer Umdrehung pro Sekunde entspricht. Es gibt keine serielle Ausgabe, beobachten Sie daher die Welle.
Wenn der Motor brummt oder ruckelt, anstatt sich zu drehen, wendet runSpeed() keine Beschleunigung an
und der Motor kann unter Last möglicherweise nicht mit dieser Drehzahl anlaufen. Verringern Sie
den Wert von setSpeed(), bis er sich dreht, und erhöhen Sie ihn dann wieder schrittweise.
5. Wenn es nicht funktioniert
Fahren Sie mit Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.
1. Das Breakout-Board anschließen
Das MicroPython-Modul steuert ENABLE, RESET und SLEEP selbst, daher werden alle fünf Steuerpins an GPIO angeschlossen.
| Controller | Schrittmotortreiber-Board DRV8825 |
|---|---|
| GND | GND (das Pad neben FAULT) |
| IO4 | DIR |
| IO5 | STEP |
| IO6 | EN |
| IO7 | RST |
| IO10 | SLEEP |
Die Motorstromversorgung erfolgt separat und nicht über den Controller:
| Motorstromversorgung | Schrittmotortreiber-Platine DRV8825 |
|---|---|
| 8,2 V bis 45 V | VIN |
| GND | GND (das Pad neben VIN) |
Verbinden Sie die beiden Spulen des Motors mit B1/B2 und A1/A2, jeweils eine Spule pro Paar. Schließen Sie einen Kondensator über die Motorstromversorgung an der Platine an; den Wert entnehmen Sie bitte dem Datenblatt Ihres Motors.
2. Modul installieren
Installieren Sie DRV8825 mit mpremote unter Verwendung des Befehls aus der
README-Datei des Moduls:
mpremote mip install github:SolderedElectronics/Soldered-Micropython-modules/Actuators/DRV8825
Unter Windows:
python -m mpremote mip install github:SolderedElectronics/Soldered-Micropython-modules/Actuators/DRV8825
🔗Gelötete MicroPython-Module: DRV8825
MicroPython-Modul und Beispiele für dieses Board
Tipp: Herunterladen von GitHub. Öffnen Sie ohne mpremote die .py-Datei des Moduls
Datei des Moduls auf GitHub und klicken Sie auf Rohdatei herunterladen. Öffnen Sie sie anschließend in Thonny und verwenden Sie
Datei → Speichern unter… → MicroPython-Gerät, um sie auf das Board zu kopieren.
3. Führen Sie das erste Beispiel aus
Dies ist drv8825-motorRotationAndSleep.py, das modulspezifische Beispiel für dieses
Board. Es dreht den Motor einmal vollständig vorwärts, einmal rückwärts und versetzt den Treiber anschließend in den
Ruhezustand. In welche Richtung er sich zuerst dreht, hängt davon ab, wie Sie die Spulen verdrahtet haben.
Die fünf unten aufgeführten Pin-Nummern sind die einzige Änderung gegenüber dem aufgezeichneten Beispiel, das GPIO 5, 18, 19, 21 und 22 verwendet. Das NULA DeepSleep ESP32-S3 verfügt nicht über einen GPIO18, und der ESP32-S3 verfügt überhaupt nicht über GPIO22.
from drv8825 import DRV8825
from time import sleep
# Define pin numbers (adjust to match your board setup)
DIR_PIN = 4 # GPIO4
STEP_PIN = 5 # GPIO5
EN_PIN = 6 # GPIO6 (optional)
RST_PIN = 7 # GPIO7 (optional)
SLP_PIN = 10 # GPIO10 (optional)
# The motor should be connected via the B1,B2,A1,A2 pins
# The motor power supply should be connected to the VIN and GND pins and have a
# parallel connected capacitor, reffer to your motors datasheet for more information
# Initialize the driver
motor = DRV8825()
motor.begin(DIR=DIR_PIN, STEP=STEP_PIN, EN=EN_PIN, RST=RST_PIN, SLP=SLP_PIN)
# Configure motor behavior
motor.setStepsPerRotation(200) # Typical for 1.8° stepper motors
motor.setStepPulseLength(1000) # Microseconds per step pulse
motor.setDirection(DRV8825.CLOCK_WISE)
motor.enable()
# Step the motor forward 200 steps (one full rotation)
print("Stepping forward...")
for _ in range(200):
motor.step()
sleep(0.005) # 5ms delay between steps
# Change direction and step back
motor.setDirection(DRV8825.COUNTER_CLOCK_WISE)
print("Stepping backward...")
for _ in range(200):
motor.step()
sleep(0.005)
# Put the motor to sleep
motor.sleep()
print("Motor is now sleeping.")
4. Ergebnis überprüfen
Drei Zeilen auf der seriellen Konsole, genau wie angegeben:
Stepping forward...
Stepping backward...
Motor is now sleeping.
Der Motor dreht sich um 200 Schritte, kehrt die Drehrichtung um und kehrt an seinen Ausgangspunkt zurück. Bei einem 1,8°-Motor Motor im Vollschritt entsprechen 200 Schritte einer vollständigen Umdrehung. Wenn Sie die Mikroschritt-Einstellung mit M0, M1 oder M2 geändert haben, decken dieselben 200 Impulse proportional weniger ab: Bei 1/8 Mikroschritt entsprechen sie einem Achtel einer Umdrehung.
Nach der letzten Zeile befindet sich der Treiber im Ruhezustand und hält nichts fest, sodass sich die Welle von Hand frei drehen lässt.
5. Wenn es nicht funktioniert
Fahren Sie mit Fehlerbehebung fort und wiederholen Sie dieses kleinste Beispiel nach jeder Änderung.