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.
|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")|
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:
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:
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|
|SetSpreadcycleConfiguration||Slow Decay Duration||toff @0x6C[3..0]|
|Enable Random Slow Decay||rndtf @0x6C|
|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|
|Comperator Blank Time||tbl @0x6C[16..15]|
|Fast Decay Without Comparator||disfdcc @0x6C|
|SetStealthConfiguration||Enable Stealth||en_pwm_mode @0x00|
|Enable Autoscale||pwm_autoscale @0x70|
|Force Symmetric||pwm_symmetric @0x70|
|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|
|Stallguard Threshold Value||sgt @0x6D[22..16]|
|Stallguard Mode||sfilt 0x6D@|
|SetMiscConfiguration||Disable Short To Ground Protection||diss2g @0x6C|
|Synchronize Phase Frequency||sync @0x6C[23..20]|
See Programming Interface for a detailed description.
|C/C++ for Microcontrollers||API||Examples||Installation|
|Visual Basic .NET||API||Examples||Installation|