Skip to the content
2 layers99.7 × 67.3 mmOpto 16, the printed circuit board in 3D

Hardware for an Opto Board for PPUC

Size
99.7 × 67.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
206
Nets
145
Pads
628
Tracks, vias
2,012, 467
Pours
2
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
26 Mar 2025
Updated
25 May 2025

Overview

Opto 16 is an open-source printed circuit board by PPUC, from the PPUC/Hardware_Opto_16 repository on GitHub. It is a 2-layer board of 99.7 × 67.3 mm with 206 parts on 145 nets, routed with 2,012 tracks and 467 vias.

It is built around the RP2040, ADM3483ARZ and SN74AHCT1G125DBV, with the LMV321, W25Q128JVSIQ and LM339 among its other parts. Its parts include 110 resistors, 43 capacitors, 25 connectors, 10 ICs and 7 diodes. It belongs with the RP2040 boards of this library.

Main components

10

README

README.md

Opto PCB for PPUC Project

This is the hardware for a opto board which was designed for the PPUC pinball project, but can be useful in other applications as well.
It is designed for being low cost and functional for experimental use.
Not everything is tested nor does it fulfill EMC or any other specifications.
Use at your own risk! To make use of anything of this project a basic understanding of electronics and programming is necessary. Nothing of it is "plug and play". I'm surely not liable for any damage to assemblies, pinball machines or even persons.

Name

Opto_16 as it has 16 inputs and 16 led divers. Additionally it has one special output.

Application

Please be aware that in pinball many different opto types are used. You have to know which type of opto coupling you need for your purpose. I found the following types:

  • Optos with photo transistors as a receiver and common collector (used for example in Dirty Harry with board A-16998.1).
  • Optos with photo transistors as a receiver and common emitter (used for example in Rollergames with board C-13205). Commonly used for drop targets and flipper buttons.
  • Optos with photo diodes as a receiver (used for example in World Poker Tour with board 520-5239-01).

The transmitter LEDs I've seen so far, are either single (2 pins) or share a common cathode.

This Opto_16 PCB can be used to drive transmitter LEDs from a 5 V power supply and can cope with common collector photo transistors and photo diodes.
There are 2 groups of inputs (2 x 8). One group is for photo transistors. The other group can be configured to be inputs for photo diode or photo transistor. Jumpers are used for configuration. You can only change the whole group (8 inputs), not a single channel. If no jumper is placed (all open) then the configurable group of 8 inputs are good for photo diodes. If you want them to be for photo transistors you have to close jumper JP2 and also put jumpers on the channel-connectors J18 to J25. Actually only the connectors for used channels has to be shorted by a jumper, not used channel can be left open.

If you have an application with common emitters you can use the inputs of the switch-matrix board (IO_16x8_matrix) of the PPUC project. The inputs of the standard IO board (IO_16_8_1) should work as well. In either case you need to drive the transmitter LED with a constant current of about 20 mA. This can be done with a 180 Ohm resistor at a 5 V supply (you have to wire this yourself).

If you have an opto board already (e.g. from an existing pinball machine) you can use this with the inputs of the switch-matrix board (IO_16x8_matrix) or the inputs of the standard IO board (IO_16_8_1). Connect the output transistor of the opto board to the input of the PPUC board in a way that the transistor switches to ground. Be aware that opto boards are powered with either 12 V or 5 V in existing pinball machines. Both can be used with PPUC.

Power Supply

The IO card must be supplied by 5 V (+-0.5 V). In the circuit this is named 5V_IN.

Controller

A RP2040 is used for it's cost/performance ratio. It is the same controller that is used in the Raspberry Pi Pico.

Communication Interfaces

  • RS_485: main communication interface for controlling the outputs. Usually connected to a host interface like a PC or Raspberry Pi or similar.
  • USB C: for programming, debug and flashing
  • Serial Wire: alternative for programming, debug and flashing

Switches (on board)

  • Reset: hardware reset for controller (RP2040)
  • Boot: if active, the board connects to a PC like an USB stick. Usually used for programming the code into the flash memory on the board.
  • DIP-switches: usually used to select an address for RS485 (16 combinations)

LED drivers

There are 16 outputs. Each of them drives one LED (usually red or infra red).

Inputs

There are 2 groups of inputs, each with 8 channels:

  • A group of 8 inputs are designed to be used with optos that use a photo transistor as receiver and are connected to have a common collector.
  • A group of 8 inputs are designed to be used with optos that use a photo diode as receiver. They are usually single (two pins) or share a common cathode.

Special Output

One special output is available for high speed signals. The voltage is 5 V, it is a push pull output that can drive a current up to 8 mA. It can be used to e.g. control a WS2812 LED strip.

Additional analog functions

  • There are 2 ADC channels from the RP2040 made accessible through a connector. Filtered by a 1st order low pass (1 kOhm/100 nF, fg = 1.6 kHz).
  • 6 GPIOs are also routed to this connector. They are also filtered by a 1st order low pass (1 kOhm/100 nF, fg = 1.6 kHz) and could be used for analog output per PWM.

Connectors

There are pads for connectors that fit the A-16998.1 board. Additionally for 8 inputs and drivers there are pins for single LEDs (transmitter and receiver) in 2.54 mm pitch.

Parts

206
QtyValueFootprintReferences
31100nCapacitor_SMD:C_0402_1005MetricC1, C10, C11, C12, C13, C15, C16, C17, C20, C21, C22, C23, C24, C25, C26, C27 +15
2210kResistor_SMD:R_0603_1608MetricR1, R5, R6, R8, R33, R55, R56, R61, R62, R67, R68, R73, R74, R79, R103, R104 +6
212kResistor_SMD:R_0603_1608MetricR14, R18, R19, R28, R51, R58, R60, R64, R66, R70, R72, R76, R78, R102, R107, R110 +5
171kResistor_SMD:R_0603_1608MetricR52, R57, R59, R63, R65, R69, R71, R75, R77, R81, R84, R89, R92, R100, R105, R108 +1
16180RResistor_SMD:R_1206_3216MetricR35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46, R47, R48, R49, R50
16Conn_01x02Connector_Molex:Molex_KK-254_AE-6410-02A_1x02_P2.54mm_VerticalJ7, J8, J9, J10, J11, J12, J13, J14, J18, J19, J20, J21, J22, J23, J24, J25
131kResistor_SMD:R_0402_1005MetricR4, R12, R15, R20, R21, R22, R23, R24, R25, R26, R29, R30, R34
81MResistor_SMD:R_0603_1608MetricR82, R85, R90, R93, R98, R101, R106, R109
710uCapacitor_SMD:C_0603_1608MetricC2, C4, C18, C30, C33, C34, C35
4Conn_01x10Connector_Molex:Molex_KK-254_AE-6410-10A_1x10_P2.54mm_VerticalJ6, J15, J16, J17
4LM339Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU7, U8, U9, U10
2100RResistor_SMD:R_0603_1608MetricR2, R16
21ADiode_SMD:D_SOD-323D3, D7
21uCapacitor_SMD:C_0402_1005MetricC14, C19
227Resistor_SMD:R_0402_1005MetricR10, R11
227pFCapacitor_SMD:C_0402_1005MetricC6, C7
25k1Resistor_SMD:R_0603_1608MetricR31, R32
2Conn_01x06Out_8x10:Terminal_Block_RTMPinJ1, J5
2SD15Diode_SMD:D_SOD-323D1, D2
10Resistor_SMD:R_0603_1608MetricR7
1100µ 35VCapacitor_SMD:CP_Elec_6.3x7.7C31
1120RResistor_SMD:R_0603_1608MetricR3
112MHz,18pFCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1330kResistor_SMD:R_0603_1608MetricR53
133kResistor_SMD:R_0603_1608MetricR13
13kResistor_SMD:R_0603_1608MetricR27
15kResistor_SMD:R_0603_1608MetricR17
16k8Resistor_SMD:R_0603_1608MetricR54
1ADDRESSButton_Switch_SMD:SW_DIP_SPSTx04_Slide_6.7x11.72mm_W8.61mm_P2.54mm_LowProfileSW3
1ADM3483Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U6
1BootButton_Switch_SMD:SW_SPST_SKQG_WithStemSW2
1Conn_01x10Connector_PinSocket_2.54mm:PinSocket_1x10_P2.54mm_VerticalJ4
1Jumper_2_OpenConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1LED gnLED_SMD:LED_0805_2012MetricD4
1LMV321Package_TO_SOT_SMD:SOT-23-5U3
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU4
1ResetButton_Switch_SMD:SW_SPST_SKQG_WithStemSW1
1SD05Diode_SMD:D_SOD-323D6
1SMAJ5.0Diode_SMD:D_SMAD5
1SN74AHCT1G125Package_TO_SOT_SMD:SOT-23-5U5
1TP_GNDConnector_Pin:Pin_D1.0mm_L10.0mmTP2
1TP_LEDConnector_Pin:Pin_D1.0mm_L10.0mmTP1
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_XKB_U262-16XN-4BVC11J3
1W25Q128JVSIQPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU2
1nmount SW DebugConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ2
1open: LED, closed: TransistorConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2

The 203 most common of 206 parts.

Similar boards

  • 2 layers97.6 × 67.3 mmIO 16x8 matrix, the printed circuit board in 3D

    IO 16x8 matrix

    PPUC/Hardware_IO_16x8_matrix

    Hardware for a Switch Matrix Board for PPUC

    210 parts
  • 2 layers100 × 100 mmIO 16 8 1, the printed circuit board in 3D

    IO 16 8 1

    PPUC/Hardware_IO_16_8_1

    Hardware for the generic I/O Board for PPUC

    227 parts5
  • 2 layers97.6 × 67.3 mmOut 8x10, the printed circuit board in 3D

    Out 8x10

    PPUC/Hardware_Out_8x10

    Hardware for Lamp Matrix Board for PPUC

    172 parts
  • 2 layers84 × 133 mmRadio kiosk fixed, the printed circuit board in 3D

    Radio kiosk fixed

    Filip-Kin/frc-radio-kiosk

    Bench box that powers and configures FRC radios: dual-mode PoE (802.3at via LTC4279, passive 12 V via TPS26600), USB-C PD or DC in, 15.6 V out for the Toughbook, 4x CR123A backup, STM32F072 firmware.

    192 parts
  • 2 layers226.5 × 75 mmGridiron, the printed circuit board in 3D

    Gridiron

    dededecline/Gridiron

    Gridiron keyboard designed by me. All files for production are inside this repository.

    159 parts13GPL-3.0
  • 4 layers111.6 × 133.9 mmGreenhouse controller pcb, the printed circuit board in 3D

    Greenhouse controller pcb

    hspil/greenhouse-controller-pcb

    Central controller for greenhouse automation project

    115 parts
  • 4 layers60.5 × 60 mmBusPirate-5-rev10, the printed circuit board in 3D

    BusPirate-5-rev10

    DangerousPrototypes/BusPirate5-hardware

    Bus Pirate Hardware and accessories for v5 and higher

    220 parts125MIT
  • 2 layers99.1 × 99 mmXDuinoRail Debug, the printed circuit board in 3D

    XDuinoRail Debug

    chatelao/xDuinoRail-Decoder

    The friendly decoder development plattform for model railroad tinkers.

    170 partsAGPL-3.0

Questions

How big is the Opto 16 PCB?

It measures 99.7 × 67.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Opto 16 use?

206 parts, built around the RP2040, ADM3483ARZ, SN74AHCT1G125DBV and LMV321. 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 Opto 16 KiCad files?

From the PPUC/Hardware_Opto_16 repository on GitHub, at the commit this page was made from: the board is Opto_16/Opto_16.kicad_pcb and its schematic Opto_16/Drv8.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Opto 16 design in my own project?

Its repository states no licence, so its author keeps all rights: ask PPUC before reusing the design.