6-Axis Endstop Breakout Board

by francescobra_ in Circuits > Microcontrollers

15 Views, 0 Favorites, 0 Comments

6-Axis Endstop Breakout Board

4.png
1.png
2.png
3.png

If you're building anything with more than a couple of limit switches: a CNC machine, a multi-axis 3D printer, a robotic arm, you've probably run into the same annoying wiring problem I did: a mess of resistors, floating pins, and endstops that trigger randomly because of electrical noise.

So instead of wiring resistors and capacitors onto a protoboard for the tenth time, I designed a small PCB that does it all for me: plug your controller in on one side, plug up to twelve limit switches in on the other, and you're done. No extra components, no software debouncing needed.

Here's how to build one yourself.

Supplies

  1. 12x 10 kΩ resistors
  2. 12x 100 nF ceramic capacitors
  3. 2x multi-pin headers (6-pin), for the controller-side inputs
  4. 1x 2-pin header, for the +5V/GND power input
  5. 12x 2-pin headers/connectors, for the Min/Max endstop outputs
  6. Custom PCB (design files below)
  7. Soldering iron and solder
  8. A microcontroller to test with (I used an Arduino, but anything with digital inputs works)
  9. Mechanical limit switches (up to 12 — one per Min/Max connector you plan to use)

Understand the Problem You're Solving

A limit switch is just two contacts that touch or don't touch. Wire it straight to a microcontroller pin, though, and two things go wrong:

  1. The pin floats. With the switch open, the pin isn't connected to anything, so it picks up noise and reads random highs and lows. The fix is a pull-up resistor, which holds the pin at a known HIGH state until the switch pulls it LOW.
  2. The switch bounces. Mechanical contacts physically bounce for a few milliseconds before settling, like a dropped ball. Without filtering, your microcontroller can see a single switch press as five or six rapid triggers.

This board fixes both problems in hardware, for up to twelve switches at once — so your code never has to worry about either one.

Look at the Circuit

Screenshot 2026-09-03 185821.png

Every channel on this board uses the exact same 3-part circuit:

  1. A 10 kΩ resistor from +5V to the signal line (the pull-up)
  2. A 100 nF capacitor from the signal line to GND (the filter)
  3. The switch itself, between the signal line and GND

Together, the resistor and capacitor form a simple RC low-pass filter with a time constant of about 1 millisecond (τ = R × C) — enough to smooth out switch bounce, but still fast enough for real-time use. This exact block repeats twelve times, giving you six axes (A–F), each with a Min and a Max endstop.

Check Out the PCB Layout

003646358c9cdf740fdf049a6bf60ec61e6dd46667856.png
003646475630b74d930ce4cbf9d45c8bd802935b58048.png

The layout keeps things simple:

  1. Two multi-pin headers on the left bring in the twelve signal lines from your controller, plus a small connector for +5V/GND power.
  2. Twelve 2-pin connectors on the right, clearly labeled A through F and Min/Max, are where your endstops plug in.
  3. Four mounting holes in the corners let you screw the board straight into an enclosure or machine frame.
  4. It's a simple 2-layer board — no need for anything fancier, since it's just DC power and a handful of digital signals.

Order the PCB

Send the Gerber files to your PCB manufacturer of choice. It's a simple 2-layer board, so it's cheap and quick to produce even in small quantities.

I got mine made through PCBWay, who also sponsor this project. For a simple 2-layer board like this one, their standard prototyping service is more than enough, and turnaround was quick. If you want to order your own and it's your first time with them, my link gets you $5 off.

Solder the Components

Once your boards arrive, solder on:

  1. The 12 resistors and 12 capacitors
  2. The two input headers and the power header
  3. The 12 output headers, one per Min/Max connector

Tip: Solder the passive components (resistors, capacitors) first, then the headers: it's much easier to get a flush, level connector when the board isn't already crowded with parts.

Wire Up Your Endstops

For each axis you're using:

  1. Connect the two input headers to digital input pins on your controller.
  2. Connect the power header to +5V and GND.
  3. Plug each mechanical switch into its labeled Min or Max connector.

Test It

In your firmware, set each pin to INPUT and read it with digitalRead(). Thanks to the pull-up, an untouched switch reads HIGH, and a triggered one reads LOW. A simple sketch that prints each pin's state to the Serial Monitor is enough to confirm every channel is wired correctly before you connect it to your actual machine.