Skip to the content
2 layers160 × 100 mmPIAD-18bits, the printed circuit board in 3D

This project consists of an 18-bit analog input (ADC) and output (DAC) within a range of 20 V (± 10 V) and 32 digital pins that can be either as inputs or outputs.

Size
160 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
178
Nets
130
Pads
795
Tracks, vias
1,886, 157
Pours
9
Routed
Yes
KiCad
KiCad 4
Created
7 Dec 2018
Updated
10 Apr 2026

Overview

PIAD-18bits is an open-source printed circuit board by lnls-sirius, from the lnls-sirius/SPIxCONV repository on GitHub, published under the MIT licence. It is a 2-layer board of 160 × 100 mm with 178 parts on 130 nets, routed with 1,886 tracks and 157 vias.

It is built around the 5M80ZT100A5N, DCP020515DU and LT3080EDD, with the OPA2277U, 74LCX245M and LT3015EQ among its other parts. Its parts include 91 capacitors, 38 resistors, 18 ICs, 17 connectors and 4 transistors.

Main components

11

README

README.md

SPIxCONV

This project consists of an 18-bit analog input (ADC) and output (DAC) within a range of 20 V (± 10 V) and 32 digital pins that can be either as inputs or outputs. This system interfaces with pulsed power electronics hardware in order to control the output voltage for pulsed magnets as well as read and write status commands to their power supplies. An operator interface (OPI) software based on Qt was also developed for remote control.

Hardware

Main Board

Main Board

Circuit
  • Board

  • CPLD

  • DAC

  • ADC

  • Digital I/O

PCB

Connectors
  • SPIxxCON

  • CPLD

  • Board Connection Link

Test Points
  • SPI

  • Power Voltage

  • Analog In/Out

BOM

Bill of materials

GPIO Expander Board

GPIO Expander Board

Circuit

GPIO board circuit

PCB

Connectors
  • Interface A/B

  • Interface C/D

Test Points
  • Power Voltage

  • Analog In/Out

BOM

Bill of materials

Identification

Software

The software files of this project related to the server-side (IOC) is now available at streamdevice-ioc GitHub's repository under the "spixconv" directory.

The software files related to the OPI (Operator Interface) is now at pydm-opi GitHub's repository.

Finally, the client-side (Python code) is at this repository under the scripts directory.

Brief Description

To remotely control the board an EPICS IOC with an OPI was developed.

The IOC was built using asynDriver and StreamDevice on top of it. The application is launched in a form of a Docker container. The Docker image can be found at Docker Hub with the tag "SPIxCONV" followed by the version (eg: SPIxCONV-v1.9.6).

To configure the parameters of the IOC a spreadsheet is used (available for CNPEM accounts only). PV's prefix, Power Supply voltage, host IP to connect to, scan rate and other settings can be adjusted.

OPI (Operator Interface)

Previously, Control System Studio was used to develop the OPI. The windows can still be found under the CSS directory. Lately, we have been using PyDM (Python Display Manager) to develop the windows. As stated before, the files related to the PyDM OPI is located in pydm-opi repository.

OPI

CPLD

Board Calibration

To achieve more confiability, a calibration is done considering the DAC adjusts and the ADC measures. The next figures show the setup for this procedure. We basically connect the DAC output to the voltmeter and to the ADC input simultaneously.

  • DAC calibration: To calibrate the DAC we set its output to -9 V and later to +9 V and measure the real output voltage with the help of a 7 ½ digit voltmeter (here we are using the Keysight 34420A. We then use both measures to calculate the angular and linear coeffients for this curve.

  • ADC calibration: Now that we have the DAC calibrated, we will use its output to calibrate the ADC coefficients. Again, we set the DAC output to -9 V (already considering the corrections), wait 60 s for thermal stabilization and read the voltage with the ADC. We then repeat the procedure for an adjustment of +9 V on the DAC output. Finally, these measures are used to calculate an angular and linear coefficient for the ADC.

An automated script was developed for this process. To control the voltmeter 34420A remotely we need a RS-232/USB adaptor to plug it in the USB connector of the BeagleBone Black. An important thing to note, is that the serial cable (RS-232) has an identification to show which side is the voltmeter's one and which should be connected to the adaptor.

Finally, to calibrate the board, just connect to the BeagleBone Black and run the appropriate scrips, as showed below:

console
$ ssh root@<BBB-IP>
root@beaglebone:~# systemctl stop bbb-function
root@beaglebone:~# /root/spixconv/software/scripts/calibration.py <BOARD-ID>
    gain = 1.00014284735
    offset = -15.81235112
    gain = 1.00052568324
    offset = -66.6829873034

Where is the BeagleBone IP (for example "192.168.7.2") and the is the identification of the board (for example "15").

Board IDDAC gainDAC offsetADC gainADC offsetDate
11.00022856796-23.6045517951.00031151483-25.503497952506/14/2018
21.00026576963-28.8801796701.00047415222-60.215813783006/14/2018
31.00030796599-32.6996031801.00041814300-47.922711376906/18/2018
41.00017479634-17.2423411851.00026390485-31.617401479406/19/2018
51.00017265115-13.9747286901.00045784906-39.553380010106/19/2018
61.00015184443-11.6744238651.00060158655-59.172921288306/19/2018
71.00019784934-20.9188967601.00029330340-24.443958447106/19/2018
81.00035674834-37.7694488001.00029168671-34.032436382406/19/2018
91.00023135812-26.5667676951.00045023944-44.591192696606/19/2018
101.00020592482-21.5716328301.00044201352-51.352587195906/19/2018
111.00014897135-16.8622338351.00067934214-81.245690036206/19/2018
121.00022598345-22.0081009251.00057691743-66.011032583106/19/2018
131.00032333122-33.2671427751.00039023957-45.355220874706/19/2018
141.00016016368-18.3118846251.00048566801-60.557572648306/19/2018
151.00022607238-22.0513545201.00046470661-58.577090762506/19/2018
161.00028974958-32.6262031401.00073037347-97.737025128906/19/2018
171.00027075563-27.2929038051.00037276504-34.268222215006/20/2018
181.00017256223-15.7533689451.00046720927-66.446185494206/20/2018
191.00023103020-24.2966093151.00032961706-28.741752071106/20/2018
201.00019010191-20.9988503751.00012983616-2.1030990436506/20/2018
Code

https://lnls-sirius.github.io/SPIxCONV/

Known Problems

  • Not connecting to IOC after BBB reboots:
    Status: both nodes (IOC and BBB) show they are connected, but the IOC does not respond. Solution: reboot IOC.

  • Flash memory loses data: Status: this happened once in three years. After a power cycle, the flash suddenly lost al its data! Solution: record information in flash memory again.

FAQ

Parts

178
QtyValueFootprintReferences
38100nFCapacitors_SMD:C_0805C202, C204, C206, C208, C210, C212, C214, C216, C218, C220, C222, C224, C226, C227, C301, C302 +22
3010uFCapacitors_SMD:C_0805C207, C209, C211, C213, C215, C217, C219, C221, C223, C225, C305, C306, C310, C312, C318, C321 +14
1310kResistors_SMD:R_0805R102, R105, R203, R204, R205, R206, R209, R303, R309, R401, R403, R406, R412
6CONN_01X02Pin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmP301, P302, P305, P401, P403, P406
40Resistors_SMD:R_0805R207, R208, R306, R409
4100nFCapacitors_SMD:C_0603C303, C304, C404, C405
410uFCapacitors_SMD:CP_Elec_6.3x5.3C307, C308, C407, C409
41uFCapacitors_SMD:C_0805C201, C203, C317, C401
31kResistors_SMD:R_0805R101, R104, R202
3LT3080Controle:SOT-223U201, U301, U402
3OPA2277Housings_SOIC:SOIC-8_3.9x4.9mm_Pitch1.27mmU304, U305, U401
2Fiducials:Fiducial_1mm_Dia_2.54mm_Outer_CopperTopFD2, FD3
2Fiducials:Fiducial_1mm_Dia_2.54mm_Outer_CopperBottomFD1, FD4
2100uFCapacitors_SMD:CP_Elec_6.3x5.3C101, C102
2220Resistors_SMD:R_0805R407, R408
2220RResistors_SMD:R_0805R103, R106
2330nFCapacitors_SMD:C_0805C413, C414
24.7uFCapacitors_SMD:C_1210C320, C410
2470kResistors_SMD:R_0805R302, R410
26.2kResistors_SMD:R_0805R308, R411
2620RResistors_SMD:R_0805R107, R108
274LCX245Housings_SOIC:SOIC-20W_7.5x12.8mm_Pitch1.27mmU501, U502
2820kResistors_SMD:R_0805R301, R402
282kResistors_SMD:R_0805R304, R405
29.1kResistors_SMD:R_0805R305, R404
2BC807TO_SOT_Packages_SMD:SOT-23Q102, Q104
2BC817TO_SOT_Packages_SMD:SOT-23Q101, Q103
2DCP020515DUControle:DCR01XXXXUU303, U405
2LEDLEDs:LED_0805D101, D102
2LT3015Housings_SSOP:MSOP-12-1EP_3x4mm_Pitch0.65mmU302, U404
110nFCapacitors_SMD:C_0805C205
110pFCapacitors_SMD:C_0805C316
1180kResistors_SMD:R_0805R201
147pFCapacitors_SMD:C_0805C426
147uFCapacitors_SMD:CP_Elec_6.3x5.3C425
15M80ZT100Housings_QFP:TQFP-100_14x14mm_Pitch0.5mmU101
180MHzControle:Oscilador_3.3V_HCMOS_TTL_SMDX201
1AD5781Housings_SSOP:TSSOP-20_4.4x6.5mm_Pitch0.65mmU306
1AD688Controle:AD688_(SO16W)U307
1AD7634Housings_QFP:LQFP-48_7x7mm_Pitch0.5mmU406
1ADC_pinsPin_Headers:Pin_Header_Straight_1x05_Pitch2.54mmP405
1AVR-JTAG-10Pin_Headers:Pin_Header_Straight_2x05_Pitch2.54mmJTAG201
1Analog_inPin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmP404
1Analog_outPin_Headers:Pin_Header_Straight_1x02_Pitch2.54mmP303
1CCapacitors_SMD:C_0805C311
1C64ACControle:Eurocard_templateP201
1CONN_01X01Controle:LNLS_LOGO_SilkP102
1CONN_01X01Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mmP402
1CONN_01X01Controle:ground_plane_viaP306
1CONN_01X03Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mmP203
1CONN_01X04Pin_Headers:Pin_Header_Straight_1x04_Pitch2.54mmP202
1CONN_02X13Pin_Headers:Pin_Header_Straight_2x13_Pitch2.54mmP101
1DAC_pinsPin_Headers:Pin_Header_Straight_1x07_Pitch2.54mmP304
1DIP_SwitchControle:DIP_switch_SPST_KAE04LGGTSW201
1RResistors_SMD:R_0805R307
1REF5050Housings_SOIC:SOIC-8_3.9x4.9mm_Pitch1.27mmU403
1SPIxxCONControle:SPIxxCON_(only_connector)B201
1W25Q64FVHousings_SOIC:SOIJ-8_5.3x5.3mm_Pitch1.27mmU202

More from lnls-sirius/SPIxCONV

4
  • 2 layers195.7 × 100 mmPIAD-18bits, the printed circuit board in 3D

    PIAD-18bits

    lnls-sirius/SPIxCONV

    This project consists of an 18-bit analog input (ADC) and output (DAC) within a range of 20 V (± 10 V) and 32 digital pins that can be either as inputs or outputs.

    36 parts1MIT
  • 2 layers110 × 100 mmPIAD-18bits, the printed circuit board in 3D

    PIAD-18bits

    lnls-sirius/SPIxCONV

    This project consists of an 18-bit analog input (ADC) and output (DAC) within a range of 20 V (± 10 V) and 32 digital pins that can be either as inputs or outputs.

    24 parts1MIT
  • 2 layers55.3 × 44.9 mmAdapter, the printed circuit board in 3D

    Adapter

    lnls-sirius/SPIxCONV

    This project consists of an 18-bit analog input (ADC) and output (DAC) within a range of 20 V (± 10 V) and 32 digital pins that can be either as inputs or outputs.

    19 parts1MIT
  • 2 layers110 × 100 mmLPKF version, the printed circuit board in 3D

    LPKF version

    lnls-sirius/SPIxCONV

    This project consists of an 18-bit analog input (ADC) and output (DAC) within a range of 20 V (± 10 V) and 32 digital pins that can be either as inputs or outputs.

    13 parts1MIT

Similar boards

  • 4 layers84 × 82 mmToad, the printed circuit board in 3D

    Toad

    travisgoodspeed/goodfet

    An embedded bus adapter for various microcontrollers and radios.

    241 parts333
  • 2 layers160 × 120 mmSTM, the printed circuit board in 3D

    STM

    jherkenhoff/STM

    DIY scanning tunneling microscope (STM)

    307 parts88
  • 2 layers100 × 100 mmADA4898 LNA, the printed circuit board in 3D

    ADA4898 LNA

    aewallin/ADA4898_LNA

    Low Noise Amplifier based on ADA4898

    618 parts2
  • 2 layers160 × 136.5 mmSchematic Backup 9, the printed circuit board in 3D

    Schematic Backup 9

    PickyPointer/SrE

    the SrE software suite - with more jimmies

    140 parts1
  • 2 layers170 × 70 mmFda 2017.03, the printed circuit board in 3D

    Fda 2017.03

    openfnord/pda-8ch-fda-8ch

    417 parts
  • 2 layers169.3 × 128 mmPSU PCB, the printed circuit board in 3D

    PSU PCB

    ThomasVDD/SmartSupply

    SmartSupply is a digital battery powered lab powersupply. It is Arduino compatible and can be controlled via PC over USB.

    134 parts96
  • 2 layers50 × 100 mmPSU PCB, the printed circuit board in 3D

    PSU PCB

    ThomasVDD/SmartSupplyMini

    118 parts16

Questions

How big is the PIAD-18bits PCB?

It measures 160 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PIAD-18bits use?

178 parts, built around the 5M80ZT100A5N, DCP020515DU, LT3080EDD and OPA2277U. 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 PIAD-18bits KiCad files?

From the lnls-sirius/SPIxCONV repository on GitHub, at the commit this page was made from: the board is hardware/SPIxCONV/PIAD-18bits.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the PIAD-18bits design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).