Silent Stepper Bricklet 2.0

Features

  • 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

Beschreibung

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.

Technische Spezifikation

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

Ressourcen

Anschlussmöglichkeit

Das folgende Bild zeigt die verschiedenen Anschlussmöglichkeiten des Silent Stepper Bricklet 2.0.

Silent Stepper Bricklet 2.0 mit Beschreibung

Erster Test

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.

Silent Stepper Bricklet 2.0 mit motor

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.

Silent Stepper Bricklet 2.0 in Brick Viewer

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.

Error LED

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.

Modi und deren Eigenschaften

Basic Configuration (Grundeinstellungen)

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.

Stealth Mode

Im Stealth Modus bewegt sich der Schrittmotor sehr leise mit wenig Vibration. Dieser Modus ist gut einsetzbar für niedrige und mittlere Geschwindigkeiten.

Coolstep Mode

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.

Classic Mode

Im Classic Modus sind Stealth und Coolstep Modus deaktiviert. Der Schrittmotor wird ganz klassisch angesteuert, bietet aber ein maximales Drehmoment.

Spreadcycle

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.

Stallguard

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.

Hilfe! Ich verstehe die Hälfte der Wörter nicht

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]  

Gehäuse

TBD

Programmierschnittstelle

Siehe Programmierschnittstelle für eine detaillierte Beschreibung.

Sprache API Beispiele Installation
C/C++ API Beispiele Installation
C/C++ für Mikrocontroller API Beispiele Installation
C# API Beispiele Installation
Delphi/Lazarus API Beispiele Installation
Go API Beispiele Installation
Java API Beispiele Installation
JavaScript API Beispiele Installation
LabVIEW API   Installation
Mathematica API Beispiele Installation
MATLAB/Octave API Beispiele Installation
MQTT API Beispiele Installation
Perl API Beispiele Installation
PHP API Beispiele Installation
Python API Beispiele Installation
Ruby API Beispiele Installation
Rust API Beispiele Installation
Shell API Beispiele Installation
Visual Basic .NET API Beispiele Installation
TCP/IP API    
Modbus API