TMC Stepsticks
The FluidBoard has 4 stepper driver slots that accept TMC2130 or TMC5160 stepsticks via SPI. These are ideal for smaller motors — think NEMA-17 or NEMA-23 — and are particularly useful for auxiliary axes like a tool turret indexer, a rotary axis, or a fourth axis.
For your main machine axes (the ones that actually move the gantry or carriage), you'll almost certainly want external stepper drivers that can deliver more current. The TMC slots are there for the extras.
The TMC5160 is the more powerful of the two and handles NEMA-23 motors comfortably. If you want to use a TMC stepper, we recommend using the TMC5160's.
Why SPI
TMC drivers can run standalone, where a small potentiometer (Vref) sets the current and a few pins set the microstepping. In SPI mode, which is how the FluidBoard uses them, all of that comes from the configuration file instead: current, microstepping and chopper mode are written to the driver at startup. There is no potentiometer to adjust, and you can change the current by editing one line.
Some modules come in separate SPI and standalone/UART versions, or have a solder jumper to select the mode. Make sure you buy, or configure, the SPI version.
Selecting stepstick voltage
There are two switches for selecting the voltage of the stepsticks. When using TMC stepsticks,
select the 3.3v position.
The 5v position is only for external drivers and can destroy your
FluidBoard when used with TMC stepsticks.
If you don't install your TMC stepstick correctly, there's a high chance you destroy both
your stepstick and the FluidBoard. Always double check if your pin layout matches the board.
Each switch is used for 2 stepsticks. You cannot select different voltages for individual
stepsticks.
Wiring
The wiring depends on the stepstick you are using. Not all TMC stepsticks use the same layout for
A and B coils, and the coils are routed to the screw terminals. Even different versions of the same
stepstick might use a different layout. Check your vendor for the correct pinout!
From the stepper end, you can easily determine which coil is A and B by using a multimeter and
measuring the resistance. If the resistance is almost zero, the two wires are connected to
the same coil. If the resistance is higher, the wires are connected to different coils.
Wire two wires of the same coil to A and two wires to B.
A coil typically measures a few ohms; between wires of different coils you will see an open circuit. If the motor turns the wrong way, swap the two wires of one coil, or invert the direction pin in the configuration with :low.
Some practical rules for installing the modules:
- Power off before inserting or removing a stepstick, and before connecting or disconnecting a motor. Unplugging a motor from a powered driver can destroy the driver.
- Check the orientation against the markings on the board before powering up. The warning above is not exaggerated.
- Fit a heatsink and give the drivers some airflow. TMC drivers reduce or shut off current when they overheat, which shows up as an axis that randomly loses steps after a while.
Configuration
The YAML configuration for TMC stepsticks is as follows:
tmc_5160: # or tmc_2130:
step_pin: i2so.14 # z axis; see the pinout below for the other sockets
direction_pin: i2so.15
disable_pin: i2so.12
cs_pin: i2so.13
r_sense_ohms: 0.050
run_amps: 1.8
hold_amps: 1.0
microsteps: 8
run_mode: CoolStep
homing_mode: CoolStep
This block goes under motor0 of the axis it drives, in the same way as the external driver example.
What the settings do:
r_sense_ohms — the value of the current sense resistors on your module. The driver calculates current from it, so a wrong value means a wrong motor current. Check your module's documentation or the marking on the resistors (R050 = 0.050 Ω, R075 = 0.075 Ω, R110 = 0.110 Ω).
run_amps — motor current while moving. Start at about 70% of the motor's rated current, then raise it if the axis loses steps. Stay within what your module can handle; the TMC2130 runs out of headroom much sooner than the TMC5160.
hold_amps — current at standstill. Lower than run_amps keeps motor and driver cooler, but the axis has to hold against whatever force is on it, such as a turret being clamped.
microsteps — as with external drivers, more microsteps make motion smoother but don't add torque, and every extra microstep is a step pulse the board has to generate. Remember that steps_per_mm for the axis changes with this value.
run_mode / homing_mode — the chopper mode used while running and while homing.
Choosing a mode
| Mode |
Behaviour |
Use it for |
StealthChop |
Very quiet, smooth at low speed; loses torque at higher speeds and can stall suddenly under load |
Light loads, low speeds, noise-sensitive setups |
CoolStep |
Full torque (spreadCycle), audible, adapts current to load |
Most axes, and anything that has to hold a position against force |
StallGuard |
Detects stalls by measuring the motor's back-EMF |
Sensorless homing on other boards; not supported on the FluidBoard (see below) |
The FluidBoard does not route the drivers' DIAG pin, so sensorless homing with StallGuard is not supported. That's deliberate: on CNC mills and lathes, which typically run their motors hard, stall detection is more trouble than it's worth. Use real endstops for homing.
For the auxiliary axes these sockets are meant for, CoolStep as in the example is the safe default. If you only care about noise and the axis is lightly loaded, try StealthChop and check that it doesn't stall at your maximum rate.
Checking the drivers
At startup, the FluidBoard talks to each TMC driver over SPI. Type $SS in the console to see the startup messages and check that every configured driver was found and passed its test. A driver that doesn't respond is almost always a wrong cs_pin, a module that is not in SPI mode, the wrong voltage switch position, or a stepstick that isn't seated properly.
Troubleshooting
| Symptom |
Likely cause |
Fix |
| Driver not found at startup |
Wrong cs_pin, module not in SPI mode, voltage switch not on 3.3V |
Check pinout, module version and switch |
| Motor vibrates but doesn't turn |
One coil wired wrong |
Measure the coils and rewire |
| Wrong current, motor weak or hot |
r_sense_ohms doesn't match the module |
Check the resistor value |
| Axis loses steps after running a while |
Driver overheating |
Heatsink, airflow, lower run_amps |
| Stalls at higher speed in StealthChop |
StealthChop's torque drop at speed |
Switch to CoolStep |
Pinout
The pinout for the 4 stepsticks is as follows:
| axis: |
z |
a |
b |
c |
| en |
i2so.12 |
i2so.11 |
i2so.20 |
i2so.19 |
| dir |
i2so.15 |
i2so.10 |
i2so.23 |
i2so.18 |
| step |
i2so.14 |
i2so.9 |
i2so.22 |
i2so.17 |
| cs |
i2so.13 |
i2so.8 |
i2so.21 |
i2so.16 |