Controller board: ESP32 + 2x StepStick carrier (v0.4), FluidNC config

- KiCad project generated by pcb/tools (design, route, schematic, fab outputs).
- v0.4 fixes the v0.3 review findings: low-dropout 3.3 V regulator, OR'd 5 V
  supply, polyfuse, USB ESD protection, input clamps, ceramic decoupling at the
  drivers, A4988/DRV8825 jumper, ground stitching. DRC/ERC clean.
- v0.3 (as ordered) kept in pcb/archive/v0.3.
- FluidNC config.yaml for the board; rho hard limit on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ckochandClaude Opus 5.5 committed 2026-11-01 13:40:23 -05:00
1 parent c498882bbb
commit 1400cc8afd
46 files changed
+226470

No files matched your search

+77
View File
@@ -0,0 +1,77 @@
# FluidNC config for the SandTable Controller v0.3 (ESP32 + 2x DRV8825 at 1/32 step).
# A starting point: not yet run on real hardware.
#
# Units
# X = theta (arm angle) in DEGREES
# 200 steps x 32 microsteps x (80T hub / 20T motor pulley) = 25600 steps per arm turn = 71.111 per degree
# Y = rho (ball distance from the centre) in MM
# 200 steps x 32 microsteps / (20T GT2 pulley = 40 mm per turn) = 160 steps per mm
#
# If an axis turns the wrong way, add :low to its direction_pin (for example gpio.19:low)
# or flip one coil's plug.
board: SandTable Controller v0.3
name: Sand Table
stepping:
engine: RMT
idle_ms: 255 # 255 = never switch the motors off, so the arm can't drift
pulse_us: 4 # DRV8825 needs at least 1.9 us
dir_delay_us: 2 # DRV8825 needs at least 0.65 us
disable_delay_us: 0
axes:
shared_stepper_disable_pin: gpio.13 # high = drivers off (a pull-up keeps them off during boot)
x: # theta, degrees
steps_per_mm: 71.111
max_rate_mm_per_min: 3600 # 10 arm turns per minute
acceleration_mm_per_sec2: 120
max_travel_mm: 360 # only sets how far $HX searches; theta is unlimited
soft_limits: false
homing:
cycle: 0 # not part of $H. With a hall sensor fitted, home theta by hand with $HX
positive_direction: true
mpos_mm: 0
feed_mm_per_min: 120
seek_mm_per_min: 720
settle_ms: 250
seek_scaler: 1.1
feed_scaler: 1.1
motor0:
limit_neg_pin: NO_PIN
limit_pos_pin: NO_PIN
limit_all_pin: gpio.35:low # HALL connector (active low, pulled up on the board)
hard_limits: false
pulloff_mm: 5
stepstick:
step_pin: gpio.18
direction_pin: gpio.19
disable_pin: NO_PIN
y: # rho, mm
steps_per_mm: 160
max_rate_mm_per_min: 1500
acceleration_mm_per_sec2: 100
max_travel_mm: 135
soft_limits: false
homing:
cycle: 1 # $H homes rho
positive_direction: false # the home switch is at the centre end of the arm
mpos_mm: 3 # switch trips near rho 2 mm, then backs off 1 mm. Tune so Y0 is dead centre
feed_mm_per_min: 100
seek_mm_per_min: 600
settle_ms: 250
seek_scaler: 1.1
feed_scaler: 1.1
motor0:
limit_neg_pin: gpio.34:low # HOME connector: switch COM to GND (pin 3), NO to signal (pin 2)
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: true # patterns stay 1 mm past the switch (rho_min_mm = 3), so a press
# while drawing means lost steps: FluidNC stops at once by itself
pulloff_mm: 1
stepstick:
step_pin: gpio.27
direction_pin: gpio.14
disable_pin: NO_PIN