Skip to the content
PCBKitNew board
2 layers137.5 × 105 mmController, the printed circuit board in 3D

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

3

README

readme.md

CNC 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:

shell
$ 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.deb

Future 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.

shell
$ 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_defconfig

Parts

196
QtyValueFootprintReferences
26330RResistor_SMD:R_0805_2012MetricR14, R31, R32, R33, R34, R35, R36, R37, R38, R55, R56, R57, R58, R59, R60, R61 +10
26LEDLED_SMD:LED_0805_2012MetricLD1, LD2, LD10, LD11, LD12, LD13, LD14, LD15, LD16, LD17, LD18, LD19, LD20, LD21, LD22, LD23 +10
241kResistor_SMD:R_0805_2012MetricR23, R24, R25, R26, R27, R28, R29, R30, R47, R48, R49, R50, R51, R52, R53, R54 +8
24680RResistor_SMD:R_0805_2012MetricR15, R16, R17, R18, R19, R20, R21, R22, R39, R40, R41, R42, R43, R44, R45, R46 +8
24VOM617A-4Tsmd:VOMOPTOO1, O2, O10, O11, O12, O13, O14, O15, O16, O17, O18, O19, O20, O21, O22, O23 +8
141uCapacitor_SMD:C_0805_2012MetricC6, C7, C9, C10, C11, C12, C13, C20, C21, C23, C24, C25, C26, C27
1468kResistor_SMD:R_0805_2012MetricR3, R4, R5, R6, R7, R8, R9, R87, R88, R89, R90, R91, R92, R93
13100nCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5, C8, C14, C15, C16, C17, C18, C19, C22
674HC14Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU4, U5, U6, U7, U8, U9
4120kResistor_SMD:R_0805_2012MetricR11, R13, R95, R97
41k5Resistor_SMD:R_0805_2012MetricR10, R12, R94, R96
4M3mechanical:M3F1, F2, F3, F4
3TEVALULOK12Wte-connectivity_val-u-lok_vertical:te-connectivity_val-u-lok_vertical_12_1-1586768-2J2, J3, J4
2MC33204Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU3, U10
2TEVALULOK4Wte-connectivity_val-u-lok_vertical:te-connectivity_val-u-lok_vertical_4_1586768-4J1, J8
12k2Resistor_SMD:R_0805_2012MetricR2
178L05SMDPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
178L10SMDPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1RESISTORResistor_SMD:R_0805_2012MetricR1
1RPI40PINrpi_footprints:rpi-40pinU11
1TEVALULOK8Wte-connectivity_val-u-lok_vertical:te-connectivity_val-u-lok_vertical_8_1586768-8J10

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 mmCHAdeMO V2.0, the printed circuit board in 3D

    CHAdeMO V2.0

    larsrengersen/chademo-hardware

    131 partsMIT
  • 2 layers100 × 100 mmMosogep, the printed circuit board in 3D

    Mosogep

    simonyiszk/mosogep.sch-v2

    264 parts
  • 2 layers38.8 × 60.7 mm4bp ZIFF MD9, the printed circuit board in 3D

    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 mmBela cape, the printed circuit board in 3D

    Bela cape

    BelaPlatform/bela-hardware

    Bela cape and capelets

    153 parts42
  • 2 layers89.2 × 82.6 mmDesktop 50 Pin TopConn, the printed circuit board in 3D

    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 mmKickstart switcher-12up, the printed circuit board in 3D

    Kickstart switcher-12up

    keirf/pcb-projects

    The old Kickstart switcher documentation is here.

    197 parts108CC0-1.0
  • 2 layers100 × 100 mmExplorer, the printed circuit board in 3D

    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 mmPLC-14500, the printed circuit board in 3D

    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