Steuert einen bipolaren Schrittmotor über USB (max. 46V, 1,6A pro Phase)
Lautloser Betrieb von Schrittmotoren
Position, Geschwindigkeit und Beschleunigung sind steuerbar
Schrittmotor-Auflösung von Vollschritt bis zu 1/256-Schritt
Zwei konfigurierbare GPIOs für Endschalter und ähnliches
Das Silent Stepper Bricklet 2.0 kann einen bipolaren Schrittmotor mit einem maximalen Phasenstrom von 1,6A und einer maximalen Spannung von 46V steuern. Die API des Bricks ist für verschiedene Programmiersprachen verfügbar und kann Richtung, Geschwindigkeit und Beschleunigung des angeschlossenen Schrittmotors steuern. Die Schrittweite kann zwischen Vollschritt und 1/256-Schrittmodus gewählt werden.
Das Silent Stepper Bricklet 2.0 kann in verschiedenen Modi betrieben werden. Im Stealth Modus ist der Motor vollständig lautlos, im Coolstep Modus wird Energie gespart und im Classic Modus bietet der Motor maximales Drehmoment. Das Silent Stepper Bricklet 2.0 kann konfiguriert werden, abhängig von der Motorgeschwindigkeit, automatisch zwischen diesen Modi zu wechseln.
Das Bricklet hat zwei digitale Eingänge, die für Endschalter genutzt werden können.
Eigenschaft |
Wert |
|---|---|
Stromverbrauch |
100mW (20mA bei 5V) ohne Motor |
Maximaler Motorstrom pro Phase |
1.6A |
Minimum/Maximum Eingangsspannung |
8V/46V |
Schrittauflösung |
1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256 |
Maximale Geschwindigkeit |
0 bis 65535, einstellbares Limit, in Schritte/s |
Maximale Beschleunigung |
0 bis 65535, einstellbares Limit, in Schritte/s² |
Abmessungen (B x T x H) |
40 x 40 x 15mm (1,57 x 1,57 x 0,59") |
Gewicht |
12g |
Das folgende Bild zeigt die verschiedenen Anschlussmöglichkeiten des Silent Stepper Bricklet 2.0.
Um ein Silent Stepper Bricklet 2.0 testen zu können, müssen zuerst Brick Daemon und Brick Viewer installiert werden. Brick Daemon arbeitet als Proxy zwischen der USB Schnittstelle der Bricks und den API Bindings. Brick Viewer kann sich mit Brick Daemon verbinden, gibt Informationen über die angeschlossenen Bricks und Bricklets aus und ermöglicht es diese zu testen.
Verbinde einen Schrittmotor mit dem Bricklet und eine passende Stromversorgung an das Bricklet an (siehe hier). Der Aufbau sollte dem im folgenden Bild ähnlich sehen.
Wenn der Brick per USB an den PC angeschlossen wird sollte einen Moment später im Brick Viewer ein neuer Tab namens "Silent Stepper Bricklet 2.0" auftauchen. Wähle diesen Tab aus.
Auf der linken Seite des Tabs kann die Treiberstufe ein- und ausgeschaltet, sowie die maximale Geschwindigkeit, Beschleunigung und Verzögerung eingestellt werden. Darunter sind drei Knöpfe um die Drehrichtung des Schrittmotors zu kontrollieren sowie diesen zu stoppen. Wenn der "Forward" Kopf geklickt wird, dann wird die Geschwindigkeit des Schrittmotors bis zur "Max Velocity" mit der eingestellten Beschleunigung erhöht. Ein Klick auf den "Stop" Knopf verringert die Geschwindigkeit auf "0" mit der eingestellten Verzögerung.
Weiter unten kann die Schrittmodus (Voll- bis 1/256 Schritt) eingestellt sowie eine Vollbremsung ausgelöst werden, die den Motor sofort anhält.
Alternativ kann der Schrittmotor auch zu einer bestimmten Position (gemessen in Schritten) gefahren werden. Dazu einfach bei "Drive To" die Position eingeben und "Go" klicken. Der Schrittmotor kann ebenfalls eine bestimmte Anzahl Schritte gefahren werden. Bei diesen beiden Fahrweisen werden auch die Einstellungen für die maximale Geschwindigkeit, Beschleunigung und Verzögerung berücksichtigt.
Auf der rechten Seite werden die aktuelle Position, die noch zu fahrenden Schritte sowie die Versorgungsspannung des Stapels und die externe Versorgungsspannung angezeigt. Darunter befindet sich eine Tachometer zur Darstellung der Motorgeschwindigkeit. Ganz unten kann die Mindestspannung des Motors eingestellt werden. Wird diese unterschritten wird der Undervoltage Callback ausgelöst. Zusätzlich kann auch noch der Motorstrom entsprechend des angeschlossenen Motors eingestellt werden.
Ganz unten können Basic, Stealth, Coolstep, Spreadcycle und andere Einstellungen gesetzt werden. Der letzte Tab zeigt den aktuellen Status des Treibers an.
Nun kann ein eigenes Programm geschrieben werden. Der Abschnitt Programmierschnittstelle listet die API des Silent Stepper Bricklet 2.0 und Beispiele in verschiedenen Programmiersprachen auf.
Die rote Error-LED hat vier unterschiedliche Zustände:
Aus: Es liegt kein Fehler vor.
250ms Intervall-Blinken: Übertemperaturwarnung.
1s Intervall-Blinken: Eingangsspannung zu gering.
Durchgängig rot: Motor deaktiviert auf Grund von Kurzschluss mit Ground in Phase A oder B oder auf Grund von zu hoher temperatur.
Wenn ein Überttemperatur- oder Kurzschluss-Event eintritt hört der Motor auf zu laufen und der treiber wird deaktiviert. Um den Treiber wieder zu starten muss dieser explizit mit der Enable-Funktion wieder aktiviert werden.
Für die meisten Anwendungen können alle anderen Einstellungen beibehalten werden. Nur diese Einstellungen müssen meist angepasst werden:
Standstill Current: Mit diesem Wert kann der Phasenstrom im Stillstand reduziert werden. Dies ist zum Beispiel sinnvoll um das Aufheizen des Motors zu verringern. Wenn der Motor steht, wird dieser mit dem eingestellten Phasenstrom betrieben, bis die eingestellte Power Down Time um ist. Danach wird der Phasenstrom schrittweise bis zum Standstill Current reduziert. Die dafür benötigte Zeit wird mittels Power Down Time eingestellt. Die Einheit ist mA und der eingestellte Phasenstrom ist das Maximum für diesen Wert.
Motor Run Current: Dieser Wert setzt den Phasenstrom, wenn der Motor sich dreht. Ein Wert von mindestens der Hälfte des maximalen Phasenstrom sollte für gute Ergebnisse im Mikroschrittbetrieb gesetzt werden. Die Einheit ist mA und der maximal zulässige Wert ist der maximale Phasenstrom. Der eingegebene Wert wird von der API intern in einen Faktor im Bereich von 1/32 ... 32/32 umgerechnet, mit dem der Phasenstrom begrenzt wird. Der maximale Phasenstrom sollte im laufenden Betrieb nicht geändert werden. Für eine Änderung im laufenden Betrieb ist dieser Wert da.
Standstill Delay Time: Steuert die Zeit für das Verringern des Motorstroms bis zum Standstill Current. Eine hohe Standstill Delay Time führt zu einem ruhigen und ruckelfreien Übergang. Der Wertebereich ist 0 bis 307ms.
Power Down Time: Setzt die Wartezeit nach dem Stehenbleiben. Der Wertebereich ist 0 bis 5222ms.
Stealth Threshold: Setzt den oberen Grenzwert für den Stealth Modus in Schritte/s. Der Wertebereich ist 0-65536 Schritte/s. Wenn die Geschwindigkeit des Motors über diesen Wert liegt wird der Stealth Modus abgeschaltet. Ansonsten angeschaltet. Im Stealth Modus nimmt das Drehmoment mit steigender Geschwindigkeit ab.
Coolstep Threshold: Setzt den unteren Grenzwert für den Coolstep Modus Schritte/s. Der Wertebereich ist 0-65536 Schritte/s. Der Coolstep Grenzwert muss über dem Stealth Grenzwert liegen.
Classic Threshold: Setzt den unteren Grenzwert für den Classic Modus. Der Wertebereich ist 0-65536 Schritte/s. Im Classic Modus wird der Schrittmotor geräuschvoll aber das Drehmoment wird maximiert.
High Velocity Chopper Mode: Wenn der High Velocity Chopper Mode aktiviert wird, optimiert der Schrittmotortreiber die Ansteuerung des Motors für hohe Geschwindigkeiten.
Im Stealth Modus bewegt sich der Schrittmotor sehr leise mit wenig Vibration. Dieser Modus ist gut einsetzbar für niedrige und mittlere Geschwindigkeiten.
Im Coolstep Modus wird der Schrittmotor mit Energie-Optimierungen betrieben. Für Anwendungen mit sich ändernden Lasten wird der Strom des Motors automatisch verringert, wenn niedrige Lasten bewegt werden. Dadurch wird weniger Wärme erzeugt und weniger Kühlung ist notwendig.
Im Classic Modus sind Stealth und Coolstep Modus deaktiviert. Der Schrittmotor wird ganz klassisch angesteuert, bietet aber ein maximales Drehmoment.
Spreadcycle kann zusammen mit dem Coolstep Modus verwendet werden. Es handelt sich dabei um eine andere Art der Stromregelung die eine schnellere Reaktionszeit auf sich ändernde Motorlasten und Geschwindigkeiten besitzt.
Mittels Stallguard können Motorlast und ein Abwürgen des Motors erkannt werden. Im Coolstep Modus wird diese Messung intern genutzt um den Motorstrom an die Motorlast anzupassen.
Der verwendete TMC2130 ist ein sehr mächtiger Motortreiber. Leider besitzt dieser daher auch viele Modi, Features und Einstellungsmöglichkeiten. In den meisten Anwendungen sollte es ausreichen nur die Grundeinstellungen (Basic Configuration, erster Tab im Brick Viewer) anzupassen.
Wenn alle Eigenschaften des Treibers im Detail verstanden werden sollen, empfehlen wir einen Blick in das TMC2130 Datenblatt.
Um unsere API besser mit den Registern des TMC2130 vergleichen zu können haben wir folgende Tabelle erstellt:
Function |
Parameter |
Register Name @Address[bits] |
Note |
|---|---|---|---|
SetBasicConfiguration |
Standstill Current |
ihold @0x10[4..0] |
Wert wird umgewandelt in 0-31 |
|
Motor Run Current |
irun @0x10[12..8] |
Wert wird umgewandelt in 0-31 |
|
Standstill Delay Time |
iholddelay @0x10[19..16] |
Wert wird umgewandelt in 2^18 Takte |
|
Power Down Time |
tpowerdown @0x11 |
Wert wird umgewandelt in 2^18 Takte |
|
Stealth Threshold |
tpwmthrs @0x13 |
Wert wird umgewandelt in Zeit zwischen zwei Takte |
|
Coolstep Threshold |
tcoolthrs @0x14 |
Wert wird umgewandelt in Zeit zwischen zwei Takte |
|
Classic Threshold |
thigh @0x15 |
Wert wird umgewandelt in Zeit zwischen zwei Takte |
|
High Velocity Chopper Mode |
vhighchm @0x6C[19] |
|
SetSpreadcycleConfiguration |
Slow Decay Duration |
toff @0x6C[3..0] |
|
|
Enable Random Slow Decay |
rndtf @0x6C[13] |
|
|
Fast Decay Duration |
fd3/hstrt @0x6C[11/6..4] |
wird genutzt wenn chm=1, sonst ignoriert |
|
Hysteresis Start Value |
hstrt @0x6C[6..4] |
wird genutzt wenn chm=0, sonst ignoriert |
|
Hysteresis End Value |
hend @0x6C[10..7] |
wird genutzt wenn chm=0, sonst ignoriert |
|
Sinewave Offset |
hend @0x6C[10..7] |
wird genutzt wenn chm=1, sonst ignoriert |
|
Chopper Mode |
chm @0x6C[14] |
|
|
Comperator Blank Time |
tbl @0x6C[16..15] |
|
|
Fast Decay Without Comperator |
disfdcc @0x6C[12] |
|
SetStealthConfiguration |
Enable Stealth |
en_pwm_mode @0x00[2] |
|
|
Amplitude |
pwm_ampl @0x70[7..0] |
|
|
Gradient |
pwm_grad @0x70[15..8] |
|
|
Enable Autoscale |
pwm_autoscale @0x70[18] |
|
|
Force Symmetric |
pwm_symmetric @0x70[19] |
|
|
Freewheel Mode |
freewheel @0x70[21..20] |
|
SetCoolstepConfiguration |
Minimum Stallguard Value |
semin @0x6D[3..0] |
|
|
Maximum Stallguard Value |
semax @0x6D[11..8] |
|
|
Current Up Step Width |
seup @0x6D[7..4] |
|
|
Current Down Step Width |
sedn @0x6D[14..13] |
|
|
Minimum Current |
seimin @0x6D[15] |
|
|
Stallguard Threshold Value |
sgt @0x6D[22..16] |
|
|
Stallguard Mode |
sfilt 0x6D@[24] |
|
SetMiscConfiguration |
Disable Short To Ground Protection |
diss2g @0x6C[30] |
|
|
Synchronize Phase Frequency |
sync @0x6C[23..20] |
|
TBD
Siehe Programmierschnittstelle für eine detaillierte Beschreibung.
Sprache |
API |
Beispiele |
Installation |
|---|---|---|---|
C/C++ |
|||
C/C++ für Mikrocontroller |
|||
C# |
|||
Delphi/Lazarus |
|||
Go |
|||
Java |
|||
JavaScript |
|||
LabVIEW |
|||
Mathematica |
|||
MATLAB/Octave |
|||
MQTT |
|||
Perl |
|||
PHP |
|||
Python |
|||
Ruby |
|||
Rust |
|||
Shell |
|||
Visual Basic .NET |
|||
TCP/IP |
|||
Modbus |