Skip to the content
2 layers170 × 125 mmEload 4ch, the printed circuit board in 3D

Electronic load 60V

Size
170 × 125 mm
Copper layers
2
Thickness
1.6 mm
Parts
143
Nets
84
Pads
449
Tracks, vias
1,248, 183
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
26 Oct 2026
Updated
26 Oct 2026

Overview

Eload 4ch is an open-source printed circuit board by metallarox, from the metallarox/eload-60v repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 2-layer board of 170 × 125 mm with 143 parts on 84 nets, routed with 1,248 tracks and 183 vias.

It is built around the OPA2196ID, AP63205WU and DAC8565IAPW, with the L78L05ACD13TR-MS, LM393DRG and PCF8574T/3 among its other parts. Its parts include 55 resistors, 43 capacitors, 12 ICs, 9 connectors and 7 transistors. It belongs with the power boards and the ESP8266 boards of this library.

Main components

12

README

README.md

eload-60v — 4-channel electronic load, 60 V · 20 A · 300 W

An open-hardware DC electronic load with four independent constant-current channels, 20-bit measurement on every channel, a hardware fail-safe that does not depend on firmware, and WiFi control through a plug-in ESP8266 module.

PCB render

Status: rev 0.3 — design complete, not yet built or bench-tested. ERC and DRC (with schematic parity) are clean, and the control loop and thermal budget have been analysed numerically. Treat it as a reviewed design, not a proven product. Bench reports, issues and pull requests are very welcome.

Specifications

ParameterValue
Input voltage0 – 60 V (hardware OVP trips at 64.7 V)
Current4 channels × 0 – 5 A = 20 A
Power4 × 75 W = 300 W continuous (power-limited above 15 V)
ModeConstant current per channel; CP / CR in firmware
SetpointDAC8565, 16 bit → 76 µA per LSB per channel
MeasurementINA228 per channel: 20-bit, Kelvin shunt, remote voltage sense
ControlWiFi, Wemos LOLIN D1 mini Pro (ESP8266) on sockets; front panel with I²C OLED, encoder and OUTPUT button
ProtectionOVP, OTP, per-channel over-current/over-power ALERT, reverse-polarity crowbar, 25 A fuse
LoopPhase margin ≈ 80°, closed-loop bandwidth 6 – 15 kHz (model)
PCB170 × 125 mm, 2 layers, 2 oz copper, KiCad 10

How it works

Block diagram

  • Power path. DUT+ → 25 A ATO fuse → VLOAD bus. A D²PAK Schottky (VS-30CTQ100S) acts as a reverse-polarity crowbar that blows the fuse, and an SMCJ64CA TVS clamps transients.
  • Channels. Each channel is an OPA2196 integrator driving an IXYS IXTH75N10L2 Linear L2 MOSFET (extended FBSOA, designed for linear operation) with a 20 mΩ 4-terminal shunt (Vishay WSK2512). The setpoint is the DAC output divided by 25, referenced to the shunt's cold Kelvin pad: I = V_DAC × 2 A/V.
  • Measurement. One INA228 per channel reads the shunt (Kelvin) and the remote-sense voltage. Its ALERT pin is wired to the common ARM line, so a programmed over-current or over-power limit shuts the load down in hardware.
  • Fail-safe. ARM is active-high with a pull-down. It can be pulled low by the MCU, by the LM393 OVP/OTP comparators or by any INA228 ALERT. ARM low drives CLAMP high, which shorts all four setpoints to ground. No MCU, a reset or a boot glitch all leave the load off.
  • Thermal. The four TO-247 parts are mounted under the PCB on an 80 × 70 × 6 mm copper spreader. The spreader sits at VLOAD (drain) potential, so it is isolated from an SP3/TR4-class CPU cooler by a thermal pad. Two NTC thermistors sit on the spreader.
  • Front panel (rev 0.3). A 10-pin IDC connector carries the I²C bus to a 128 × 64 OLED (0x3C) and the encoder, its push switch, the OUTPUT button and its LED to a PCF8574 expander (0x20) on the main board. The expander's INT goes to GPIO0. The encoder works as a vernier: push toggles coarse/fine, long-press selects the channel. OUTPUT ON is the only way to arm the load from the panel.
  • Supplies. An isolated 12 V adaptor feeds the op-amps and the fan. A 78L05 supplies the analog 5 V (DAC, comparators). A separate AP63205 buck feeds only the WiFi module, and its 3.3 V regulator powers the logic.

Front panel

The full walkthrough, including SOA, thermal budget and loop-stability analysis, is in docs/Electronic_Load_Circuit_Walkthrough.pdf (20 slides).

Analysis highlights

SOALoop gain
SOABode
  • SOA. The worst steady point is 60 V × 1.25 A = 75 W per MOSFET. The guaranteed FBSOA (240 W at 80 V, TC 75 °C), derated to TC ≈ 96 °C, gives ≈ 173 W, a 2.3× margin.
  • Thermal. TJ ≈ 119 °C at 35 °C ambient with a 0.12 K/W cooler. At the OTP trip point (spreader ~100 °C) TJ ≈ 139 °C. To run 300 W continuously the cooler plus pad must be ≤ 0.22 K/W.
  • Loop. Rev 0.1 used 10 nF compensation: stable, but only 0.6 – 1.5 kHz bandwidth and a turn-on delay of about 2 ms. Rev 0.2 uses C6 = 1 nF and C5 = 10 nF: PM ≈ 80°, 6 – 15 kHz, about 28 µs for small steps. A 10 mA keep-alive in firmware cuts the turn-on from the clamp to about 39 µs.

The model and scripts are in analysis/. Op-amp second pole and output resistance, the cooler's thermal resistance and the pad are assumptions, listed in the slides.

Repository layout

text
hardware/
  kicad/          KiCad 10 project (eload_4ch.kicad_pro), custom symbols, DRC rules
  fabrication/    Gerbers + drill (zip) and pick-and-place positions, rev 0.3
  bom/            BOM from KiCad (CSV) and priced BOM with sources (XLSX)
docs/
  Electronic_Load_Circuit_Walkthrough.pdf   slide deck (English)
  assembly/       interactive HTML BOM, top/bottom assembly drawings
  eload_4ch_schematic.pdf, eload_4ch_pcb.pdf
  images/, reports/ (ERC / DRC)
firmware/         ESP8266 firmware (Arduino core), web page, unit tests, mock server, prebuilt bin
analysis/         loop model (sympy/scipy), large-signal sim, SOA/thermal plots
tools/generator/  Python scripts that generated the schematic and placed/routed the PCB

Schematic, PCB and the KiCad BOM are in English. The priced BOM workbook (eload_4ch_bom_priced.xlsx) and the code comments in tools/ are still in Italian.

Building one

  1. PCB. Use hardware/fabrication/eload_4ch_gerbers_rev0.3.zip: 2 layers, 1.6 mm, 2 oz copper. Many fabs require ≥ 0.2 mm spacing with 2 oz copper, while the INA228 MSOP-10 pads are 0.15 mm apart (the project has a local DRC exception for them). Confirm with your fab, or order 1 oz outer layers.
  2. Parts. See hardware/bom/eload_4ch_bom_priced.xlsx. The electronics cost is about €126 per board at single quantities (October 2026). The four IXTH75N10L2 are about half of that and can have long factory lead times.
  3. Mechanics and front panel. Copper spreader, insulating thermal pad (≥ 100 V), CPU cooler with a 4-wire PWM fan, M3 nylon standoffs, M5 bolts for the DUT studs. Front panel: 2.42″ SSD1309 or 1.3″ SH1106 I²C OLED, EC11 encoder with push, OUTPUT button with LED, 10-wire ribbon (≤ 20 cm). J6 pinout: 1 3V3 · 2 GND · 3 SDA · 4 GND · 5 SCL · 6 ENC_A · 7 ENC_B · 8 ENC_SW · 9 OUTPUT · 10 LED (cathode, 470 Ω on board).
  4. Assembly. Open docs/assembly/eload_4ch_ibom.html in a browser: an interactive BOM that highlights where each part goes, with checkboxes to track sourced and placed parts. docs/assembly/assembly_top.pdf and assembly_bottom.pdf (the four MOSFETs) show every reference inside its part outline. The silkscreen has no overlaps: each reference designator is next to its component.
  5. Firmware. See firmware/README.md. A prebuilt image is in firmware/bin/. On first start the load opens a WiFi access point for setup; afterwards the page is at http://eload.local.
PinGPIOFunction
D1 / D25 / 4I²C SCL / SDA → INA228 0x40 – 0x43, PCF8574 0x20, OLED 0x3C
D5 / D7 / D814 / 13 / 15SPI SCK / MOSI / SYNC → DAC8565
D612ARM_DRV (quiet at boot) — re-assigned as output after SPI.begin()
D016ARM_FB read-back (100 k)
D30PCF8574 INT (front panel)
D42Fan PWM
RX3Fan tach
A0—NTC1

Firmware

v0.2.0 for the D1 mini Pro. It compiles and its control math is unit-tested, but it has not yet run on hardware.

  • Control: CC / CP / CR with the setpoint shared by the channels, hardware and firmware protections with the trip cause reported, battery cutoff, auto-trim.
  • Pulsed load: the sink switches between the setpoint and 10 mA at 0.1 Hz – 1 kHz with an adjustable duty, set from the panel menu or the web page.
  • Front panel: OLED with the logo at boot, encoder used as a vernier and to drive the menu, OUTPUT button.
  • Logging: CSV on the 14 MB flash.
  • Web: live chart, controls, OTA update.

Web interface

⚠️ Safety

  • The whole controller, including the Wemos USB port, is referenced to DUT−. USB is not isolated: only program the module with the DUT disconnected, then update over the air. The 12 V adaptor must be isolated.
  • The copper spreader and the MOSFET tabs are live at the DUT voltage.
  • 300 W of heat is real. Do not run full power without the cooler and fan, and verify the OTP before trusting it.

To verify on the bench

  • Loop step response (1.0 ↔ 1.2 A) into a stiff supply, then with 1 m of DUT cable.
  • D1 crowbar surviving the fuse I²t on reversed connection.
  • Thermal resistance of the actual cooler and pad; OTP trip point.
  • WiFi range with the antenna overhanging the board edge inside the enclosure.
  • I²C signal integrity with the OLED on a 20 cm ribbon (2.2 kΩ pull-ups).

Changelog

  • firmware 0.2.0 — pulsed load (frequency 0.1 Hz – 1 kHz, duty 1 – 99 %, phases ≥ 100 µs) in the panel menu, the web page, the API and the CSV.

  • firmware 0.1.0 — first firmware: control, protections, OLED + encoder panel, CSV logging, web interface, OTA.

  • rev 0.3 — front panel: PCF8574 expander, 10-pin IDC connector, debounce, I²C pull-ups 2.2 kΩ. Schematic and PCB translated to English (sheets: input, channels, control, power). Silkscreen cleaned up: no overlaps, references next to their parts; interactive BOM and assembly drawings.

  • rev 0.2 — loop compensation C6 = 1 nF, setpoint filter C5 = 10 nF (10× bandwidth, PM ≈ 80°); WiFi control with D1 mini Pro replaces STM32 + isolated USB.

Credits

Inspired by shufps/eload2. Designed by IV3HGA.

License

  • Hardware (everything under hardware/ and docs/): CERN-OHL-S-2.0 — see LICENSE.
  • Software (firmware/, analysis/, tools/): MIT — see LICENSE-MIT.

Parts

143
QtyValueFootprintReferences
15100nCapacitor_SMD:C_1206_3216MetricC3, C4, C7, C10, C13, C16, C20, C22, C28, C29, C30, C32, C33, C34, C36
1510kResistor_SMD:R_1206_3216MetricR2, R5, R8, R16, R22, R28, R34, R39, R40, R41, R42, R44, R46, R48, R51
71kResistor_SMD:R_1206_3216MetricR4, R14, R20, R26, R32, R36, R45
6100RResistor_SMD:R_1206_3216MetricR1, R15, R21, R27, R33, R49
610u 25VCapacitor_SMD:C_1206_3216MetricC19, C21, C27, C35, C38, C39
4100kResistor_SMD:R_1206_3216MetricR10, R47, R50, R55
4100n 50VCapacitor_SMD:C_1206_3216MetricC17, C18, C40, C41
410nCapacitor_SMD:C_1206_3216MetricC23, C24, C25, C26
410n C0GCapacitor_SMD:C_1206_3216MetricC5, C8, C11, C14
41k 0.1%Resistor_SMD:R_1206_3216MetricR13, R19, R25, R31
41n C0GCapacitor_SMD:C_1206_3216MetricC6, C9, C12, C15
420m 1%Resistor_SMD:R_Shunt_Vishay_WSK2512_6332Metric_T1.19mmR17, R23, R29, R35
424k 0.1%Resistor_SMD:R_1206_3216MetricR12, R18, R24, R30
4INA228Package_SO:MSOP-10_3x3mm_P0.5mmU4, U5, U7, U8
4IXTH75N10L2Package_TO_SOT_THT:TO-247-3_Horizontal_TabUpQ1, Q2, Q3, Q4
4M3MountingHole_3.2mm_M3H1, H2, H3, H4
4M3 nylon (spreader)MountingHole_3.2mm_M3H5, H6, H7, H8
3FDS9926APackage_SO:SOIC-8_3.9x4.9mm_P1.27mmQ5, Q6, Q7
210k 0.1%Resistor_SMD:R_1206_3216MetricR52, R53
21MResistor_SMD:R_1206_3216MetricR6, R9
21uCapacitor_SMD:C_1206_3216MetricC31, C37
222u 10VCapacitor_SMD:C_1206_3216MetricC42, C43
22k2Resistor_SMD:R_1206_3216MetricR37, R38
2OPA2196Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU3, U6
11.5AFuse:Fuse_1206_3216MetricF2
1100n 100VCapacitor_SMD:C_1206_3216MetricC1
110RResistor_SMD:R_1206_3216MetricR3
110n 100VCapacitor_SMD:C_1206_3216MetricC2
112V DCConnector_BarrelJack:BarrelJack_HorizontalJ9
11k5Resistor_SMD:R_1206_3216MetricR54
1249kResistor_SMD:R_1206_3216MetricR7
125A ATOFuse:Fuseholder_Blade_ATO_Littelfuse_Pudenz_2_PinF1
1470RResistor_SMD:R_1206_3216MetricR43
16u8Inductor_SMD:L_Bourns-SRN4018L1
19k31Resistor_SMD:R_1206_3216MetricR11
1AP63205WUPackage_TO_SOT_SMD:TSOT-23-6U12
1D1mini LConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ4
1D1mini RConnector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ5
1DAC8565Package_SO:TSSOP-16_4.4x5mm_P0.65mmU10
1DUT+MountingHole:MountingHole_5.3mm_M5_Pad_ViaJ1
1DUT-MountingHole:MountingHole_5.3mm_M5_Pad_ViaJ2
1FANConnector_Molex:Molex_KK-254_AE-6410-04A_1x04_P2.54mm_VerticalJ7
1FRONT PANELConnector_IDC:IDC-Header_2x05_P2.54mm_VerticalJ6
1L78L05Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU11
1LM393Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1Logo_IV3HGAeload:Logo_IV3HGA_25mmLOGO1
1NTCConnector_Molex:Molex_KK-254_AE-6410-04A_1x04_P2.54mm_VerticalJ8
1PCF8574TPackage_SO:SOIC-16W_7.5x10.3mm_P1.27mmU9
1SENSETerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ3
1SMAJ64CADiode_SMD:D_SMAD3
1SMCJ64CADiode_SMD:D_SMCD2
1SS34Diode_SMD:D_SMAD4
1TL431IDPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1VS-30CTQ100SPackage_TO_SOT_SMD:TO-263-2D1
1greenLED_SMD:LED_1206_3216MetricD5

Similar boards

  • 4 layers108 × 81 mmFoc dev board, the printed circuit board in 3D

    Foc dev board

    dganin-hw/bldc-foc

    Контроллер бесколлекторного мотора с FOC на STM32G431: своя силовая плата, плата энкодера AS5047P, печатный стенд и прошивка на C

    149 parts
  • 2 layers100 × 80 mmWp10 main input v26 routed, the printed circuit board in 3D

    Wp10 main input v26 routed

    vehiclewaxberry/Space-Embodied-Robot-Complete

    航天服务星具身智能机械臂机器人 | Space Service Robot with Embodied Intelligence — mechanical, electrical & harness, power & thermal, and propulsion hardware design.

    43 parts2
  • 2 layers149 × 28.7 mm1uO c v 2.2, the printed circuit board in 3D

    1uO c v 2.2

    rhinocerose/eurorack-designs

    122 parts
  • 2 layersHouse midget, the printed circuit board in 3D

    House midget

    Sharoun-Madoya/home_midget

    167 partsMIT
  • 2 layers225 × 180 mmDC Load, the printed circuit board in 3D

    DC Load

    yjv/dc-load-schematic

    160 parts
  • 2 layers79.5 × 60.3 mmGLV BOBV6, the printed circuit board in 3D

    GLV BOBV6

    Lafayette-FSAE/Carman-2021

    CarMan kiCad schematics and libraries. Boards include GLV, Logic, Pi Shield, TSI. Also includes drawings for EPAL, and SLOOP.

    24 parts
  • 2 layers84.1 × 47.3 mmFinalPCB, the printed circuit board in 3D

    FinalPCB

    daumemo/DIY-Signal-Generator

    DIY portable Wi-Fi enabled signal generator

    143 parts45

Questions

How big is the Eload 4ch PCB?

It measures 170 × 125 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Eload 4ch use?

143 parts, built around the OPA2196ID, AP63205WU, DAC8565IAPW and L78L05ACD13TR-MS. 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 Eload 4ch KiCad files?

From the metallarox/eload-60v repository on GitHub, at the commit this page was made from: the board is hardware/kicad/eload_4ch.kicad_pcb and its schematic hardware/kicad/channels.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Eload 4ch design in my own project?

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