SS Stepper Controller v1.0 · WaveForge / StabilityCore
4-Axis Level Shifter — Board Map
Every connector and component decoded, drawn in the same orientation as your bench photo. Pin map verified against the board silkscreen and the Flux schematic.
Board layout
Same orientation as your photo · green = screw terminals · gold = pads/header
Verified pin map
ESP32 GPIO → level-shifter → driver. All four silkscreen-confirmed.
Driver
STEP
DIR
Terminal
A
GPIO 25
GPIO 26
J4
B
GPIO 27
GPIO 32
J3
C
GPIO 33
GPIO 18
J5
D
GPIO 19
GPIO 23
J6
Connector guide
J1ESP32 30-pin DevKit v1 plugs in here (solder the 2×15 female socket first).
J2Power in — you buzzed out the GND pin (right); the other is 5 V (left).
J11Ground bus — all 16 holes are common ground (you buzzed it out). Land any driver PUL−/DIR− on any hole.
IC1SN74AHCT125N buffer for drivers A & B.
IC2SN74AHCT125N buffer for drivers C & D.
J11 · 16-HOLE GROUND BUS
All 16 holes = GND (confirmed by continuity). The 8 labels (PUL_A− … DIR_D−) just keep wiring tidy — electrically you can land any minus wire on any hole.
Before you solder
C1 / C2: use the 0.1 µF ceramic discs (found) — non-polarized, drop in either way.
DIP sockets: match the notch to the silkscreen (pin 1), then the chip's notch to the socket.
ESP32: must be the 30-pin module to seat in J1 — not the 38-pin sensor board.
Connecting the ESP32 — jumper wiring
The ESP32 won't seat in J1 (board footprint is the wrong width — not your fault), so wire it with 10 jumpers. Each colored pin below goes to the matching board terminal. This board lives on the stationary Power Tower (no shaking), so once it's verified you can solder it permanently. ⚠ The GND wire is mandatory — no shared ground, nothing works.
Your ESP32, USB at the bottom. Colored pins = the 10 you jumper.
The 10 jumpers — ESP32 pin → board
ESP32 pin
Signal
Goes to
VIN
5V power
J2 · 5V
GND
ground
J2 · GND
D25
STEP A
J1
D26
DIR A
J1
D27
STEP B
J1
D32
DIR B
J1
D33
STEP C
J1
D18
DIR C
J1
D19
STEP D
J1
D23
DIR D
J1
Four things to know:
Ground is mandatory — the GND jumper gives the ESP32 and board a shared reference. Skip it and nothing moves.
Power: the VIN→J2 wire runs the whole board off your ESP32's USB. (Or feed a separate 5 V into J2 — just tie all grounds together.)
Finding each J1 hole: buzz continuity from a buffer-chip input pin to J1 (chips out = a direct trace) to see which hole carries which signal.
Attach — verify, then commit: headers + jumpers first, run the pin-walker sketch to confirm each signal hits the right driver, fix any wrong wire — then solder the wires straight into the J1 pads (permanent, nothing to loosen). Ferrules on the ESP32 screw-terminal ends.
Wiring each driver — both ends of the wire
Your board is wired common-cathode: the buffered 5 V signals go to each driver's + inputs, and every − input returns to J11 (all common ground). So each driver takes four signal wires.
The four signal wires per driver — board → DM542T
Driver
+ signals from
− returns to J11
A
J4 · PUL+ / DIR+
PUL_A− / DIR_A−
B
J3 · PUL+ / DIR+
PUL_B− / DIR_B−
C
J5 · PUL+ / DIR+
PUL_C− / DIR_C−
D
J6 · PUL+ / DIR+
PUL_D− / DIR_D−
At the DM542T · control side
PUL+←board J[x] PUL+
DIR+←board J[x] DIR+
PUL−→J11 · common GND
DIR−→J11 · common GND
ENA+○leave open = enabled
ENA−○leave open
Not on this board — the DM542T still needs these, or nothing moves:
Motor power: your JoyNano 36 V / 10 A → the driver's VDC / GND. The DM542T takes 18–50 V (36 V typical), so it's spot-on. Separate supply from the board's 5 V logic.
Motor coils (23HS32-4004S):Black→A+, Green→A−, Red→B+, Blue→B− on the DM542T.
DIP switches: current + microstepping — see the panel below.
DIP-switch settings · DM542T
Set each driver to its own motor's current. Your DM542T tops out at 3.2 A RMS (4.5 A peak) — that's at or below your motor's 4.0 A rating, so you have headroom and can't over-current it. Match the driver's RMS to the motor; start a little low and raise for torque.
Current · SW1/2/3 — typical DM542T (confirm on your driver's label)
Peak
RMS
SW1
SW2
SW3
1.00
0.71
ON
ON
ON
1.46
1.04
OFF
ON
ON
1.91
1.36
ON
OFF
ON
2.37
1.69
OFF
OFF
ON
2.84
2.03
ON
ON
OFF
3.31
2.36
OFF
ON
OFF
3.76
2.69
ON
OFF
OFF
4.20
3.00
OFF
OFF
OFF
Highlighted = target zone for your 4.0 A motor. Your driver's top row may read ~3.2 A RMS.
Your NEMA 23 · 23HS32-4004S · 4.0 A
≈ 2.7 – 3.0 A RMS
Start at the 2.69 A row (SW1 ON, SW2 OFF, SW3 OFF) — cool and strong for a shake table. Raise toward the driver's max if you want more torque; drop if it runs hot.
Microstepping · SW5–8
1600 pulse/rev
= 8 microsteps — smooth default. Set SW5–8 per the driver's microstep table. Use 3200 (16×) for extra smoothness; it just needs more pulses/sec.
Firmware notes
Keep each STEP pulse HIGH ≥ 2.5 µs (driver minimum); it accepts up to 200 kHz. SW4 = standstill current — one position halves it after motion stops to run cooler.
Verify on the driver: current/microstep tables vary slightly between DM542T versions — the one printed on your driver is authoritative. Confirm whether your motor's rating is RMS or peak before pushing to the top of the range.