Drives one bipolar stepper motor over USB (max. 46V, 1.6A per phase)
Noiseless operation of stepper motors
Position, velocity and acceleration controllable
Stepper resolution from full-step to 1/256-step
Two configurable GPIOs for end-stops or similar
With the Silent Stepper Bricklet 2.0 one bipolar stepper motor with a maximum current of 1.6A and a maximum voltage of 46V per phase can be controlled. With the provided API for many programming languages you can control the direction, velocity and acceleration of the connected motor. Step modes of the motor can be chosen between full-step and 1/256-steps.
The stepper motor is powered by an external power supply connected directly to the Bricklet (black connector).
It is possible to run the Silent Stepper Bricklet 2.0 in a variety of different modes. The stepper motor can be driven completely noiseless (Stealth Mode), with smart energy optimizations (Coolstep Mode) or with maximized torque (Classic mode). The Silent Stepper Bricklet 2.0 can be configured to switch between these modes automatically dependent on motor velocity.
The Bricklet comes with two inputs that can be configured as end-stops.
Property |
Value |
|---|---|
Current Consumption |
100mW (20mA at 5V) without stepper motor |
Maximum Motor Current per Phase |
1.6A |
Minimum/Maximum Input Voltage |
8V/46V |
Step Resolution |
1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256 |
Maximum Velocity |
0 to 65535, configurable as limit, in steps/s |
Maximum Acceleration |
0 to 65535, configurable as limit, in steps/s² |
Dimensions (W x D x H) |
40 x 40 x 15mm (1,57 x 1,57 x 0,59") |
Weight |
12g |
The following picture shows the different connection possibilities of the Silent Stepper Bricklet 2.0.
To test a Silent Stepper Bricklet 2.0 you need to have Brick Daemon and Brick Viewer installed. Brick Daemon acts as a proxy between the USB interface of the Bricks and the API bindings. Brick Viewer connects to Brick Daemon. It helps to figure out basic information about the connected Bricks and Bricklets and allows to test them.
Connect a stepper motor to the Brick and a suitable power supply (see here). Your setup should look like below.
If you connect the Brick to the PC over USB, you should see a new tab named "Silent Stepper Bricklet 2.0" in the Brick Viewer after a moment. Select this tab.
In the left part of the GUI you can enable the driver and control the velocity, acceleration and deceleration of the stepper. Below there are three buttons that control the direction of the stepper and stop it. For example if you press "Forward", the stepper will increase its speed to "Max Velocity" with the given acceleration. If you press "Stop" it will decrease its speed to "0" with the given deceleration.
Below you can set the stepping modes (full- to 1/256-step) and trigger a "Full Brake", which stops the motor immediately.
You can drive to a specific position (measured in steps) by entering it at "Drive To" an press "Go". Also you can drive a specific number of steps. By using these controls the motor will accelerate until reaching the maximum velocity and decelerate before reaching the specified position.
On the right side the current position and remaining steps are shown as well as the stack voltage and the voltage of the external power-connector (black). Below is a graphical representation of the velocity of the stepper. Beneath you can configure the minimum input voltage, which allows for undervoltage signals if the voltage is too low. In the bottom right the motor current can be configured according to the connected motor.
At the very bottom all of the Basic, Stealth, Coolstep, Spreadcycle and Misc configurations can be set. The last tab shows the current status of the driver.
After this test you can go on with writing your own application. See the Programming Interface section for the API of the Silent Stepper Bricklet 2.0 and examples in different programming languages.
The red error LED has four different states:
Off: No error present.
250ms interval blink: Overtemperature warning.
1s interval blink: Input voltage too small.
full red: motor disabled because of short to ground in phase a or b or because of overtemperature.
If an over-temperature or short to ground event occurs the motor will stop running and the driver will be turned off. You need to explicitely call the enable function to start the driver again.
In most applications you can keep all of the settings as default and only configure the basic configuration:
Standstill Current: This value can be used to lower the current during stand still. This might be reasonable to reduce the heating of the motor and the Brick. When the motor is in standstill the configured motor phase current will be driven until the configured Power Down Time is elapsed. After that the phase current will be reduced to the standstill current. The elapsed time for this reduction can be configured with the Standstill Delay Time. The unit is in mA and the maximum allowed value is the configured maximum motor current.
Motor Run Current: The value sets the motor current when the motor is running. Use a value of at least one half of the global maximum motor current for a good microstep performance. The unit is in mA and the maximum allowed value is the current motor current. The API maps the entered value to 1/32 ... 32/32 of the maximum motor current. This value should be used to change the motor current during motor movement, whereas the global maximum motor current should not be changed while the motor is moving.
Standstill Delay Time: Controls the duration for motor power down after a motion as soon as standstill is detected and the Power Down Time is expired. A high Standstill Delay Time results in a smooth transition that avoids motor jerk during power down. The value range is 0 to 307ms
Power Down Time: Sets the delay time after a stand still. The value range is 0 to 5222ms.
Stealth Threshold: Sets the upper threshold for stealth mode in steps/s. The value range is 0-65536 steps/s. If the velocity of the motor goes above this value, stealth mode is turned off. Otherwise it is turned on. In stealth mode the torque declines with high speed.
Coolstep Threshold: Sets the lower threshold for Coolstep mode in steps/s. The value range is 0-65536 steps/s. The Coolstep Threshold needs to be above the Stealth Threshold.
Classic Threshold: Sets the lower threshold for Classic mode. The value range is 0-65536 steps/s. In classic mode the stepper becomes more noisy, but the torque is maximized.
High Velocity Shopper Mode: If High Velocity Shopper Mode is enabled, the stepper control is optimized to run the stepper motors at high velocities.
In stealth mode the stepper motor is driven quietly and with little vibrations. The mode is usable for low and medium velocities.
In Coolstep mode the stepper motor is driven with smart energy optimizations. In applications with varying loads, the power consumption is automatically reduced during low load times. This means that less heat is generated and less cooling is necessary.
In Classic mode Stealth and Coolstep are disabled. The stepper motor is driven without any of the advanced features, but in return the torque is maximized.
Spreadcycle is a cycle-by-cycle current control. It has a fast reaction time to changes in velocity and motor load. It can be used together with Coolstep mode.
Stallguard can be used to measure motor load and for stall detection. In Coolstep mode the measurement is used internally to adjust the motor current to the load.
The used TMC2130 is a powerful stepper motor driver. Unfortunately this comes with lots of modes, features and configuration possibilities. In our experience, you can leave all of the configurations but the Basic Configurations (first tab in Brick Viewer) as default. We did choose sane default values for all of the configurations.
If you want to understand all of the features in detail and the description in this documentation is not enough, you can take a look at the TMC2130 datasheet.
For convenience, we provide a table that shows which API function parameters changes what TMC2130 register.
Function |
Parameter |
Register Name @Address[bits] |
Note |
|---|---|---|---|
SetBasicConfiguration |
Standstill Current |
ihold @0x10[4..0] |
Value is converted to 0-31 |
|
Motor Run Current |
irun @0x10[12..8] |
Value is converted to 0-31 |
|
Standstill Delay Time |
iholddelay @0x10[19..16] |
Value is converted to 2^18 clock cycles |
|
Power Down Time |
tpowerdown @0x11 |
Value is converted to 2^18 clock cycles |
|
Stealth Threshold |
tpwmthrs @0x13 |
Value is converted to time between two steps |
|
Coolstep Threshold |
tcoolthrs @0x14 |
Value is converted to time between two steps |
|
Classic Threshold |
thigh @0x15 |
Value is converted to time between two steps |
|
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] |
Used if chm=1, otherwise ignored |
|
Hysteresis Start Value |
hstrt @0x6C[6..4] |
Used if chm=0, otherwise ignored |
|
Hysteresis End Value |
hend @0x6C[10..7] |
Used if chm=0, otherwise ignored |
|
Sinewave Offset |
hend @0x6C[10..7] |
Used if chm=1, otherwise ignored |
|
Chopper Mode |
chm @0x6C[14] |
|
|
Comperator Blank Time |
tbl @0x6C[16..15] |
|
|
Fast Decay Without Comparator |
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] |
|
TODO
See Programming Interface for a detailed description.
Language |
API |
Examples |
Installation |
|---|---|---|---|
C/C++ |
|||
C/C++ for Microcontrollers |
|||
C# |
|||
Delphi/Lazarus |
|||
Go |
|||
Java |
|||
JavaScript |
|||
LabVIEW |
|||
Mathematica |
|||
MATLAB/Octave |
|||
MQTT |
|||
Perl |
|||
PHP |
|||
Python |
|||
Ruby |
|||
Rust |
|||
Shell |
|||
Visual Basic .NET |
|||
TCP/IP |
|||
Modbus |