During the summer of 2016, I started building a lab power supply. At the time, I didn’t have one at all, so I just wanted a general purpose one. I decided to base it on the open-source EEVBlog µSupply, which is capable of 0-20.48 V output with current limiting from 0-1 A. It also has some fancy features like an ethernet interface, which I decided not to include in my design. Some vague specifications that I decided on were:
|Output voltage||0-20.48 V|
|Output current||0-1 A|
|Input voltage||12 V DC|
|Display||16 x 2 Character LCD|
I designed the schematic in Eagle. The voltage and current control is identical to that in the EEVBlog µSupply and is based around the LT3080 linear regulator from Linear Technology. There are some videos explaining the design available from EEVBlog, but I will briefly summarize here.
The LT3080 OUT voltage is typically set by connecting SET to ground via a resistor, which generates a voltage at the SET pin due to the 10 µA reference current. The output tracks the SET voltage via negative feedback.
To adjust the output voltage with a microcontroller, the SET voltage needed to be controlled. This is taken care of by U6 (refer to the schematic below), which is a 10-bit DAC with a 2.048 V reference voltage (U7). U8A is in the non-inverting configuration with a gain of 10, so the DAC output is scaled up to the desired 0-20.48 V range. Note that T2, which is used for current limiting, is normally off and does not affect the circuit when the output is not drawing too much current. Thus, the output voltage can be set by controlling the DAC via its I2C interface.
On the output, IC3 is a current source that takes care of the minimum output current required by the LT3080. There are also some protection diodes.
U4A and U4B form a difference amplifier that measures the current across the 1 Ω shunt resistor composed for R11-R20, with an output of 1 mV per 1 mA. U3B compares this to ISET_3V3, which is generated by filtering the ISET PWM signal from a microcontroller. If the current is too much, T2 shorts SET nearly to ground via R39, causing the output voltage/current to drop.
U1 is a current/power monitor that also measures the current across the shunt resistor. It allows the microcontroller to monitor the power use of the supply.
The Rest of the Circuit
The rest of the circuit includes the microcontroller, 5 V and 3.3 V voltage supplies, a 16 x 2 character LCD display, and rotary encoders along with some buttons for navigating the menu. See the schematics below. Many of the signals are available on headers for debugging, and I made the TX and RX connections configurable in case I wired them up the wrong way around (I had a bad experience with this in the past!). There is also some level shifting with R28, R31, D6, and D8, since the microcontroller runs at 5 V while the Bluetooth module uses 3.3 V logic levels. SW1 and SW2 are the rotary encoders, while S2 and S3 are pushbuttons. The headers JP4, JP5, JP8 and JP9 are present to allow these signals to be connected to external hardware rather than the footprints on the PCB.
After finishing the schematic, I designed the PCB in Eagle. Because there were so many passive components in the design, I decided to use 0805 components. I do not have much experience with surface mount soldering, so I decided not to use 0603, even though this size is still fairly large.