Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.

GitHub release license

Ownership and License

The contributors are listed in CONTRIB.TXT. This project uses the TAPR v1.0 license, see LICENSE.TXT. EEZ psu-hw uses the C4.1 (Collective Code Construction Contract) process for contributions. To report an issue, use the EEZ psu-hw issue tracker.

Repository structure

Files in this repository are organized using the following folders:

  • Consolidated - contains information about all modules. That include schematics and PCB layout (Eagle, .png, PDF), BOM (.ods, PDF) with parts required to build complete dual channel unit (1 x Aux, 2 x Power, and 1 x Arduino Shield). Use this as a primary reference for PCB manufacturing and assembling.
  • Aux power - information about Auxiliary power module only
  • Power board - information about Power board only
  • Arduino shield - information about Arduino Shield only
  • Mechanical - drawings for metal custom enclosure and acrylic demonstration enclosure.
  • Building instructions - details about power supply assembly and wire harness



This is repository for the hardware part of the DIY fully programmable dual channel bench power supply. The power supply is designed with taking into consideration the following features and requirements:

  • Modular design that allows combining modules with various performance and capability and creation of multiple output solution (min. two channels)
  • Voltage regulation (CV), 1/10 mV resolution, up to 50 V (default: 0 - 40 V)
  • Current regulation (CC), 0.1/1 mA resolution (multiple ranges, default: 0 - 500 mA / 0 - 5 A)
  • Minimal overshoot when new voltage or current level is programmed or in marginal cases such as power on/off
  • 15-bit data acquisition resolution
  • Various protection mechanisms: over-voltage (OVP), over-current (OCP), over-power (OPP) and over-temperature (OTP), current limiting when temperature sensors or cooling fan fault is detected
  • SMPS pre-regulator circuit for lower power dissipation (using e.g. SMPS)
  • SMPS pre-regulator's "100% Duty cycle" mode of operation to lower output ripple and noise
  • Switching frequency synchronization if multiple SMPS are utilized
  • Output enable (OE) circuit
  • Remote voltage sense
  • Remote voltage programming
  • External digital trigger (3.3 or 5 V logic level)
  • Simple AC input protection (surge and transient protection)
  • Selectable 115/230 VAC with solid-state (not mechanical!) soft-start/standby circuit
  • Simple DC output protection (reverse voltage, over-voltage)
  • Serial and parallel connection of the multiple channels
  • MCU based digital control module using 32-bit ARM Arduino Due
  • SPI bus for communication with peripherals
  • Galvanic isolation between digital module and power channels
  • Real-time clock (RTC) with supercap/batter backup
  • EEPROM used as a configuration and calibration parameters storage
  • SD-card as an additional storage
  • USB support that can be used for remote control, as a debug console and firmware upload
  • Ethernet support for remote control
  • Local control using TFT touch-screen display
  • Incremental encoder with tactile switch as an additional mean of setting output values
  • Usage of easy to find components that could be obtain with just single order from suppliers such as Farnell element14,, DigiKey, Mouser, RS online, etc.
  • Possibility to house at least dual channel version in affordable and compact (2U height) metallic enclosure
  • Comprehensive software support that include SCPI remote control, GUI configuration and monitoring and even cross platform (Windows, Linux, OS X) software simulator of the firmware functionality

Programmable dual channel PSU block diagram

For more information visit