Silent Stepper Brick

Features

  • 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
  • Extendable via two Bricklet ports

Description

With the Silent Stepper Brick one bipolar stepper motor with a maximum current of 1.6A and a maximum voltage of 46V per phase can be controlled over USB. 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.

Two Bricklet ports can be used to extend the features of this Brick. It can also be used together with other Bricks in a stack. For example an additional Master Brick with Master Extension allows to replace the USB connection by other cable based (RS485, Ethernet) or wireless (WIFI) connections.

The stepper motor can be powered by an external power supply connected directly to the Brick (black connector) or by the stack internal power supply. If an external power supply is connected the Brick automatically switches to this power supply.

It is possible to run the Silent Stepper Brick 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 Brick can be configured to switch between these modes automatically dependent on motor velocity.

The Silent Stepper Brick currently still uses 10-pole Bricklet connectors. You need 10p-7p Bricklet cables to connect Bricklets to it.

A comparison video between Stepper Brick and Silent Stepper Brick is available on Youtube:

Technical Specifications

Property Value
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²
   
Bricklet Ports 2
Dimensions (W x D x H) 40 x 40 x 17mm (1.57 x 1.57 x 0.67")
Weight 19g
Current Consumption 59mA

Resources

Connectivity

The following picture depicts the different connection possibilities of the Stepper Brick.

Silent Stepper Brick with caption

Test your Silent Stepper Brick

To test a Silent Stepper Brick 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.

Silent Stepper Brick with motor

Now connect the Brick to the PC over USB, you should see a new tab named "Silent Stepper Brick" in the Brick Viewer after a moment. Select this tab.

Silent Stepper Brick in Brick Viewer

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 Brick and examples in different programming languages.

Power Supply

The connected stepper motor can be powered through the black on-board power-connector or through a Power Supply in the stack. The Brick switches automatically to the on-board power-connector when a voltage is measured there and no external voltage is detected on the power-connector. The black power connector is always prioritized.

Error LED

The red LED is enabled if the input voltage is below the user configurable minimum voltage.

Modes and their Features

Basic Configuration

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.

Stealth Mode

In stealth mode the stepper motor is driven quietly and with little vibrations. The mode is usable for low and medium velocities.

Coolstep Mode

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.

Classic Mode

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

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

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.

Help! I don't understand half of the words

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]  

Programming Interface

See Programming Interface for a detailed description.

Language API Examples Installation
C/C++ API Examples Installation
C# API Examples Installation
Delphi/Lazarus API Examples Installation
Go API Examples Installation
Java API Examples Installation
JavaScript API Examples Installation
LabVIEW API Examples Installation
Mathematica API Examples Installation
MATLAB/Octave API Examples Installation
MQTT API Examples Installation
openHAB API Examples Installation
Perl API Examples Installation
PHP API Examples Installation
Python API Examples Installation
Ruby API Examples Installation
Rust API Examples Installation
Shell API Examples Installation
Visual Basic .NET API Examples Installation
TCP/IP API    
Modbus API