Skip to content

Positioner Build Guide

Bill of Materials

QtyComponentNotes
1ESP32 DevKitAny variant with enough GPIO
2TMC2209 stepper driverUART mode, StallGuard support
2NEMA 17 stepper motor0.9° or 1.8° step angle
124V power supply3A+ for motors
15V regulator or USBFor ESP32
-Wire, connectorsSee wiring diagram

Mechanical Assembly

The positioner needs two axes of rotation:

  1. Theta axis (polar, 0-180°): Tilts the antenna from zenith to nadir
  2. 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

ApproachProsCons
3D printedCustom fit, cheapStrength limits
Aluminum extrusionStrong, adjustableHeavier, more complex
PVC pipeVery cheap, easyLess precise

Electronics Assembly

  1. Mount TMC2209 drivers

    Install both drivers on a breakout board or custom PCB. Ensure proper heatsinking—these drivers can get hot under load.

  2. Wire motor connections

    TMC2209 PinMotor Wire
    A1Coil A+
    A2Coil A-
    B1Coil B+
    B2Coil B-
  3. 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.

  4. 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
  5. 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:

  1. Home both axes: Run positioner_home(axis="both")
  2. Verify range: Move to extremes and check for binding
  3. Tune StallGuard: Adjust STALL_VALUE in config.h if homing is unreliable
  4. 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_VALUE threshold

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)