External drivers
Most CNC machines need the power that only external stepper drivers can deliver. The FluidBoard's first two axes are dedicated external driver outputs, and the four stepstick slots can also be used for external drivers by setting the voltage jumper to 5V.
We recommend closed-loop stepper drivers when given the option (like the CL57T or similar). Most of them are not much more expensive than open-loop drivers, but they detect stalls, run more efficiently, and can also operate in open-loop mode — so you're not locked in. Contact your vendor for details on your specific motors.
Basic configuration
After setting the amps of your stepper driver accordingly, you can configure the
driver in the configuration file. Make note that some drivers have a setting for 5v
or 24v output; make sure to set this to 5v.
The first two axis of the FluidBoard are always configured as external drivers.
A typical configuration for a motor is as follows:
standard_stepper:
disable_pin: i2so.6
direction_pin: i2so.5
step_pin: i2so.4
Most external drivers have opto-isolated inputs with two terminals per signal: PUL+/PUL− (step, sometimes called CLK or STEP), DIR+/DIR− and ENA+/ENA−. The FluidBoard drives them with 5V signals referenced to GND. Connect each signal to the + terminal and the board's GND to all three − terminals.
A few things are worth knowing before you power up:
- Enable is often "disable". On many drivers, an active ENA input switches the motor off, and leaving ENA unconnected keeps the driver permanently enabled. That is why the enable pin often needs inverting (see Troubleshooting). While you are getting a new axis running, you can leave ENA disconnected to take it out of the equation.
- Keep signal wiring apart from motor wiring. Run step/dir/enable away from the motor cables and VFD output, and twist each signal wire with its return.
- Never connect or disconnect a motor while the driver is powered. The voltage spike can destroy the driver.
Setting up the driver
Two settings live on the driver itself, usually on DIP switches or in the vendor's software:
- Current. Set it to the rated phase current of the motor. Check whether your driver's table lists peak or RMS current; they differ by a factor of about 1.4. Too low loses torque, too high makes the motor run hot without much gain.
- Microstepping (or pulses per revolution). Higher values make motion smoother and quieter, but they don't add usable torque or accuracy, and they increase the number of step pulses the board has to send. For a 200-step motor, 8 or 10 microsteps (1600 or 2000 pulses per revolution) is a good starting point.
From the microstepping setting you calculate steps_per_mm for the axis:
steps_per_mm = motor steps per revolution × microsteps ÷ mm of travel per motor revolution
For a 200-step motor at 8 microsteps on a 5 mm pitch ball screw, directly coupled: 200 × 8 ÷ 5 = 320 steps/mm. Add the pulley ratio if there's a belt between motor and screw.
On a closed-loop driver with a "pulses per revolution" setting, use that number in place of motor steps × microsteps.
Full axis example
A complete axis entry with both external outputs looks like this. Replace the numbers with your own.
axes:
x:
steps_per_mm: 320
max_rate_mm_per_min: 3000
acceleration_mm_per_sec2: 200
max_travel_mm: 300
motor0:
standard_stepper:
disable_pin: i2so.6
direction_pin: i2so.5
step_pin: i2so.4
y:
steps_per_mm: 320
max_rate_mm_per_min: 3000
acceleration_mm_per_sec2: 200
max_travel_mm: 300
motor0:
standard_stepper:
disable_pin: i2so.3
direction_pin: i2so.2
step_pin: i2so.1
Homing and limit switches go in the same axis entry; see endstops.
Commissioning
- With the motor disconnected from the mechanics (or the axis in the middle of its travel), power up and jog 1 mm at a low feed rate.
- If the motor doesn't hold or move, work through the troubleshooting steps below.
- If it moves the wrong way, invert the direction pin with
:low (for example direction_pin: i2so.5:low), or swap the two wires of one motor coil.
- Check the distance: jog 10 mm and measure with a dial indicator or calliper. If it is off by a clean factor (2×, 4×), the microstep setting on the driver doesn't match
steps_per_mm.
- Raise
max_rate_mm_per_min and acceleration_mm_per_sec2 in steps, and stop when the motor starts to stall or a closed-loop driver reports a position error. Back off from there to leave a margin. The endstops page describes how to use re-homing to check for lost steps.
Troubleshooting
Once configured, check if the stepper driver is moving. If not, your disable
pin might need to be inverted. This can easily be done in the configuration file:
disable_pin: i2so.6:low
If your stepper still doesn't move, check the wiring. You can check the GND
and Disable and Direction pins with a multimeter by doing small moves (typically
1mm). If the voltage changes, the wiring is correct. You can also set the feed
rate to some small value like 100 to get a better view of the voltage changes.
More symptoms and causes:
| Symptom |
Likely cause |
Fix |
| Motor holds (feels stiff) but doesn't move |
Step signal not arriving |
Check the step wire and the − terminal ground |
| Motor is free, doesn't hold |
Driver disabled, or no motor power |
Invert disable_pin, check driver power supply |
| Moves, but only in one direction |
Direction signal not arriving |
Check the dir wire; measure it while jogging both ways |
| Moves the wrong distance |
Microstep setting doesn't match steps_per_mm |
Recalculate, or change the DIP switches |
| Stalls at speed, fine when slow |
Rate or acceleration too high, current too low, supply voltage too low |
Lower rate/acceleration, check current, use a higher supply voltage within the driver's rating |
| Closed-loop driver alarms on fast moves |
Position error limit exceeded |
Lower acceleration, check the encoder cable to the motor |
Pinout
To drive external stepper drivers, you should set the jumper for the corresponding
stepper drivers to 5V output. You also need external driver converters, which can be
purchased separately.
The 5v position should only be used for external drivers and can destroy your
FluidBoard when used with TMC stepsticks.
The pinout for the 2 external stepper axes are as follows:
| axis: |
x |
y |
| en |
i2so.6 |
i2so.3 |
| dir |
i2so.5 |
i2so.2 |
| step |
i2so.4 |
i2so.1 |
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 |
Pins aren't tied to axis letters in the configuration. On a lathe, for example, you can use the second external output (i2so.3/2/1) for the Z axis by putting those pins under z: instead of y:.