How to Wire and Configure the Axis Swapper

Most standard CNC controllers limit your capabilities by offering a fixed number of stepper driver channels, making it difficult or expensive to expand your machine. If you want to add secondary rotational or indexing axes to build a 4-axis or 5-axis setup, you are typically forced to completely upgrade your motion controller hardware.

Our new Axis Swapper solves this elegantly at the hardware level. Powered by a high-speed 74AHCT125 tri-state buffer IC, this board allows a single master controller axis to safely share its stepping logic between two separate physical motor drivers (such as alternating between an A-axis tilt head and a B-axis rotary platter).

Axis Swapper

Because it uses hardware-locked active buffering, it is physically impossible to drive both axes at the same time—safeguarding your machine from accidental dual-movement and mechanical crashes.

Here is exactly how to wire, configure, and automate this board using your Buildbotics CNC Controller.


🔌 Step 1: Physical Terminal Wiring

Because the Buildbotics Controller cleanly isolates external motor logic from secondary tool I/O, your selector board acts as the meeting bridge. External motor step/direction logic lives on the DB15 Breakout Box, while the programmable digital output lines live on the DB25 Breakout Box.

For the cleanest control panel routing, we recommend bundling the 4 logic lines from the DB15 block and your single toggle line from the DB25 block into a single clean cable run using zip-ties or braided sleeving.

Connect the wires to the J1 Input Terminal on the Selector Board as follows:

Selector Board Input (J1) Buildbotics Connection Location Purpose
Pin 1 (+5V) 5V Pin (DB25 Pin 20 or DB15 pins 7 or 8) Powers the logic chip
Pin 2 (anot_b) Digital Output 0 (DB 25 pins 1, 2, 15, or 16) A/B selection toggle gate
Pin 3 (Step) Step Pin (on DB15 pins 2, 3, 4, or 5) High-speed step pulse
Pin 4 (Dir) Direction Pin (DB15 pins 10, 11, 12, or 13) Motor direction logic
Pin 5 (GND) GND Pin (DB25 pins 7, 19, or 25 or DB15 pins 14 or 15) Common digital ground

Output Motor Driver Wiring

Once your input signals are wired, you must route the isolated outputs from your selector board over to your external stepper motor drivers.

  • Output A (J2) connects to Motor Driver 0 (e.g., Tilt Axis)
  • Output B (J3) connects to Motor Driver 1 (e.g., Turn Axis)

Use the following terminal wiring map to connect the pins on either output block (J2 or J3) directly to the matching control terminals on its respective motor driver:

Selector Board Output Terminal Pin External Motor Driver Destination Pin Signal Action
Pin 1 (+5V) PUL+ and DIR+ and ENA+ Common 5V Positive Bus (Anode)
Pin 2 (Step) PUL- (or CLK-) Step / Pulse Logic Control
Pin 3 (Dir) DIR- Motor Direction Control
Pin 4 (GND) Leave Unconnected Ground reference handled on J1 input

⚙️ Step 2: Controller I/O Configuration

Before creating your macro buttons, you must tell the Buildbotics Controller software which physical pin is acting as your A/B toggle switch.

  1. Open the Buildbotics web interface and navigate to SETTINGS -> I/O.
  2. Locate the digital output pin selected in step 1 and change the function to output-0, output-1, output-2, or output-3. In this example, we chose pin 1 and output-0.
  3. Set the Mode to 'lo-hi'.
  4. Click Save to apply the configuration.

⚙️ Step 3: Creating the Macro Buttons

To seamlessly switch between your two multi-axis modes (e.g., Tilting vs. Turning) without losing your machine coordinates, you can set up two custom Macro buttons in your Buildbotics web interface.

These macros automatically back up your absolute machine position (#5423) for the inactive motor, reload the last saved position for the incoming motor using G28.3 (without physical movement), and flip the electronic hardware gate via G-code commands (M64/M65).

Tilt and Turn Macro Buttons

🔵 Macro 1: "Tilt" (Select Output A / Motor Driver 0)

Go to your Buildbotics Macro settings, create a button named Tilt, and paste the following code:

o110 if [#<_rotary_mode> NE 1]
    #<_bloc> = #5423      (Save the active Turn position to memory)
    G28.3 A#<_aloc>       (Restore the last saved Tilt position to the DRO)
o110 endif

M65 P0                    (Turn off Digital Output 0 -> Select Hardware Output A)
#<_rotary_mode> = 1       (Set system state to Mode 1)
(msg, Machine switched to Tilting Mode)

🟡 Macro 2: "Turn" (Select Output B / Motor Driver 1)

Create a second macro button named Turn, and paste the following code:

o110 if [#<_rotary_mode> NE 2]
    #<_aloc> = #5423      (Save the active Tilt position to memory)
    G28.3 A#<_bloc>       (Restore the last saved Turn position to the DRO)
o110 endif

M64 P0                    (Turn on Digital Output 0 -> Select Hardware Output B)
#<_rotary_mode> = 2       (Set system state to Mode 2)
(msg, Machine switched to Turning Mode)

🚀 Step 4: How to Operate

Once wired and configured, operation is entirely automated:

  1. When you boot up, home your machine as normal.
  2. Click the Tilt button to work on your primary axis.
  3. When you are ready to switch, simply click the Turn button. The controller will instantly store where your Tilt axis was resting, swap the hardware signal line to your Turn axis, and update your screen coordinates perfectly.

You can also embed M64 P0 and M65 P0 directly into your post-processed G-code program files if you want your machine to automatically swap axes mid-job!

Ready to upgrade your machine? I only manufactured an incredibly limited run of 18 boards, and they are available on our store right now for less than $35.

👉 Click Here to Grab One of the 18 A/B Step/Dir Multi-Axis Selector Boards Before They Sell Out!