Skip to the content
PCBKitNew board
2 layers123 × 55 mmFilter board, the printed circuit board in 3D

A 120W & 7.5A DIY electronic load

Size
123 × 55 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
3
Pads
50
Tracks, vias
0, 304
Pours
5
Routed
Not yet
KiCad
KiCad 8.0 (file 20240108)
Created
16 Jun 2024
Updated
20 Dec 2025

Overview

Filter board is an open-source printed circuit board by Owen-Ball, from the Owen-Ball/Electronic-Load repository on GitHub. It is a 2-layer board of 123 × 55 mm with 26 parts on 3 nets.

It is built around the EMHB630ARA471MMH0S and IHLP5050FDER1R0M01. Its parts include 19 capacitors, 4 connectors, 2 resistors and 1 inductor.

Main components

2

README

README.md

Overview

A DIY electronic load capable of

  • CC, CR, CP, Battery (BT) Modes
  • 30V, 50mA-7.5A, 120W
  • 0-12V @ 3mV resolution, 0-40V @ 10mV resolution
  • 0-1A @ 300uA resolution, 0-10A @ 2.5mA resolution

The design uses a custom PCB featuring an ESP32S3 Feather microcontroller. 4 power FETs dissipate the power via a CPU heatsink and current is measured using a bank of power resistors. With proper calibration, measurements/setpoints are within 1% across the entire operational range.

Front View Back View

To Do Feature List

  • CV mode? Not really sure for what application though
  • Adjustable starting current in battery mode

Device Usage

This section provides a brief overview of device operation, including

  • An overview of the UI elements
  • Using the UI to operate the device
  • Some potential pitfalls and things to look out for using the device
  • Proper power connections and USB-C connections

UI Overview

There are 5 "screens" on the UI, corresponding to the 4 operating modes of the device and a calibration screen. These are cycled through with the "mode" (M) button. The current mode is indicated in the top left. On each screen, the output can be enabled with the "enable" (E) button.

On each screen, the top-most value is the setpoint for the mode. This value is changed via the encoder. The 3 values below this are the measured values, which consist of the voltage, current, and either the power or discharged mAh in the case of battery mode. The temperature is also displayed at the bottom, along with any error messages. The output state is indicated by a red (off) or green (on) circle in the bottom right.

Firmware Operation

On each screen, the rotary encoder can be used to change the setpoint within the system bounds. The place value being edited can be changed by clicking the encoder to cycle through place values, or by pressing down the encoder and turning it.

Once on the desired mode and with the correct setpoint, the enable button can be used to toggle the system output. The output indicator will turn green. If the output turns off unexpectedly, an error/warning message should be displayed indicating the reason, with most of these going away next time the enable button is pressed.

All modes operate in general by very roughly setting a current, maybe with 10-25% accuracy. The actual current is monitored and used to adjust the setpoint. This is done with an integral controller, which requires some sanity checking to ensure system safety. If there is no source connected (or it is underpowered), the system will detect this and shut off the output. More specifically, if the set current and measured current are not within a certain tolerance of each other for a set amount of time, the output is disabled.

Other reasons for system shutoff are voltage or temperature limits being exceeded. In CR or CP modes, since the current is automatically calculated the output will be shut off if the system tries to set the current or power above the system limit.

In rare circumstances the system can oscillate. This will occur in the presence of a slow responding source in series (ie an incandescent bulb) or through interactions with the feedback system of a power supply. There is no protection against this, so turn the system off if observed.

Hardware Operation

While the system has some reverse polarity protection, it is highly recommended that this is not relied on. As such, make sure to connect the higher potential of the source to the +/red terminal and the lower to the -/black terminal. While the system should draw no current while powered off, I recommend having the system powered before connecting a source.

When connecting to the Feather using a USB-C cable, a cable with the 5V line cut is recommended. The system has diodes on the 5V lines so there are no shorting risks, but for some reason the system measurements differ by around 1% depending on whether the system receives USB power or not. Thus for calibration using the serial monitor, a cable with no power is essential.

The system can be put into bootloader mode by pressing down the encoder while turning on the system (assuming you bridge the encoder pin and bootloader testpad on the feather together).

Additionally, please use caution when operating the device, as mains 120V power is used. There are potential areas of risk, including power supply failure and improper crimping for the live wires.

Hardware

Microcontroller

The microcontroller used is the ESP32S3 feather. This was done with the intention of adding WiFi support to the device for the monitoring and setting of parameters. However, the ESP32S3 has issues using both the ADC and WiFi at the same time, so this feature is on hold. Additionally, I did not have any significant use cases for the WiFi anyways. If not implementing WiFi functionality, the ESP32 is a poor choice due to the extremely non-linear ADCs that mandate extensive calibration.

Power Components:

The bulk of the power is burned using 4 IRFB7545PBF NCH MOSFETs (TO-220). The FETs are mounted to a CPU heatsink to thermally couple them and provide power dissipation. Current measurements are done using the voltage across banks of RSMF2JT4R70 4.7 Ohm resistors. Each FET is in series with a bank of 4 of these resistors in parallel. The resistors are cooled via a fan mounted to the system case.

A 10A fuse is placed in series with the + input to the system. Some degree of reverse polarity protection is present in the form of a reverse biased diode across the input ports after the fuse. This ideally will limit reverse voltages to less than 1V but has not been tested.

Sensing

All sensing is done via the ADCs on the ESP32S3. Accurary could be improved by purchasing more accurate standalone ICs for voltage and current measurements however.

Voltage sensing has two ranges, 0-12V and 0- 40V (need to check). Thus for a 12-bit ADC, resolution is around 3mV/step and 10mV/step. Both sensors operate using a simple voltage divider to divide down the max voltage to the maximum ADC input of ~3.2V. 7.5V zener diodes are used to clamp the voltage input to the ADCs to ~3.75V. 7.5V zeners are used since lower voltage zeners feature a less sharp turn on that would increase leakage and worsen the voltage clamping. One note is the pin used for the high voltage range on the ESP32S3 feather has an SMD LED attached to it (not sure why they put the on-board LED on an analog in pin...). For high voltage inputs, this drives the LED, which is not ideal and causes non-linearity in the measurement that needs to be compensated for. The LED could of course be removed, but I did not do this.

Current sensing is done with two ranges as well, although there are some major design oversights. The original intention was to have two operating modes, one where all 4 FETs were running and one were only a single one was active. This would enable higher precision for low current measurements. Thus 3 of the 4 FETs are controlled by 1 DAC and the final one is controlled by a separate DAC.

The high sensitivity current sensor amplies the voltage across the power resistors by a factor of 10. Thus for 16 shunt resistors, this range maxes out around 1.1A. The design oversight is that this sensor is only hooked up to the independently controlled FET path, so in high current mode, this sensor is not truly measuring the current, it is "guessing" based on a measurement of 1/4 of the current.

The low sensitivity (higher range) current sensor uses resistors to average the voltages across the 4 shunts. This means it works properly in high current mode, but not in low, since this setup will not work when only the one FET is active. This mode peaks at around 10A (need to check).

As a summary of the design oversights, the only fully functioning current sensing modes would be high current mode + low sensitivity sensor and low current mode, high sensitivity sensor. After discovering this issue, I cut support for low current mode (single power FET active) entirely since I currently do not have a use case for the mode (would be 0-250mA), although this may be added in the future. I did decide to use the high sensitivity current sensor in high current mode despite only directly measuring 1/4 of the current. For current runaway reasons, the system will still take a reading using the low sensitivity current sensor to ensure current does not run away in a FET not monitored by the high sensitivity current sensor.

Firmware Details

More details regarding the firmware implementation can be found in the firmware-specific readme here

This includes:

  • Error codes
  • Feedback loops
  • System FSM
  • Calibration
  • Setup

Parts

26
QtyValueFootprintReferences
7EMHB630ARA471MMH0SFilterBoardLib:EMHB630ARA471MMH0SC1, C2, C3, C4, C5, C6, C7
6.1uCapacitor_SMD:C_0805_2012MetricC11, C12, C13, C17, C18, C19
61uCapacitor_SMD:C_0805_2012MetricC8, C9, C10, C14, C15, C16
247kResistor_SMD:R_0805_2012MetricR1, R2
2Conn_01x01_PinFilterBoardLib:Wire_PadJ3, J4
1Banana TerminalsFilterBoardLib:Banana_TerminalsJ2
1IHLP5050FDER1R0M01FilterBoardLib:IND_IHLP-5050FD-01_VISL1
1~FilterBoardLib:Banana_TerminalsJ1

Questions

How big is the Filter board PCB?

It measures 123 × 55 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Filter board use?

26 parts, built around the EMHB630ARA471MMH0S and IHLP5050FDER1R0M01. 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 Filter board KiCad files?

From the Owen-Ball/Electronic-Load repository on GitHub, at the commit this page was made from: the board is FilterBoard/PCB/filter_board.kicad_pcb and its schematic FilterBoard/PCB/filter_board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Filter board design in my own project?

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

Similar boards

  • 2 layers57.3 × 19 mm11ua, the printed circuit board in 3D

    11ua

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    26 parts990GPL-3.0
  • 2 layers98 × 59.5 mmMCP23017 PCB, the printed circuit board in 3D

    MCP23017 PCB

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    26 parts915
  • 2 layers142.9 × 98.5 mmCantor MX, the printed circuit board in 3D

    Cantor MX

    diepala/cantor

    Cantor keyboard, a 42 key diodeless split keyboard.

    26 parts756GPL-3.0
  • 2 layers103.8 × 50 mmGalagino pcb set, the printed circuit board in 3D

    Galagino pcb set

    harbaum/galagino

    A Galaga, Pac-Man and Donkey Kong arcade emulator for the ESP32

    26 parts558
  • 2 layers20.3 × 34.8 mmL0 ESP32, the printed circuit board in 3D

    L0 ESP32

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    26 parts546MIT
  • 2 layers40.6 × 50.8 mmWALTsm, the printed circuit board in 3D

    WALTsm

    google/walt

    A device for measuring latency of physical sensors and outputs on phones and computers

    26 parts474Apache-2.0
  • 2 layers158.5 × 75 mmDoj v2, the printed circuit board in 3D

    Doj v2

    kelu124/echomods

    Open source ultrasound processing modules and building blocks

    26 parts463