Skip to the content
6 layers108 × 101.6 mmIsolated Multi Rail Power Supply Monitor Sensor Board, the printed circuit board in 3D

Isolated Multi Rail Power Supply Monitor Sensor Board

capotosto/PS_Monitor

Isolated Multi-Rail Power Supply Monitor Capstone

Size
108 × 101.6 mm
Copper layers
6
Thickness
1.6 mm
Parts
142
Nets
124
Pads
555
Tracks, vias
761, 249
Pours
29
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
7 Aug 2026
Updated
3 Nov 2026

Overview

Isolated Multi Rail Power Supply Monitor Sensor Board is an open-source printed circuit board by capotosto, from the capotosto/PS_Monitor repository on GitHub. It is a 6-layer board of 108 × 101.6 mm with 142 parts on 124 nets, routed with 761 tracks and 249 vias.

It is built around the ACPL-064L-500E, LTC2945IUD#TRPBF and TCA9803DGKR, with the NTA7002NT1G, GMC21X7S226M10NT and LVK20R050FER among its other parts. Its parts include 46 resistors, 45 capacitors, 22 ICs, 8 connectors and 6 transistors. It belongs with the power and sensors and measurement boards of this library.

Main components

8

README

README.md

Multi-Rail Isolated Power Supply Monitoring System

Repository: PS_Monitor
Author: Mike Capotosto

Project Overview

The Multi-Rail Isolated Power Supply Monitoring System measures the voltage and current of up to six floating power-supply rails while preserving galvanic isolation between measurement channels. Each rail is monitored by an LTC2945 power monitor connected through an isolated I²C interface to an Arduino GIGA R1 WiFi. The Arduino firmware performs data acquisition, engineering-unit conversion, alarm evaluation, persistent configuration storage, local display control, HTTP service, and Ethernet communication with an EPICS Input/Output Controller. Measurement and status information is presented locally on the GIGA Display Shield, through a browser-based dashboard, and remotely through a Phoebus Control System Studio operator interface.

The monitored rails are:

  • +5VA
  • +5VB
  • +5V
  • -5V
  • +15V
  • -15V

System Features

  • Six isolated voltage and current measurement channels
  • LTC2945 voltage, current, and power monitoring
  • Independent I²C isolation for each floating rail
  • Support for positive and negative supply rails
  • Configurable upper and lower voltage limits
  • Configurable upper and lower current limits
  • Persistent alarm and network settings stored in internal QSPI flash
  • Local touchscreen display using the Arduino GIGA Display Shield
  • Browser-based monitoring and configuration dashboard
  • Ethernet communication through the Arduino Ethernet Shield
  • PSC (Portable Streaming Controller) protocol interface for EPICS integration
  • EPICS Process Variables for measurements, limits, alarms, and status
  • Phoebus OPI for centralized operator monitoring
  • I²C communication-error detection
  • Text-based alarm states such as OVL, UVL (over/under voltage limit), OCL, and UCL (over/under current limit)

System Architecture

Data Flow

text
┌──────────────────────────────────────────────┐
│ Floating Power-Supply Rails                  │
│ +5VA, +5VB, +5V, -5V, +15V, and -15V        │
└──────────────────────┬───────────────────────┘
                       │
                       ▼
┌──────────────────────────────────────────────┐
│ LTC2945 Voltage and Current Monitors         │
│ One monitor per power-supply rail            │
└──────────────────────┬───────────────────────┘
                       │
                       ▼
┌──────────────────────────────────────────────┐
│ Isolated I²C Interfaces                      │
│ Maintains isolation between floating rails   │
└──────────────────────┬───────────────────────┘
                       │
                       ▼
┌──────────────────────────────────────────────┐
│ Arduino GIGA R1 WiFi Firmware                │
│                                              │
│ • Sensor acquisition                         │
│ • Engineering-unit conversion                │
│ • Negative-rail sign correction              │

Major Subsystems

SubsystemFunction
Sensor hardwareMeasures rail voltage, shunt voltage, current, and power
I²C isolationPreserves galvanic isolation between floating rails
Arduino firmwareAcquires data, evaluates alarms, stores settings, and manages communications
Local displayShows rail measurements, limits, alarms, and communication status
HTTP dashboardProvides browser-based monitoring and configuration
PSC interfaceTransfers measurement and status data to the EPICS IOC
EPICS IOCConverts device data into EPICS Process Variables
Phoebus OPIProvides the centralized operator interface

Repository Structure

text
PS_Monitor/
├── README.md
├── hardware/
│   ├── kicad/
│   ├── bom/
│   ├── gerbers/
│   ├── mechanical/
│   └── datasheets/
├── firmware/
│   ├── platformio.ini
│   ├── include/
│   ├── lib/
│   ├── src/
│   └── test/
├── epics-ioc/
│   ├── configure/
│   ├── db/
│   ├── dbd/
│   ├── iocBoot/
│   ├── psuMonitorApp/
│   └── opi/
└── documentation/

Directory Descriptions

  • /hardware
    KiCad schematic and PCB files, manufacturing outputs, bill of materials, mechanical drawings, and related.

  • /firmware
    PlatformIO project for the Arduino GIGA R1 WiFi. This directory contains the application source code, configuration headers, local libraries, and build configuration.

  • /epics-ioc
    EPICS IOC source tree containing database files, record definitions, startup scripts, PSCDriver configuration, device communication settings, and Phoebus Control System Studio displays.

  • /documentation
    Assorted Documentation


Hardware

Primary Components

  • Arduino GIGA R1 WiFi
  • Arduino GIGA Display Shield
  • Arduino Ethernet Shield
  • LTC2945 voltage, current, and power monitors
  • DC1697A LTC2945 demonstration board for prototype testing
  • Per-channel I²C digital isolators
  • Current-sense shunt resistors
  • Custom monitoring and interface PCB
  • Six isolated power-supply inputs

Measurement Method

Each LTC2945 measures:

  • Supply voltage
  • Differential voltage across a current-sense shunt
  • Calculated load current
  • Calculated electrical power

Because each monitored supply may float at a different potential, every sensor channel communicates through its own isolated I²C interface. Negative rails are monitored within their isolated domains, and the firmware applies the appropriate sign to the reported engineering values.


Firmware

The firmware is built with PlatformIO using the Arduino Mbed OS framework.

Main Firmware Modules

ModuleResponsibility
AppStateGlobal channel data, settings, alarms, and system state
SensorManagerSensor initialization, acquisition, and channel updates
LTC2945Low-level LTC2945 register access and unit conversion
DisplayUIGIGA Display Shield rendering and status updates
EthernetServicesEthernet initialization and network service handling
HttpDashboardBrowser-based monitoring and configuration
PscProtocolPSC protocol communication with the EPICS IOC
PersistentStorageQSPI storage of alarm limits and network settings
mainSystem initialization and application scheduling

Firmware Configuration

Hardware-specific settings are stored in configuration headers, including:

  • I²C addresses
  • Shunt-resistance values
  • Channel names
  • Rail polarity
  • Voltage and current scaling
  • Default alarm limits
  • Static network configuration
  • MAC address
  • PSC port configuration
  • Sensor polling intervals

Persistent Settings

The firmware stores configuration data in the Arduino GIGA internal QSPI flash using LittleFS.

Saved settings include:

  • Per-channel voltage-low limit
  • Per-channel voltage-high limit
  • Per-channel current-low limit
  • Per-channel current-high limit
  • Static IP address
  • Subnet mask
  • Gateway address
  • DNS server address

Network Interfaces

HTTP Dashboard

The firmware hosts a local web interface for:

  • Viewing voltage and current measurements
  • Viewing alarm and communication status
  • Editing alarm limits
  • Editing network parameters
  • Saving settings to QSPI

PSC Protocol

The Arduino exposes a PSC protocol service over Ethernet. The EPICS IOC connects to the device using PSCDriver and maps transmitted parameters into EPICS records.


EPICS IOC

Requirements

  • EPICS Base
  • ASYN
  • PSCDriver
  • A supported Linux environment
  • Phoebus for the operator interface

Build the IOC

From the repository root:

bash
cd epics-ioc
make

Start the IOC

bash
cd iocBoot/iocpsuMonitor
./st.cmd

An equivalent direct launch command may also be used:

bash
../../bin/linux-x86_64/psuMonitor st.cmd

Example IOC Configuration

text
P=TEST:
R=GIGA
DEVICE=GIGA_PSC
HOST=192.168.1.177
PORT=8765

The final values are defined in the IOC startup script.


EPICS Process Variables

The IOC is intended to provide Process Variables for:

  • Channel voltage
  • Channel current
  • Voltage-low limit
  • Voltage-high limit
  • Current-low limit
  • Current-high limit
  • Voltage alarm status
  • Current alarm status
  • Sensor communication status
  • I²C error status
  • Arduino connection status
  • Network information
  • Firmware status

Alarm States

StatusMeaning
OKMeasurement is within configured limits
OVLOver-voltage limit
UVLUnder-voltage limit
OCLOver-current limit
UCLUnder-current limit
I2C ErrorSensor communication failure
DisconnectedIOC communication failure

Operator Interface

The Phoebus OPI provides a centralized display for all monitored rails.

Planned or implemented interface elements include:

  • Voltage and current readbacks
  • Alarm-limit displays
  • Text-based alarm indicators
  • Connection-status indicator
  • I²C error indicator
  • Per-channel status cards
  • Network and firmware information
  • Overall system status

Project Milestones

  • Define system requirements and monitored power rails
  • Select the Arduino GIGA R1 WiFi as the primary controller
  • Establish the PlatformIO firmware project
  • Develop the initial six-channel display layout
  • Add configurable voltage and current alarm limits
  • Establish the Ethernet and PSC communication architecture
  • Complete single-channel LTC2945 prototype validation
  • Verify current scaling for each shunt-resistor value
  • Complete six-channel isolated I²C hardware
  • Finalize persistent storage and recovery testing
  • Complete browser-based configuration testing
  • Finalize EPICS database records
  • Complete Phoebus OPI
  • Fabricate and assemble the custom PCB
  • Calibrate all measurement channels
  • Perform end-to-end system validation
  • Complete final project documentation

Parts

142
QtyValueFootprintReferences
23100nCapacitor_SMD:C_0402_1005MetricC2, C11, C12, C14, C15, C17, C22, C24, C25, C27, C29, C30, C32, C34, C35, C37 +7
182kResistor_SMD:R_0402_1005MetricR12, R13, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45, R46 +2
121uCapacitor_SMD:C_0603_1608MetricC1, C3, C21, C23, C26, C28, C31, C33, C36, C38, C41, C43
12ACPL-064LPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2, U3, U9, U10, U12, U13, U15, U16, U18, U19, U21, U22
100RResistor_SMD:R_1206_3216MetricR2, R3, R4, R5, R9, R10, R14, R15, R16, R17
84k7Resistor_SMD:R_0402_1005MetricR23, R24, R27, R28, R29, R30, R31, R32
6BS170FPackage_TO_SOT_SMD:SOT-416Q1, Q2, Q3, Q4, Q5, Q6
6LTC2945IUD-1Package_DFN_QFN:QFN-12-1EP_3x3mm_P0.5mm_EP1.65x1.65mm_ThermalViasU1, U8, U11, U14, U17, U20
6TestPoint_AltTestPoint:TestPoint_Keystone_5015_Micro_MiniTP4, TP5, TP6, TP7, TP8, TP9
522uCapacitor_SMD:C_0805_2012MetricC10, C13, C16, C19, C20
450mRResistor_SMD:R_Shunt_Ohmite_LVK20R8, R11, R19, R20
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3_DIN965_PadH1, H2, H3, H4
3TestPoint_AltTestPoint:TestPoint_Keystone_5000-5004_MiniatureTP1, TP2, TP3
210uCapacitor_SMD:C_0805_2012MetricC7, C8
239289108Connector_Molex:Molex_Mini-Fit_Jr_5566-10A2_2x05_P4.20mm_VerticalJ106, J107
239mRResistor_SMD:R_Shunt_Ohmite_LVK20R7, R18
2TCA9803Package_SO:VSSOP-8_3x3mm_P0.65mmU5, U6
1+/-15VConnector_Molex:Molex_Mini-Fit_Jr_5566-04A2_2x02_P4.20mm_VerticalJ104
1+/-5VConnector_Molex:Molex_Mini-Fit_Jr_5566-04A2_2x02_P4.20mm_VerticalJ105
1+6VAConnector_Molex:Molex_Mini-Fit_Jr_5566-04A2_2x02_P4.20mm_VerticalJ101
1+6VBConnector_Molex:Molex_Mini-Fit_Jr_5566-04A2_2x02_P4.20mm_VerticalJ102
10039289088Connector_Molex:Molex_Mini-Fit_Jr_5566-08A2_2x04_P4.20mm_VerticalJ103
10RResistor_SMD:R_0402_1005MetricR21
110nInductor_SMD:L_0603_1608MetricFB1
115k2Resistor_SMD:R_0402_1005MetricR25
122nCapacitor_SMD:C_0402_1005MetricC6
12u2Wuerth:74438356022L1
1470nCapacitor_SMD:C_0402_1005MetricC9
14k87Resistor_SMD:R_0402_1005MetricR26
1Conn_01x04Connector_Molex:Molex_Mini-Fit_Jr_5566-04A2_2x02_P4.20mm_VerticalJ108
1P82715DRPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU7
1TPS62912Package_DFN_QFN:Texas_RPU0010A_VQFN-HR-10_2x2mm_P0.5mmU4
1~Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR22
1~Capacitor_SMD:C_0603_1608MetricC18

More from capotosto/PS_Monitor

1

Similar boards

  • 4 layers233 × 230.5 mmBB3plus mainboard, the printed circuit board in 3D

    BB3plus mainboard

    eez-open/eez-bb3plus

    EEZ Bench Box 3 Plus (BB3+) Modular T&M chassis

    439 parts13
  • 4 layersUsbc car module, the printed circuit board in 3D

    Usbc car module

    mickdassive/usbc_car_module

    This project is a USB 3.1x1 hub designed with KiCad 8.0 and developed with PlatformIO. It features two USB-C ports (one downstream and one upstream) capable of delivering up to 100W power, along with four regular…

    408 parts3GPL-3.0
  • 6 layers237 × 39 mmHarleyTandem, the printed circuit board in 3D

    HarleyTandem

    osrf/ovc

    the Open Vision Computer

    142 parts207Apache-2.0
  • 6 layers55.2 × 62 mmRadio board, the printed circuit board in 3D

    Radio board

    tart-telescope/radio_module

    Designs for the TART-3 electronics hardware

    142 parts3GPL-3.0
  • 6 layers50 × 50 mmSensor board, the printed circuit board in 3D

    Sensor board

    dale-lim29/Hardware_IMU_Array_Sensor

    The PCB is designed with a 6-layer stackup:

    142 parts1
  • 6 layers56 × 85 mmSunSproutHub, the printed circuit board in 3D

    SunSproutHub

    JohnNeville/SunSprout

    An esp32-c5 powered board that adds dual source battery charging, fuel management, and differential i2c bus. This was largely developed to be a complement with my other soil sensor project.

    142 partsCERN-OHL-S-2.0

Questions

How big is the Isolated Multi Rail Power Supply Monitor Sensor Board PCB?

It measures 108 × 101.6 mm and has 6 copper layers, 1.6 mm thick.

What parts does the Isolated Multi Rail Power Supply Monitor Sensor Board use?

142 parts, built around the ACPL-064L-500E, LTC2945IUD#TRPBF, TCA9803DGKR and NTA7002NT1G. 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 Isolated Multi Rail Power Supply Monitor Sensor Board KiCad files?

From the capotosto/PS_Monitor repository on GitHub, at the commit this page was made from: the board is hardware/Isolated Multi-Rail Power Supply Monitor Sensor Board/Isolated Multi-Rail Power Supply Monitor Sensor Board.kicad_pcb and its schematic hardware/Isolated Multi-Rail Power Supply Monitor Arduino Shield Board/Isolated Multi-Rail Power Supply Monitor Arduino Shield Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Isolated Multi Rail Power Supply Monitor Sensor Board design in my own project?

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