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

H3 J2 · POWER 5V/GND J1 ESP32 30-pin J11 · GND BUS all 16 holes = ground land any PUL−/DIR− here C2 0.1µF IC2 C + D SN74AHCT125N IC1 A + B SN74AHCT125N C1 0.1µF J6 · DRV D PUL+/DIR+ J5 · DRV C PUL+/DIR+ J4 · DRV A PUL+/DIR+ J3 · DRV B PUL+/DIR+
Same orientation as your photo · green = screw terminals · gold = pads/header

Verified pin map

ESP32 GPIO → level-shifter → driver. All four silkscreen-confirmed.
DriverSTEPDIRTerminal
AGPIO 25GPIO 26J4
BGPIO 27GPIO 32J3
CGPIO 33GPIO 18J5
DGPIO 19GPIO 23J6

Connector guide

  • J1ESP32 30-pin DevKit v1 plugs in here (solder the 2×15 female socket first).
  • J2Power in — the GND pin connects to the ground bus (J11); the 5 V pin connects to Vcc (chip pin 14). Confirmed by continuity 2026-07-07. Go by the +5V/GND silkscreen, not left/right (orientation flips it).
  • J3–J6Driver outputs (PUL+/DIR+) → J3=B, J4=A, J5=C, J6=D.
  • 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.

ESP32 USB EN VP VN D34 D35 D32DIR B D33STEP C D25STEP A D26DIR A D27STEP B D14 D12 D13 GND→ J2 GND VIN→ J2 5V D23DIR D D22 TX0 RX0 D21 D19STEP D D18DIR C D5 TX2 RX2 D4 D2 D15 GND 3V3
Your ESP32, USB at the bottom. Colored pins = the 10 you jumper.
The 10 jumpers — ESP32 pin → board
ESP32 pinSignalGoes to
VIN5V powerJ2 · 5V
GNDgroundJ2 · GND
D25STEP AJ1
D26DIR AJ1
D27STEP BJ1
D32DIR BJ1
D33STEP CJ1
D18DIR CJ1
D19STEP DJ1
D23DIR DJ1
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
AJ4 · PUL+ / DIR+PUL_A− / DIR_A−
BJ3 · PUL+ / DIR+PUL_B− / DIR_B−
CJ5 · PUL+ / DIR+PUL_C− / DIR_C−
DJ6 · 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.

SN74AHCT125N pinout · the socket chips (IC1 / IC2)

The buffer chip that seats in each socket — not the DM542T (that's the external driver). Notch at top = pin 1; count 1→7 down the left, 8→14 up the right. The grounded pins — 1, 4, 7, 10, 13 — are exactly what you measured: GND (7) plus the four output-enables tied low so the buffers stay on.

SN74AHCT125N 11OE → GND 21A · in 31Y · out 42OE → GND 52A · in 62Y · out 7GND 14VCC · +5V 134OE → GND 124A · in 114Y · out 103OE → GND 93A · in 83Y · out
Grounded (chip out): 1, 4, 7, 10, 13 · Vcc: 14 · inputs 2/5/9/12 take 3.3 V from the ESP32 · outputs 3/6/8/11 drive 5 V to the drivers. Notch = pin-1 end, matches the board silkscreen.

DM542T pinout · test map

The driver's two connectors — what every screw terminal is, and how to buzz each connection with the chips still out. Physical left-to-right order varies between DM542T versions; the printed label on your driver is authoritative — the groupings here (control vs. power) are universal.

DM542T DIGITAL STEPPER DRIVER CONTROL / LOGIC — to your board (5 V signals) PUL+ STEP in PUL− → J11 DIR+ DIR in DIR− → J11 ENA+ open ENA− open MOTOR + POWER — to PSU + motor (NOT on your board) +V 36 V + GND PSU − A+ BLK A− GRN B+ RED B− BLU
Notch (right edge) = orientation reference — line it up with the matching end of your driver so the terminals read the same direction. Grouped by connector; colors match the tables below — confirm each by its printed label.
Control side — buzz these with the chips OUT
TerminalConnects toContinuity
PUL+board J[x] · PUL+ (STEP)beep to that Jx PUL+
DIR+board J[x] · DIR+beep to that Jx DIR+
PUL−J11 · common GNDbeep to J11
DIR−J11 · common GNDbeep to J11
ENA±leave open (enabled)open to everything
Motor + power side (separate supply)
TerminalConnects toContinuity
+VPSU +36 V+V↔GND = open before PSU on
GNDPSU (power ground)keep off J11 — see note
A+ / A−motor Blk / GrnA+↔A− = a few Ω (coil 1)
B+ / B−motor Red / BluB+↔B− = a few Ω (coil 2); A↔B open
Two things to respect: (1) the DM542T's control inputs are opto-isolated — its signal ground (PUL−/DIR− → J11) is isolated from the motor power GND, so don't tie those two together. (2) You can verify all of this with the chips out — the board's J-terminals sit downstream of the sockets, so board-terminal ↔ driver-terminal is just wire continuity, chip or no chip.

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)
PeakRMSSW1SW2SW3
1.000.71ONONON
1.461.04OFFONON
1.911.36ONOFFON
2.371.69OFFOFFON
2.842.03ONONOFF
3.312.36OFFONOFF
3.762.69ONOFFOFF
4.203.00OFFOFFOFF

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.

SS Stepper Controller v1.0 · 4-Axis Level Shifter + ESP32 · pin map verified 2026-07-02