Skip to the content
PCBKitNew board
2 layers63.4 × 91.5 mmFront Panel, the printed circuit board in 3D

A programmable DC electronic load built on the Raspberry Pi Pico 2 (RP2350). It sinks a user-defined current from a DC source under test and measures voltage, current, power, capacity, and energy in real time on a…

Size
63.4 × 91.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
40
Nets
42
Pads
142
Tracks, vias
255, 11
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
11 May 2026
Updated
10 Jun 2026

Overview

Front Panel is an open-source printed circuit board by janni0609, from the janni0609/DC-Load repository on GitHub. It is a 2-layer board of 63.4 × 91.5 mm with 40 parts on 42 nets, routed with 255 tracks and 11 vias.

It is built around the BSS138 and EE2-5NU. Its parts include 9 resistors, 8 switches, 6 capacitors, 4 connectors and 1 IC.

Main components

2

README

README.md

DC Electronic Load

A programmable DC electronic load built on the Raspberry Pi Pico 2 (RP2350). It sinks a user-defined current from a DC source under test and measures voltage, current, power, capacity, and energy in real time on a colour TFT display.

Hardware

ComponentPartInterface
MCURaspberry Pi Pico 2 (RP2350)—
DisplayILI9488 TFT 240×320SPI (GPIO 16/18/19/17/20)
DAC (current setpoint)DAC80501 16-bitI2C1 0x48
ADC (V + I measurement)ADS1115 16-bitI2C1 0x49
I/O expander (buttons/encoder)TCAL9539 16-bitI2C1 0x74
Temperature sensors3× MCP9700ADC (GPIO 26/27/28)
Fans2× PWMGPIO 2, 3 (25 kHz)
Beeper—GPIO 22

I2C1 runs on GPIO 14 (SDA) / GPIO 15 (SCL) at 1 MHz.

Board design

KiCad design files live in hardware/:

Each project includes the schematic, PCB layout, a schematic PDF, and a STEP model.

Specifications

ParameterRange
Input voltage0 – 100 V
Set current0 – 100 A
Under-voltage / CV setpoint (UVP)0 – 99.99 V
Max power (beeper threshold)1000 W

The DAC output (0–2.5 V) drives the current-control circuit: 2.5 V = 100 A full scale. The ADS1115 uses auto-ranging PGA for both channels, scaling 2.5 V → 100 V (voltage) and 2.5 V → 100 A (current).

Display Layout

Portrait 240×320, divided into sections:

text
┌──────────────────────────┐
│    DC ELECTRONIC LOAD    │  ← green = load ON, yellow = load OFF
├──────────────────────────┤
│ VOLTAGE          xx.xx V │
├──────────────────────────┤
│ CURRENT         x.xxx A  │
├──────────────────────────┤
│ POWER           xxx.xx W │
├──────────────┬───────────┤
│ CAPACITY x.xxx Ah │ x.xx Wh ENERGY │
├──────────────┬───────────┤
│ SET CURR x.x A │ SET UVP xx.xx V │  ← UVP turns red in CV mode
├──────────────┬───────────┤
│ TEMP  xx.x°C │ HH:MM:SS  │
└──────────────┴───────────┘

Controls

All buttons and the rotary encoder are read via the TCAL9539 I/O expander. Button behaviour is context-sensitive: the main screen, debug screen, and calibration screens each respond differently.

Main screen

InputFunction
Rotary encoderIncrement/decrement the selected digit of the active setpoint
P0.0 (encoder push)Toggle between editing SET CURR and SET UVP
P0.3Move cursor left
P0.4Move cursor right
P0.5Switch to debug screen
P0.6Reset elapsed timer and clear Ah/Wh accumulators
P0.7Toggle internal / external voltage sense
P1.0Load ON / OFF (blocked while OTP is active)

Debug screen

The debug screen is a navigable menu. P0.3/P0.4 move the selection, the encoder adjusts the highlighted item, and P0.0 (encoder push) activates it.

Menu itemFunction
I SENSEToggle internal / external current shunt (persisted to EEPROM)
VOLT CALEnter voltage calibration wizard
CURR CALEnter current calibration wizard
VIEW CALDisplay stored calibration tables
OTP TRIPSet over-temperature protection threshold with encoder (persisted)
UVP KpAdjust UVP PI proportional gain with encoder (persisted)
UVP KiAdjust UVP PI integral gain with encoder (persisted)

Calibration screen

InputFunction
Rotary encoderAdjust the entered reference value
P0.3 / P0.4Move digit cursor left / right
P0.0 (encoder push)Confirm step and advance
P0.5Cancel and return to debug screen

UVP / Constant-Voltage Mode

When SET UVP is non-zero and the load is on, a software PI controller monitors the measured voltage. If it drops below the UVP setpoint, the controller reduces the sink current to regulate voltage at that level (constant-voltage / CV mode). The SET UVP field turns red while CV mode is active.

CV mode exits with 0.5 V hysteresis to avoid chattering. The PI gains (Kp, Ki) are tunable from the debug screen and stored in EEPROM.

Over-Temperature Protection (OTP)

The OTP threshold (default 70 °C, adjustable 30–120 °C) is compared against the highest reading across all three MCP9700 sensors. When the threshold is exceeded:

  • The load is turned off immediately.
  • Five 500 ms beeps are sounded.
  • The load ON button is blocked until the temperature drops 5 °C below the threshold.

Fan Control

Fan speed is temperature-controlled using the highest reading across all three MCP9700 sensors:

  • Off below 30 °C
  • Linear ramp from 0–100 % between 30 °C and 50 °C
  • Full speed above 50 °C

Calibration

Both voltage and current channels support piecewise-linear calibration (4 points for voltage, 5 for current). The calibration wizard drives the load to each reference point, reads the raw ADC value, and prompts for the reference meter reading. Calibration data is stored in EEPROM and applied on every measurement via piecewiseLerp.

EEPROM layout

AddressContent
0Current shunt select (0x01 = external)
1Current cal valid marker (0xCA)
2Voltage cal valid marker (0xCA)
3–42Current cal: 5× raw + 5× user (10 floats)
43–74Voltage cal: 4× raw + 4× user (8 floats)
75OTP valid marker (0xCA)
76–79OTP threshold (float)
80UVP PI valid marker (0xCA)
81–84UVP Kp (float)
85–88UVP Ki (float)

Building

The project uses PlatformIO with the Arduino framework.

bash
# Build
pio run

# Upload
pio run --target upload

# Serial monitor
pio device monitor --baud 115200

Target board: rpipico2. Dependencies are fetched automatically (Bodmer/TFT_eSPI).

Parts

40
QtyValueFootprintReferences
6SW_Push 18mmButton_Switch_THT:SW_PUSH_6mm_H13mmSW1, SW2, SW3, SW4, SW5, SW8
6TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP2, TP3, TP4, TP5, TP6
510kResistor_SMD:R_0603_1608MetricR8, R10, R12, R13, R14
3RResistor_SMD:R_0603_1608MetricR7, R9, R11
210uCapacitor_SMD:C_1206_3216MetricC1, C2
2CCapacitor_SMD:C_0603_1608MetricC3, C5
2M3MountingHole:MountingHole_3.2mm_M3_DIN965_PadH1, H2
2TestPointTestPoint:TestPoint_Pad_D1.5mmTP7, TP8
1100nCapacitor_SMD:C_0603_1608MetricC6
110nCapacitor_SMD:C_0603_1608MetricC4
11N4007Diode_SMD:D_SOD-123FD1
11kResistor_SMD:R_0603_1608MetricR16
1BSS138Package_TO_SOT_SMD:SOT-23Q1
1Conn_02x08_Odd_EvenConnector_IDC:IDC-Header_2x08_P2.54mm_VerticalJ13
1DisplayConnector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_VerticalJ1
1EE2-5NURelay_SMD:Relay_DPDT_Kemet_EE2_NUK1
1Ex_SenseConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ3
1RotaryEncoder_Switch_MPRotary_Encoder:RotaryEncoder_Bourns_Vertical_PEC12R-3x17F-SxxxxSW7
1SenseConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ2
1TCAL9539RPWRPackage_SO:TSSOP-24_4.4x7.8mm_P0.65mmU1

Questions

How big is the Front Panel PCB?

It measures 63.4 × 91.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Front Panel use?

40 parts, built around the BSS138 and EE2-5NU. 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 Front Panel KiCad files?

From the janni0609/DC-Load repository on GitHub, at the commit this page was made from: the board is hardware/Front Panel/Front Panel.kicad_pcb and its schematic hardware/Front Panel/Front Panel.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Front Panel design in my own project?

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

More from janni0609/DC-Load

1
  • 4 layers192.5 × 80 mmPlugInDC Load, the printed circuit board in 3D

    PlugInDC Load

    janni0609/DC-Load

    A programmable DC electronic load built on the Raspberry Pi Pico 2 (RP2350). It sinks a user-defined current from a DC source under test and measures voltage, current, power, capacity, and energy in real time on a…

    525 parts

Similar boards

  • 4 layers150 × 110 mmSystem Management Board, the printed circuit board in 3D

    System Management Board

    precision-sustainable-ag/PlantMap3D-Hardware

    The system management board handles all power distribution in the multi-camera system and a few other auxiliary functions. The PCB is designed using KiCad.

    130 parts2
  • 2 layers70 × 59 mmDinoSpand v2.0, the printed circuit board in 3D

    DinoSpand v2.0

    gabriele-moretto/dinospand

    Agricultural PCB project design and firmware developing.

    89 parts1
  • 4 layers100 × 50 mmDifferential Probe, the printed circuit board in 3D

    Differential Probe

    imaginaryimpedance/Differential-Probe

    Device is based on AD8130 differential amplifier and THS3491 amplifier on output stage.

    197 parts1
  • 2 layers93.6 × 87.6 mmPanaHacks, the printed circuit board in 3D

    PanaHacks

    TMaxElectronics/PanaHacks_PCB

    A PCB for communication with Panasonic PACi air conditioners

    126 parts
  • 2 layers100 × 100 mmDesg of senio, the printed circuit board in 3D

    Desg of senio

    c3n3/desg-of-senio

    This is the repo for all the things of senior design

    67 parts1
  • 2 layers79.4 × 50 mmRelayBoard, the printed circuit board in 3D

    RelayBoard

    AnthonyLRoy/kicad_dac_Projects

    18 parts
  • 4 layers36 × 50.2 mmRacer, the printed circuit board in 3D

    Racer

    StuckAtPrototype/Racer

    These are structured into their own files. I could have used submodules, but decided against it.

    83 parts3.8kApache-2.0