ODrive spindles
ODrive motor controllers turn brushless motors into high-performance spindles. The FluidBoard talks to ODrives over CAN bus — and unlike most boards, the CAN bus on the FluidBoard is galvanically isolated. That means no ground loops, no noise issues, and no fried electronics.
What you get
- Closed-loop velocity control — the ODrive manages the motor, the FluidBoard commands the speed
- Forward and reverse (M3/M4) — direction is handled through the gear factor
- CSS compatible — the FluidBoard can update spindle speed in real time during constant surface speed cuts
- Spindle ramping — configurable ramp time, with automatic suppression of false encoder alarms during speed changes
- Automatic tool changer integration — the ODrive spindle config can reference an ATC for automated tool changes
Setting up the ODrive
Before wiring to the FluidBoard, set up the ODrive per the ODrive documentation. Make sure it is fully calibrated and running correctly in velocity control mode before attempting CAN communication.
Wiring
The CAN bus is galvanically isolated, so ground loops aren't a concern. Wire as follows:
| ODrive pin |
FluidBoard pin |
Description |
| GND |
GND |
Isolated ground |
| CAN-H |
H |
CAN high |
| CAN-L |
L |
CAN low |
| +5V |
Vcc |
Isolated 5V |
If +5V and GND aren't available near the CAN connector on your ODrive, you can use the +5V and GND from the encoder inputs.
When using a single FluidBoard and ODrive, enable the 120 Ω termination jumper on the FluidBoard.
Configuration
ODrive:
can_tx: gpio.9
can_rx: gpio.47
odrive_node_id: 1
gear_factor: -0.777778 # Negative = reverse direction; ratio for gearing
max_speed: 3000 # Maximum RPM
atc: pneumatic_tool_turret # Optional: which ATC to use for tool changes
The ODrive parameters (encoder counts, current limits, etc.) are downloaded automatically by the FluidBoard at startup.