
Front Panel
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…

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…
PlugInDC Load is an open-source printed circuit board by janni0609, from the janni0609/DC-Load repository on GitHub. It is a 4-layer board of 192.5 × 80 mm with 525 parts on 226 nets, routed with 1,902 tracks and 470 vias.
It is built around the TLV9152ID, ADS1115IDGS and AP63200WU, with the MCP9700-E/TT, 74LVC1G3157 and LM2776DBV among its other parts. Its parts include 178 resistors, 76 capacitors, 48 diodes, 24 ICs and 18 transistors. It belongs with the RP2040 boards of this library.
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.
| Component | Part | Interface |
|---|---|---|
| MCU | Raspberry Pi Pico 2 (RP2350) | — |
| Display | ILI9488 TFT 240×320 | SPI (GPIO 16/18/19/17/20) |
| DAC (current setpoint) | DAC80501 16-bit | I2C1 0x48 |
| ADC (V + I measurement) | ADS1115 16-bit | I2C1 0x49 |
| I/O expander (buttons/encoder) | TCAL9539 16-bit | I2C1 0x74 |
| Temperature sensors | 3× MCP9700 | ADC (GPIO 26/27/28) |
| Fans | 2× PWM | GPIO 2, 3 (25 kHz) |
| Beeper | — | GPIO 22 |
I2C1 runs on GPIO 14 (SDA) / GPIO 15 (SCL) at 1 MHz.
KiCad design files live in hardware/:
hardware/PlugInDC Load/ — main plug-in board (MCU, DAC/ADC, pass elements, power supply)hardware/Front Panel/ — front panel boardEach project includes the schematic, PCB layout, a schematic PDF, and a STEP model.
| Parameter | Range |
|---|---|
| Input voltage | 0 – 100 V |
| Set current | 0 – 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).
Portrait 240×320, divided into sections:
┌──────────────────────────┐
│ 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 │
└──────────────┴───────────┘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.
| Input | Function |
|---|---|
| Rotary encoder | Increment/decrement the selected digit of the active setpoint |
| P0.0 (encoder push) | Toggle between editing SET CURR and SET UVP |
| P0.3 | Move cursor left |
| P0.4 | Move cursor right |
| P0.5 | Switch to debug screen |
| P0.6 | Reset elapsed timer and clear Ah/Wh accumulators |
| P0.7 | Toggle internal / external voltage sense |
| P1.0 | Load ON / OFF (blocked while OTP is active) |
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 item | Function |
|---|---|
| I SENSE | Toggle internal / external current shunt (persisted to EEPROM) |
| VOLT CAL | Enter voltage calibration wizard |
| CURR CAL | Enter current calibration wizard |
| VIEW CAL | Display stored calibration tables |
| OTP TRIP | Set over-temperature protection threshold with encoder (persisted) |
| UVP Kp | Adjust UVP PI proportional gain with encoder (persisted) |
| UVP Ki | Adjust UVP PI integral gain with encoder (persisted) |
| Input | Function |
|---|---|
| Rotary encoder | Adjust the entered reference value |
| P0.3 / P0.4 | Move digit cursor left / right |
| P0.0 (encoder push) | Confirm step and advance |
| P0.5 | Cancel and return to debug screen |
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.
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:
Fan speed is temperature-controlled using the highest reading across all three MCP9700 sensors:
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.
| Address | Content |
|---|---|
| 0 | Current shunt select (0x01 = external) |
| 1 | Current cal valid marker (0xCA) |
| 2 | Voltage cal valid marker (0xCA) |
| 3–42 | Current cal: 5× raw + 5× user (10 floats) |
| 43–74 | Voltage cal: 4× raw + 4× user (8 floats) |
| 75 | OTP valid marker (0xCA) |
| 76–79 | OTP threshold (float) |
| 80 | UVP PI valid marker (0xCA) |
| 81–84 | UVP Kp (float) |
| 85–88 | UVP Ki (float) |
The project uses PlatformIO with the Arduino framework.
# Build
pio run
# Upload
pio run --target upload
# Serial monitor
pio device monitor --baud 115200Target board: rpipico2. Dependencies are fetched automatically (Bodmer/TFT_eSPI).
| Qty | Value | Footprint | References |
|---|---|---|---|
| 73 | 1k | Resistor_SMD:R_0603_1608Metric | R10, R11, R100, R101, R102, R108, R109, R111, R112, R113, R119, R120, R122, R123, R124, R130 +57 |
| 41 | 100n | Capacitor_SMD:C_0603_1608Metric | C1, C3, C15, C16, C22, C23, C25, C26, C28, C29, C31, C32, C34, C35, C37, C38 +25 |
| 34 | M3 | MountingHole:MountingHole_3.2mm_M3_DIN965_Pad | H1, H2, H10, H11, H12, H13, H14, H15, H16, H17, H18, H19, H20, H21, H22, H23 +18 |
| 28 | 1N4148WX | Diode_SMD:D_SOD-323 | D1, D2, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28 +12 |
| 28 | 62k | Resistor_SMD:R_0603_1608Metric | R28, R30, R39, R41, R105, R107, R116, R118, R127, R129, R138, R140, R149, R151, R160, R162 +12 |
| 17 | 10k | Resistor_SMD:R_0603_1608Metric | R6, R27, R38, R49, R60, R71, R82, R104, R115, R126, R137, R148, R159, R170, R172, R180 +1 |
| 16 | TP | TestPoint:TestPoint_Pad_D1.0mm | TP92, TP93, TP94, TP95, TP96, TP97, TP99, TP100, TP101, TP102, TP107, TP108, TP109, TP110, TP111, TP113 |
| 14 | 0,005 | Resistor_SMD:R_2512_6332Metric | R12, R33, R44, R55, R66, R77, R88, R99, R110, R121, R132, R143, R154, R165 |
| 14 | 10A | Fuse:Fuse_1206_3216Metric | F1, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16 |
| 14 | 10n | Capacitor_SMD:C_0603_1608Metric | C2, C24, C27, C30, C33, C36, C39, C42, C45, C48, C51, C54, C57, C60 |
| 14 | 150 | Resistor_SMD:R_1206_3216Metric | R8, R29, R40, R51, R62, R73, R84, R95, R106, R117, R128, R139, R150, R161 |
| 14 | 5.0SMDJ_1 | Diode_SMD:D_SMC | D10, D11, D12, D13, D14, D44, D45, D46, D47, D48, D49, D50, D51, D52 |
| 14 | 500 | Resistor_SMD:R_0603_1608Metric | R5, R26, R37, R48, R59, R70, R81, R92, R103, R114, R125, R136, R147, R158 |
| 14 | B | TestPoint:TestPoint_Pad_D1.0mm | TP4, TP10, TP16, TP22, TP28, TP34, TP40, TP46, TP52, TP58, TP64, TP70, TP76, TP82 |
| 14 | CrrH | TestPoint:TestPoint_Pad_D1.0mm | TP5, TP11, TP17, TP23, TP29, TP35, TP41, TP47, TP53, TP59, TP65, TP71, TP77, TP83 |
| 14 | CurrL | TestPoint:TestPoint_Pad_D1.0mm | TP6, TP12, TP18, TP24, TP30, TP36, TP42, TP48, TP54, TP60, TP66, TP72, TP78, TP84 |
| 14 | CurrO | TestPoint:TestPoint_Pad_D1.0mm | TP2, TP8, TP14, TP20, TP26, TP32, TP38, TP44, TP50, TP56, TP62, TP68, TP74, TP80 |
| 14 | Int- | TestPoint:TestPoint_Pad_D1.0mm | TP1, TP7, TP13, TP19, TP25, TP31, TP37, TP43, TP49, TP55, TP61, TP67, TP73, TP79 |
| 14 | IntO | TestPoint:TestPoint_Pad_D1.0mm | TP3, TP9, TP15, TP21, TP27, TP33, TP39, TP45, TP51, TP57, TP63, TP69, TP75, TP81 |
| 14 | MJH6284 | LibEigen:MR30 | Q1, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15 |
| 14 | TLV9152 | Package_TO_SOT_SMD:SOT-23-8 | U3, U8, U9, U10, U11, U12, U13, U14, U15, U16, U17, U18, U19, U20 |
| 11 | 10u | Capacitor_SMD:C_0805_2012Metric | C9, C10, C11, C13, C18, C19, C20, C21, C64, C77, C78 |
| 6 | R | Resistor_SMD:R_0603_1608Metric | R166, R167, R173, R174, R177, R178 |
| 4 | TP | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP103, TP104, TP105, TP106 |
| 3 | 10u | Capacitor_SMD:C_1206_3216Metric | C14, C62, C63 |
| 3 | DMG6968U | Package_TO_SOT_SMD:SOT-23-3 | Q16, Q17, Q18 |
| 3 | GND | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP85, TP89, TP90 |
| 3 | TEMP | Connector_Wire:SolderWirePad_1x01_SMD_1.5x3mm | J9, J10, J11 |
| 2 | 120 | Resistor_SMD:R_0603_1608Metric | R19, R175 |
| 2 | 1N4007 | Diode_SMD:D_SOD-123F | D41, D42 |
| 2 | 300k | Resistor_SMD:R_0805_2012Metric | R14, R15 |
| 2 | 7,5k | Resistor_SMD:R_0805_2012Metric | R16, R17 |
| 2 | ? | Capacitor_SMD:C_0603_1608Metric | C75, C79 |
| 2 | BAV99 | Package_TO_SOT_SMD:SOT-23-3 | D4, D5 |
| 2 | FAN | Connector:FanPinHeader_1x04_P2.54mm_Vertical | J6, J7 |
| 2 | LD1086D2TTR | Package_TO_SOT_SMD:TO-263-2 | U4, U5 |
| 2 | MCP9700 | Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical | J8, J14 |
| 1 | +12V | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP86 |
| 1 | +3,3V | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP116 |
| 1 | +5V | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP88 |
| 1 | +6,8V | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP87 |
| 1 | -5V | TestPoint:TestPoint_Keystone_5005-5009_Compact | TP115 |
| 1 | 100k | Resistor_SMD:R_0603_1608Metric | R168 |
| 1 | 100p | Capacitor_SMD:C_0603_1608Metric | C17 |
| 1 | 100u | Capacitor_SMD:CP_Elec_8x10.5 | C8 |
| 1 | 10k | Potentiometer_SMD:Potentiometer_Bourns_TC33X_Vertical | RV1 |
| 1 | 10u | Inductor_SMD:L_APV_ANR8040 | L1 |
| 1 | 150k | Resistor_SMD:R_0603_1608Metric | R21 |
| 1 | 1N4148WS | Diode_SMD:D_SOD-323 | D43 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C67 |
| 1 | 1u | Capacitor_SMD:C_0805_2012Metric | C12 |
| 1 | 200 | Resistor_SMD:R_0603_1608Metric | R176 |
| 1 | 20k | Resistor_SMD:R_0603_1608Metric | R22 |
| 1 | 3,5A | Fuse:Fuse_1206_3216Metric | F3 |
| 1 | 360 | Resistor_SMD:R_0603_1608Metric | R20 |
| 1 | 74LVC1G3157 | Package_TO_SOT_SMD:SOT-363_SC-70-6 | U22 |
| 1 | ADS1115IDGS | Package_SO:TSSOP-10_3x3mm_P0.5mm | U25 |
| 1 | AP63200WU | Package_TO_SOT_SMD:TSOT-23-6 | U7 |
| 1 | BSS138 | Package_TO_SOT_SMD:SOT-23-3 | Q2 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | C | Capacitor_SMD:C_1206_3216Metric | C7 |
| 1 | Conn_02x08_Odd_Even | Connector_IDC:IDC-Header_2x08_P2.54mm_Vertical | J13 |
| 1 | DAC80501 | Package_SO:VSSOP-10_3x3mm_P0.5mm | U2 |
| 1 | Ex_Curr_Sense | Connector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical | J1 |
| 1 | Heatsink_Pad | Heatsink:Heatsink_AAVID_573300D00010G_TO-263 | HS1 |
| 1 | INA290A2xDCK | Package_TO_SOT_SMD:SOT-353_SC-70-5 | U21 |
| 1 | Input+ | MountingHole:MountingHole_4.3mm_M4_DIN965_Pad | H3 |
| 1 | Input- | MountingHole:MountingHole_4.3mm_M4_DIN965_Pad | H4 |
| 1 | LM2776 | Package_TO_SOT_SMD:SOT-23-6 | U6 |
| 1 | LMV331 | Package_TO_SOT_SMD:SOT-23-5 | U26 |
| 1 | NetTie_2 | NetTie:NetTie-2_SMD_Pad2.0mm | NT1 |
| 1 | Power Input | Connector_Phoenix_MC:PhoenixContact_MC_1,5_2-G-3.81_1x02_P3.81mm_Horizontal | J5 |
| 1 | R | Resistor_SMD:R_1206_3216Metric | R18 |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_Common_Unspecified | A1 |
| 1 | SMBJ12A | Diode_SMD:D_SMB | D3 |
| 1 | TLV9302xD | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U27 |
| 1 | TestPoint | TestPoint:TestPoint_Pad_D1.0mm | TP91 |
| 1 | XT30 | Connector_AMASS:AMASS_XT30PW-M_1x02_P2.50mm_Horizontal | J12 |
It measures 192.5 × 80 mm and has 4 copper layers, 1.6 mm thick.
525 parts, built around the TLV9152ID, ADS1115IDGS, AP63200WU and MCP9700-E/TT. 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.
From the janni0609/DC-Load repository on GitHub, at the commit this page was made from: the board is hardware/PlugInDC Load/PlugInDC Load.kicad_pcb and its schematic hardware/Front Panel/Front Panel.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask janni0609 before reusing the design.

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…

KaeptnBalu/Arduino_Spot_Welder_V3
This is the Kicad project for V3.1 The Arduino Board was not changed, only the Mosfet Board got a updgrade.

foriequal0/t3pa-loadcell-mod
Thrustmaster T3PA pedal load cell mod without a dead zone

ajisrawi/sentinel-uhf-radar
Reference design of a two-face UHF early-warning phased-array radar: system sizing, MoM antenna simulation, seven KiCad PCB projects, Blender site model

janni0609/2-Channel-PreReg-Powersupply
A two-channel laboratory bench power supply, 0–36 V / 0–2 A per channel, fully isolated between channels. Each channel pairs a tracking switch-mode pre-regulator with a linear post-regulator, so it has the low output…

ulikoehler/OpenPowerDistributor
Open-hardware PCB to distribute DC 12V power to 12V / 5V / 9V & 24V consumers


mar5hvet/hs2-eps-pds
Repository for EPS KiCad design files, including schematics, PCB layouts, and documentation.

ntindle/trackball
Ultimate Mouse: fully custom trackball with a free-spinning active ball (capacitive touch ring, nRF52810, inductive charging) and a dual-PMW3360 base (nRF52840, USB-C, HID + custom driver). No mechanical wheel.