Skip to the content
PCBKitNew board
2 layers98.5 × 111 mmIntegrated board, the printed circuit board in 3D

a controller system to operate motors and microscope XYZ stage

Size
98.5 × 111 mm
Copper layers
2
Thickness
1.6 mm
Parts
69
Nets
82
Pads
249
Tracks, vias
374, 1
Pours
5
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
16 Jun 2022
Updated
30 Sep 2025

Overview

Integrated board is an open-source printed circuit board by Open-2-Photon-Microscope, from the Open-2-Photon-Microscope/3-axis-controller repository on GitHub. It is a 2-layer board of 98.5 × 111 mm with 69 parts on 82 nets, routed with 374 tracks and 1 via.

It is built around the LM2596T-5.0 and ULN2003. Its parts include 23 resistors, 20 connectors, 15 capacitors, 4 ICs and 2 diodes. It belongs with the ESP32 boards of this library.

Main components

2

README

README.md

3-axis-controller

A manipulator device to operate microscope stage XYZ translations. This project was specifically designed for the OpenFlexure Delta Stage.

Assembly

Assembling the Board

  1. Order the (2 layer) board from a PCB manufacturer (e.g. JLCPCB) by uploading this file.
  2. Using the BOM, solder together the integrated board from electronics/integrated_board. The board is labeled with the locations and values of resistors, capacitors etc.
    • Make sure to solder socket headers to the board and slot in the esp32 and pcf8575 modules rather than soldering them directly to the board. Sometimes things go wrong and they will be very hard to remove...
    • All parts are intended to be soldered as sitting on the top face of the board - any differences seen in the 3D view of the PCB in KiCAD should be ignored

Software

Setting up MicroPython with Thonny IDE

  1. Follow the tutorial on this page if you haven't already done so when assembling the board.

Upload the Code

  1. Download the code here
  2. Open them all in Thonny.
    • Connect your board to your PC via micro USB.
  3. In Thonny, in the files panel (view > files) navigate to the location of the code to be installed
  4. Highlight all files and folders, including lib
  5. Right click and select Upload to /
  6. CHECK: Does the file layout in the esp32 look like that on this GitHub?

Assembling the controller

  1. Assemble the JST-XH cables mentioned in the BOM
  2. For each button and flip switch, cut one crimped wire in half and solder before attaching to the JST-XH head Orientation doesn't matter.
    All switches in the panel use one crimped cable cut in half
  3. Print the enclosure top and assemble as shown. Include the other rotary encoders and switches (not shown). The appropriate washers and nuts to screw onto the front face should be shipped with each component. Use M3x10 screws for the LCD. Assemble the top of the controller
  4. Use a 4-pin JST cable to connect the LCD to the marked port. Make sure the GND and VCC pins are attached to the same connection on the main and LCD board.
    • NOTE: there is a variable resistor on the back of the LCD board that adjusts the contrast, so don't screw the whole box shut until you've tested the text appears correctly
  5. Use a 5-pin JST cable for each rotary encoder. MAKE SURE the GND pin connects to the pin marked with "-" on the encoder.
  6. Plug in all the switches to the board to their closest port.
    • DO NOT PLUG SWITCHES INTO THE PORTS MARKED AS 12V/GND AS IT MAY START A FIRE AND SOME FEATURES MAY NOT WORK AS INTENDED
  7. Once you are confident the LCD is displaying text correctly when powered on, assemble the enclosure as shown. Make sure to print the feet in some TPU for grip. Use M3x16 (or longer).
  • Note you should have all components wired up and screwed in at this point, not all of this is shown on the diagram.

    Assemble the whole box!

Connecting to the Delta Stage

  1. Split the length (2M) of ribbon cable at the ends into 3 strips of 5 wires, and 3 strips of 2 wires. You can peel away the remaining wires and discard them.
    • Note it may be helpful for cable management not to entirely separate the 3x5 and 3x2 strips.
  2. Crimp one end of the cable, and slot into JST XH 5 or 2 cable headers respectively.
  3. Put a short length of heat-shrink tubing on each remaining end of all wires.
  4. Next, solder the remaining 3x5 wires to straight JST HX 5 pin headers (male)
    • Ensure the orientation of both ends of the cable is such that each lane could form a complete loop if it were plugged into itself without any twist. (i.e. each in and out pin is the same)
  5. Solder the sets of 2 wires to the footswitches - one to the middle-pin, the other to the pin towards the hinge of the lever.
    • Ensure this configuration is such that a circuit is made (not broken) when the switch is pressed
  6. Use hot air or a soldering iron to shrink the heat-shrink tubing and cover these solder joints.
  7. Use m2x8 screws to attach the switches to the modified feet of the Delta Stage and use these in place of the ones on the official models when assembling the actuators
    • Make sure to use the modified models found here for the open 2-photon project

Installing the I2C library

You may need to install the lib portion of the I2C code another way - the above method should work, so only follow these instructions if something is not behaving as expected.
  1. Download micropython-i2c-lcd-0.1.1.tar.gz
  2. In Thonny go to Tools > Manage Packages
    • make sure the esp32 is still plugged in to your computer
  3. Click the Install from local file link and select the .tar.gz file you downloaded
  4. CHECK: Does the file layout in the esp32 look like that on this GitHub? You should not need to but you may have to rename the folder to ensure all the code is looking in the right place...

Parts

69
QtyValueFootprintReferences
121kΩResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR1, R2, R4, R5, R10, R11, R13, R14, R22, R23, R25, R26
61.8kResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR3, R6, R12, R15, R24, R27
622nFCapacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mmC1, C2, C8, C9, C10, C11
533nFCapacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mmC7, C12, C13, C14, C15
4MountingHoleMountingHole:MountingHole_3.2mm_M3_DIN965H1, H2, H3, H4
210µFCapacitor_THT:C_Disc_D6.0mm_W4.4mm_P5.00mmC3, C4
2Conn_01x16Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ8, J9
2Conn_CoaxialConnector_Coaxial:BNC_Amphenol_B6252HB-NPP3G-50_HorizontalJ1, J2
2ULN2003Package_DIP:DIP-16_W7.62mm_LongPadsU1, U2
11.8KResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR17
1100KResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR8
1100kResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR9
11KResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_HorizontalR16
1220µCapacitor_THT:CP_Radial_D8.0mm_P3.80mmC6
133µHInductor_THT:L_Radial_D10.0mm_P5.00mm_Neosid_SD12_style3L1
1560Resistor_THT:R_Box_L13.0mm_W4.0mm_P9.00mmR7
1680µCapacitor_THT:CP_Radial_D10.0mm_P2.50mm_P5.00mmC5
1BARREL_JACKConnector_BarrelJack:BarrelJack_HorizontalCON1
1Conn_01x02Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalP1
1ESP32-DEVKITC-32Dfootprints:MODULE_ESP32-DEVKITC-32DU4
1Endstop AConnector_JST:JST_XH_S2B-XH-A_1x02_P2.50mm_HorizontalJ5
1Endstop BConnector_JST:JST_XH_S2B-XH-A_1x02_P2.50mm_HorizontalJ6
1Endstop CConnector_JST:JST_XH_S2B-XH-A_1x02_P2.50mm_HorizontalJ7
1LCDConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalP2
1LEDLED_THT:LED_D3.0mmD2
1LM2596T-5Package_TO_SOT_THT:TO-220-5_P3.4x3.7mm_StaggerOdd_Lead3.8mm_VerticalU3
1Schottky 5ADiode_THT:D_DO-201AD_P15.24mm_HorizontalD1
1Switch 1Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ11
1Switch 2Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ4
1UARTConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalP16
1motor1(15,2,0,4)Connector_JST:JST_XH_S5B-XH-A_1x05_P2.50mm_HorizontalJ13
1motor2 (16,17,5,18)Connector_JST:JST_XH_S5B-XH-A_1x05_P2.50mm_HorizontalJ15
1motor3 (19,21,22,23)Connector_JST:JST_XH_S5B-XH-A_1x05_P2.50mm_HorizontalJ17
1pcf8575 IO expanderConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ10
1rot_encoderX(14,27)Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_VerticalJ12
1rot_encoderY(25,26)Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_VerticalJ14
1rot_encoderZ(35,34)Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_VerticalJ16

Questions

How big is the Integrated board PCB?

It measures 98.5 × 111 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Integrated board use?

69 parts, built around the LM2596T-5.0 and ULN2003. 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 Integrated board KiCad files?

From the Open-2-Photon-Microscope/3-axis-controller repository on GitHub, at the commit this page was made from: the board is electronics/integrated_board/integrated_board.kicad_pcb and its schematic electronics/GPIO_expander_board/GPIO_expander_board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Integrated board design in my own project?

Its repository states no licence, so its author keeps all rights: ask Open-2-Photon-Microscope before reusing the design.

More from Open-2-Photon-Microscope/3-axis-controller

3
  • 2 layers62 × 98 mmStepper driver, the printed circuit board in 3D

    Stepper driver

    Open-2-Photon-Microscope/3-axis-controller

    a controller system to operate motors and microscope XYZ stage

    17 parts
  • 2 layers49 × 59.5 mmGPIO expander board, the printed circuit board in 3D

    GPIO expander board

    Open-2-Photon-Microscope/3-axis-controller

    a controller system to operate motors and microscope XYZ stage

    14 parts
  • 2 layers39 × 52 mmBoard2, the printed circuit board in 3D

    Board2

    Open-2-Photon-Microscope/3-axis-controller

    a controller system to operate motors and microscope XYZ stage

    14 parts

Similar boards

  • 2 layers103.3 × 63.7 mmUsb power hub, the printed circuit board in 3D

    Usb power hub

    dilshan/usb2-power-hub

    4-Port High Power USB 2.0 Hub

    100 parts189MIT
  • 2 layers138.4 × 91.4 mmSTM32 MegaBlaster, the printed circuit board in 3D

    STM32 MegaBlaster

    AidanHockey5/STM32_VGM_Player_YM2612_SN76489

    A Sega Genesis music player based off of the STM32 BluePill board and real YM2612+SN76489 sound chips.

    96 parts117AGPL-3.0
  • 2 layers112.6 × 85.4 mmRda5807m radio, the printed circuit board in 3D

    Rda5807m radio

    dilshan/rda5807m-receiver

    FM stereo radio receiver prototype with RDS

    64 parts23MIT
  • 2 layers96.9 × 110.7 mmI2c tester, the printed circuit board in 3D

    I2c tester

    dilshan/i2c-test-terminal

    I2C hardware test terminal/master mode emulator.

    69 parts20MIT
  • 2 layers80.7 × 34.1 mm5V regulated safe power supply, the printed circuit board in 3D

    5V regulated safe power supply

    anujthakur512/Buck-Converter-5V

    I build a Buck Converter (5V) using IC LM2596 on KiCad as my 1st project of learning PCB Designing.

    16 parts3MIT
  • 2 layers85.1 × 55.1 mmLcr addon, the printed circuit board in 3D

    Lcr addon

    BadenLab/Open-Visual-Stimulator

    An arbitrary-spectrum spatial visual stimulator for vision research

    23 parts3MIT
  • 4 layers101.5 × 83.4 mmThermostat, the printed circuit board in 3D

    Thermostat

    jrtaylor71/Smart-Thermostat-Alt-Firmware

    A comprehensive, feature-rich smart thermostat firmware for ESP32-S3 microcontrollers with touch display, web interface, and Home Assistant integration.

    91 parts2
  • 2 layers55.8 × 28.6 mmNmea0183-i2c wifi, the printed circuit board in 3D

    Nmea0183-i2c wifi

    alexsomesan/nmea0183-i2c-wifi

    Reads wind data from a NASA Clipper wind instrument via I2C and sends out NMEA0183 wind messages via WiFi.

    14 parts1