

Controller
A CNC controller for working with LinuxCNC.
- Size
- 137.5 × 105 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 196
- Nets
- 181
- Pads
- 626
- Tracks, vias
- 2,010, 261
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 6 (file 20211014)
- Created
- 7 Mar 2021
- Updated
- 26 Feb 2026
Overview
Controller is an open-source printed circuit board by BrianSidebotham, from the BrianSidebotham/cnc-controller repository on GitHub. It is a 2-layer board of 137.5 × 105 mm with 196 parts on 181 nets, routed with 2,010 tracks and 261 vias.
It is built around the MC33204D, 74HC14 and VOM617A-4T. Its parts include 98 resistors, 27 capacitors, 11 ICs, 6 connectors and 4 fuses. It belongs with the robots and motor control boards of this library.
Main components
3MC33204D
SOIC-14-40℃~+105℃ -900mV~900mV 1.8V~12V 10mV 1V/us 2.2MHz 20nV/√Hz@1kHz 2uV/℃ 4 50nA 80mA 80nA 900uA 90dB Rail-to-Rail Input, Rail-to-Rail Output SOIC-14 Operational Amplifier ROHSonsemiOperational Amplifier74HC14
SOP-14-40℃~+85℃ 1.9V、3.98V、4.4V、5.48V、5.9V 100mV、260mV、260mV 20uA 25ns@4.5V,50pF 2V~6V 6 74HC Noise suppression function Schmitt trigger SOP-14 Inverters ROHSJSMSEMIInvertersVOM617A-4T
SOP-4-2.54mm-55℃~+110℃ 1 1.1V 120mV@2.5mA,10mA 3.75kV 320% 3us 3us@2mA,100Ω 50mA 60mA 6V 80V DC Phototransistor SOP-4-2.54mm Transistor, Photovoltaic Output Optoisolators ROHSVishay IntertechnologyTransistor, Photovoltaic Output Optoisolators
README
readme.mdCNC Controller
This CNC controller is an expansion board for LinuxCNC. See the electronics section for the RPi GPIO expansion board suitable for use with LinuxCNC using the configuration.
The PCB is an opto-isolation IO expansion board featuring:
- 16 Opto-isolated outputs (With indicator LED)
- 8 opto-isolated inputs (With indicator LED)
- 2 0-10V analogue outputs connected to two of the opto-isolated outputs

KiCAD Parts Library
This project relies on my KiCAD parts library. So you will need to also clone a copy of my KiCAD parts library.
Then, you can tell KiCAD where to find the parts library by creating a new environment
variable called KICAD_BJS_KICAD_PARTS and set the value to the path to the parts library.
If you get the value or variable name wrong you'll see a lot of missing symbols in the project.
Build LinuxCNC
You can go ahead and download the LinuxCNC Distribution or else you can build yourself an up-to-date version.
In order to get an up-to-date version, download the LinuxCNC RPi image and write it to an SD Card.
Boot the card and then do the following to update the LinuxCNC package:
$ wget https://www.linuxcnc.org/dists/buster/2.8-rtpreempt/binary-armhf/linuxcnc-uspace_2.8.4_armhf.deb
$ sudo dpkg -i ./linuxcnc-uspace_2.8.4_armhf.debFuture Buildroot
In order to build an OS specifically for LinuxCNC you can use the following instructions:
WARNING: These instructions are for future use, do not use yet.
$ wget https://buildroot.org/downloads/buildroot-2022.02.5.tar.gz
$ tar xf buildroot-2022.02.5.tar.gz
$ cd buildroot-2022.02.5
$ make raspberrypi4_64_defconfigParts
196| Qty | Value | Footprint | References |
|---|---|---|---|
| 26 | 330R | Resistor_SMD:R_0805_2012Metric | R14, R31, R32, R33, R34, R35, R36, R37, R38, R55, R56, R57, R58, R59, R60, R61 +10 |
| 26 | LED | LED_SMD:LED_0805_2012Metric | LD1, LD2, LD10, LD11, LD12, LD13, LD14, LD15, LD16, LD17, LD18, LD19, LD20, LD21, LD22, LD23 +10 |
| 24 | 1k | Resistor_SMD:R_0805_2012Metric | R23, R24, R25, R26, R27, R28, R29, R30, R47, R48, R49, R50, R51, R52, R53, R54 +8 |
| 24 | 680R | Resistor_SMD:R_0805_2012Metric | R15, R16, R17, R18, R19, R20, R21, R22, R39, R40, R41, R42, R43, R44, R45, R46 +8 |
| 24 | VOM617A-4T | smd:VOMOPTO | O1, O2, O10, O11, O12, O13, O14, O15, O16, O17, O18, O19, O20, O21, O22, O23 +8 |
| 14 | 1u | Capacitor_SMD:C_0805_2012Metric | C6, C7, C9, C10, C11, C12, C13, C20, C21, C23, C24, C25, C26, C27 |
| 14 | 68k | Resistor_SMD:R_0805_2012Metric | R3, R4, R5, R6, R7, R8, R9, R87, R88, R89, R90, R91, R92, R93 |
| 13 | 100n | Capacitor_SMD:C_0805_2012Metric | C1, C2, C3, C4, C5, C8, C14, C15, C16, C17, C18, C19, C22 |
| 6 | 74HC14 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U4, U5, U6, U7, U8, U9 |
| 4 | 120k | Resistor_SMD:R_0805_2012Metric | R11, R13, R95, R97 |
| 4 | 1k5 | Resistor_SMD:R_0805_2012Metric | R10, R12, R94, R96 |
| 4 | M3 | mechanical:M3 | F1, F2, F3, F4 |
| 3 | TEVALULOK12W | te-connectivity_val-u-lok_vertical:te-connectivity_val-u-lok_vertical_12_1-1586768-2 | J2, J3, J4 |
| 2 | MC33204 | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U3, U10 |
| 2 | TEVALULOK4W | te-connectivity_val-u-lok_vertical:te-connectivity_val-u-lok_vertical_4_1586768-4 | J1, J8 |
| 1 | 2k2 | Resistor_SMD:R_0805_2012Metric | R2 |
| 1 | 78L05SMD | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |
| 1 | 78L10SMD | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2 |
| 1 | RESISTOR | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | RPI40PIN | rpi_footprints:rpi-40pin | U11 |
| 1 | TEVALULOK8W | te-connectivity_val-u-lok_vertical:te-connectivity_val-u-lok_vertical_8_1586768-8 | J10 |
Questions
How big is the Controller PCB?
It measures 137.5 × 105 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Controller use?
196 parts, built around the MC33204D, 74HC14 and VOM617A-4T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Controller KiCad files?
From the BrianSidebotham/cnc-controller repository on GitHub, at the commit this page was made from: the board is electronics/controller/controller.kicad_pcb and its schematic electronics/controller/controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Controller design in my own project?
Its repository states no licence, so its author keeps all rights: ask BrianSidebotham before reusing the design.
Similar boards
- 4 layers100 × 107.7 mm

- 2 layers100 × 100 mm

- 2 layers38.8 × 60.7 mm

4bp ZIFF MD9
RIP-Felix/MEGA-AV-main
Timeline of events: ACE9921 & Villahed94 developed the original Mega Amp 1.0. Inception for a mod board that combines the Mega Amp with an RGB video amplifier was Bob from RetroRGB's idea.
144 parts49 - 4 layers71.8 × 54.6 mm

- 2 layers89.2 × 82.6 mm

Desktop 50 Pin TopConn
BlueSCSI/BlueSCSI-v2
BlueSCSI v2/Ultra - an open source, open hardware, SCSI emulator using the Pi Pico PR2040 and Pico 2 RP2350
108 parts459GPL-3.0 - 2 layers88.9 × 98.4 mm

Kickstart switcher-12up
keirf/pcb-projects
The old Kickstart switcher documentation is here.
197 parts108CC0-1.0 - 2 layers100 × 100 mm

Explorer
anyshake/explorer
🌏 Detecting seismic wave using 3 geophones and 3-axis accelerometer, pack & send data to AnyShake Observer over RS232 / RS485 serial.
266 parts100 - 2 layers160.1 × 101 mm

PLC-14500
nicolacimmino/PLC-14500
Retro trainer board based on the MC14500 1-bit ICU. The project is OSHW certified and a ready to assemble kit is available on Tindie.
173 parts70GPL-3.0