Positioner Build Guide
Bill of Materials
| Qty | Component | Notes |
|---|---|---|
| 1 | ESP32 DevKit | Any variant with enough GPIO |
| 2 | TMC2209 stepper driver | UART mode, StallGuard support |
| 2 | NEMA 17 stepper motor | 0.9° or 1.8° step angle |
| 1 | 24V power supply | 3A+ for motors |
| 1 | 5V regulator or USB | For ESP32 |
| - | Wire, connectors | See wiring diagram |
Mechanical Assembly
The positioner needs two axes of rotation:
- Theta axis (polar, 0-180°): Tilts the antenna from zenith to nadir
- Phi axis (azimuth, 0-360°): Rotates the antenna around vertical axis
Design Considerations
- Cable routing: Ensure cables can handle full rotation without tangling
- Balance: Center of gravity should be on the rotation axes
- Rigidity: Minimize wobble for accurate measurements
- Range limits: Mechanical stops for homing reference
Mounting Options
| Approach | Pros | Cons |
|---|---|---|
| 3D printed | Custom fit, cheap | Strength limits |
| Aluminum extrusion | Strong, adjustable | Heavier, more complex |
| PVC pipe | Very cheap, easy | Less precise |
Electronics Assembly
-
Mount TMC2209 drivers
Install both drivers on a breakout board or custom PCB. Ensure proper heatsinking—these drivers can get hot under load.
-
Wire motor connections
TMC2209 Pin Motor Wire A1 Coil A+ A2 Coil A- B1 Coil B+ B2 Coil B- -
Wire UART connections
Both drivers share the same UART bus but have different addresses:
- Theta driver: Address 0x00
- Phi driver: Address 0x01
See Wiring Diagram for full pinout.
-
Power connections
- 24V to driver VMOT pins (motor power)
- 5V/3.3V to driver VIO pins (logic power)
- ESP32 powered via USB or separate 5V regulator
-
Test before mounting
Flash the firmware and verify both motors respond before final assembly.
Firmware Setup
See Firmware for build and flash instructions.
Calibration
After assembly:
- Home both axes: Run
positioner_home(axis="both") - Verify range: Move to extremes and check for binding
- Tune StallGuard: Adjust
STALL_VALUEinconfig.hif homing is unreliable - Set motion parameters: Use
positioner_config()to tune speed/accel
Troubleshooting
Motor doesn’t move
- Check power supply voltage (should be 24V)
- Verify UART communication (TX/RX wiring)
- Check TMC2209 address configuration
Homing fails (doesn’t detect stall)
- Increase motor current in
config.h - Decrease homing speed
- Adjust
STALL_VALUEthreshold
Motors get hot
- Reduce motor current (if torque allows)
- Add heatsinks to TMC2209
- Reduce holding current when idle
Position drift
- Check mechanical coupling (loose setscrews)
- Verify microstepping is consistent
- Check for missed steps (reduce speed/accel)