Superb Lab Power Supply
Superb Lab Power Supply
Superb Lab Power Supply
by danielrp
From my point of view one of the best ways to get started in electronics is to build your own laboratory power
supply. In this instructable I have tried to collect all the necessary steps so that anyone can construct his own.
All the parts of the assembly are directly orderable in digikey, ebay, amazon or aliexpress except the meter circuit.
I made a custom meter circuit shield for Arduino able to measure up to 36V - 4A, with a resolution of 10mV - 1mA
that can be used for other projects also.
Apart from the Image, I have attached the file allow an easy installation of the heatsink (13).
WiringAndParts.pdf to this step. The document
descrives all the functional parts, icluding the ordering The original 10K potentiometers of the power supply
link, of the bench power supply and how to connect circuit has been replaced with multiturn models (7),
them. this makes possible a precise adjustment of the
output voltage and current.
The mains voltage comes in through an IEC panel
connector (10) that has a built in fussible holder, there The arduino board of the meter circuit is powered
is a power switch in the front panel (11) that breaks using a power jack cable (6) that comes from the
the circuit formed from the IEC connector to the power supply circuit (8). The power supply board has
transformer (9). been modified to obtain 12V instead of 24V.
The transformer (9) outputs 21VAC. The 21 VAC go The positive pin of the CC LED from the power
directly to the power supply circuit (8). The output of supply circuit is wired to the mode connector of the
the power supply circuit (8) goes directly to the IN Meter Circuit. This allow it to know when to display
terminal of the meter circuit (5). CC or CV mode.
The OUT terminal of the meter circuit (5) is connected There are two buttons wired to the meter circuit (3).
directly to the positive and negative binding posts (4) The Off button “red” disconnects the output voltage.
of the power supply. The meter circuit measures both The On button “black” connects the output voltage
voltage and current (high side), and can enable or and resets OV or OC errors.
disable the connection between in and out.
There are two potentiometers wired to the meter
Cables, in general use scrap cables you have in circuit (2). One sets the OV threshold and the other
house. You can check the internet for appropriate sets the OC threshold. These potentiometers do not
AWG gauge for 3A but, in general the thumb rule of need to be multiturn, I have used the original
4A/mm² works, specially for short cables. For the potentiometers from the power supply circuit.
mains voltage wiring (120V or 230V) use
appropriately isolated cables, 600V in USA, 750V in The 20x4 I2C alphanumeric LCD (1) is wired to the
Europe. meter circuit. It shows the present information about
output voltage, output current, OV setpoint, OC
The series pass transistor of the power supply circuit setpoint and status.
(Q4) (12) has been wired instead of been soldered to
http://www.instructables.com/ORIG/F0H/J8UM/J3AFKV0R/F0HJ8UMJ3AFKV0R.pdf
…
(https://cdn.instructables.com/ORIG/F0H/J8UM/J3AFKV0R/F0HJ8UMJ3AFKV0R.pdf)
I bought this kit that is rated as 30V, 3A: constant current mode is on.
http://www.ebay.com/itm/Vkmaker-0-30V-2mA-3A-
Adju... The circuit incorporates the wheatstone bridge to
rectify the AC input. The AC input is also used to
I am attaching an assembly guide I found in the generate a negative biasing voltage to reach 0V.
Internet and an image of the Schematic. Briefly:
There is no thermal protection in this circuit, so
The circuit is a linear power supply. appropriate dimensioning of the heatsink is very
important.
Q4 and Q2 are a Darlington array and form the series
pass transistor, it is controlled by the operational The circuit has a 24V output for an “optional” fan. I
amplifiers to maintain the voltage and the current at have substituted the 7824 regulator with a 7812
the desired value. regulator to get 12V for the Arduino board of the
meter circuit.
The current is measured by R7, adding this
resistance in the low side makes the ground of the I have not assembled the LED, instead I have used
power supply circuit and the output ground different. this signal to indicate the meter circuit if the power
supply is in CC or CV.
The circuit drives a LED that turns on when the
1 2
Download (https://cdn.instructables.com/ORIG/FA5/9YI8/J2UPIPCW/FA59YI8J2UPIPCW.pdf)
http://www.instructables.com/ORIG/FA5/9YI8/J2UPIPCW/FA59YI8J2UPIPCW.pdf
…
(https://cdn.instructables.com/ORIG/FA5/9YI8/J2UPIPCW/FA59YI8J2UPIPCW.pdf)
In this circuit all parts are through hole. In general you must start with the smallest ones.
R1 and C1 form a filter to suppress 10KHz and X2 is the connector for the ON push button. R11
20KHz unwanted signals that can appear due to the prevents the Arduino pin input from static discharges
architecture of device, it is recommended in page 12 and R12 is a pull-up resistor that makes 5V when
the of datasheet. unpressed and ~0V when pressed. I_ON signal.
Download (https://cdn.instructables.com/ORIG/F5N/USUH/J38WK47X/F5NUSUHJ38WK47X.pdf)
http://www.instructables.com/ORIG/F5N/USUH/J38WK47X/F5NUSUHJ38WK47X.pdf
…
(https://cdn.instructables.com/ORIG/F5N/USUH/J38WK47X/F5NUSUHJ38WK47X.pdf)
I have used the free version of Eagle for both the schematic and the PCB. The PCB is 1.6 thick double sided
design that has a separate ground plane for the analog circuit and the digital circuit. The design is pretty simple. I
got a dxf file from the Internet with the for the outline dimension and the position of the Arduino pinhead
connectors.
I ordered the PCB to PCBWay (www.pcbway.com). The price was amazingly low: $33, including shipping, for 10
boards that arrived in less than a week. I can share the remaining boards with my friends or use them in other
projects.
There is a mistake in the design, I put a via touching the silkscreen in the 36V legend.
1. Mistake!!
Download (https://cdn.instructables.com/ORIG/FLR/5WQY/J38WK8MP/FLR5WQYJ38WK8MP.brd)
http://www.instructables.com/ORIG/FLR/5WQY/J38WK8MP/FLR5WQYJ38WK8MP.brd
…
(https://cdn.instructables.com/ORIG/FLR/5WQY/J38WK8MP/FLR5WQYJ38WK8MP.brd)
Download (https://cdn.instructables.com/ORIG/FHG/YXGU/J38WK8NA/FHGYXGUJ38WK8NA.sch)
http://www.instructables.com/ORIG/FHG/YXGU/J38WK8NA/FHGYXGUJ38WK8NA.sch
…
(https://cdn.instructables.com/ORIG/FHG/YXGU/J38WK8NA/FHGYXGUJ38WK8NA.sch)
Download (https://cdn.instructables.com/ORIG/FX9/2JOU/J38WK8ND/FX92JOUJ38WK8ND.zip)
http://www.instructables.com/ORIG/FX9/2JOU/J38WK8ND/FX92JOUJ38WK8ND.zip
…
(https://cdn.instructables.com/ORIG/FX9/2JOU/J38WK8ND/FX92JOUJ38WK8ND.zip)
Download (https://cdn.instructables.com/ORIG/FW2/I7YX/J38WK8NJ/FW2I7YXJ38WK8NJ.pdf)
http://www.instructables.com/ORIG/FW2/I7YX/J38WK8NJ/FW2I7YXJ38WK8NJ.pdf
…
(https://cdn.instructables.com/ORIG/FW2/I7YX/J38WK8NJ/FW2I7YXJ38WK8NJ.pdf)
Although most of parts are SMT in this board, it can be assembled with a regular soldering iron. I have used a
Hakko FX888D-23BY, fine tip tweezers, some solder wick, and a 0.02 solder.
After receiving the parts the best idea is to sort them, I have sorted capacitors and resistors and
stapled the bags.
First assemble the small parts, starting with resistors and capacitors.
Assemble R4 (0R1) starting with one of the four leads.
Solder the rest of parts, in general for SOT23, SOIC8, etc. the best way is to apply solder in one
pad first, solder the part in its place and then solder the rest of the leads. Sometimes solder can join
many pads together, in this case you can use flux and solder wick to remove the solder and clean
the gaps.
Assemble the rest of through hole components.
I have attached the file DCmeter.ino. All the program There is a double buffer implementation for faster
is included in this file apart from the LCD library updating the display.
“LiquidCrystal_I2C”. The code is highly customizable,
especially the shape of progress bars and the The following macros can be adjusted for other
messages displayed. projects:
As all arduino codes it has the setup() function MAXVP: Maximum OV in 1/100V units.
executed first time and the loop() function executed
continuously. MAXCP: Maximum OC in 1/1000A units.
The setup function configures the display, including DEBOUNCEHARDNESS: Number of iterations with
the specials chars for the progress bar, inits the a consecutive value to guess it is correct for I_ON
MCP4322 state machine and sets up the relay and and I_OFF.
the LCD backlight for first time.
LCD4x20 or LCD2x16: Compilation for 4x20 or 2x16
There is no interrupts, in each iteration the loop display, the 2x16 option is not implemented yet.
function does the following steps:
The 4x20 implementation shows the following
Get the value of all the input signals I_ON, I_OFF, information: In the first row the output voltage and the
A_OC, A_OV and I_MOD. I_ON, and I_OFF are output current. In the second row a progress bar
debounced. A_OC and A_OV are read directly from representing the output value relative to protection set
the Arduino´s ADC and filtered using the median part point for both voltage and current. Int the third row the
of the last three measurements. I_MOD is read current setpoint for overvoltage protection and
directly without debouncing. overcurrent protection. In the fourth row the current
status of the power supply: CC ON (On in constant
Control the turn on time of the backlight. current mode), CV ON (On in constant voltage
mode), OFF, OV OFF (Off showing that the power
Execute the MCP3422 state machine. Each 5ms it supply went off because of a OV), OC OFF (Off
polls the MCP3422 to see if the last conversion showing that the power supply went off because of a
finished and if so it start the next, successively gets OC).
the value of voltage and current present at the output.
I have made this file for designing the chars of the
If there are fresh values of output voltage and current progress bars: https://drive.google.com/open?
from the MCP3422 state machine, updates the status id=1ych5bmo9lfsu44W...
of the power supply based on the measurements and
updates the display.
Download (https://cdn.instructables.com/ORIG/F7U/XXVV/J3AF83DQ/F7UXXVVJ3AF83DQ.ino)
http://www.instructables.com/ORIG/F7U/XXVV/J3AF83DQ/F7UXXVVJ3AF83DQ.ino
…
(https://cdn.instructables.com/ORIG/F7U/XXVV/J3AF83DQ/F7UXXVVJ3AF83DQ.ino)
Using the right heatsink is very important in this the thermal resistance case to heatsink of the isolator
assembly because the power supply circuit is not self for the 15mm x 15mm surface of the 2SD1047 is:
protected against overheat. Rth-c,hs = 0.127ºC/W. You can find a guide for these
calculations here:
According to datasheet the 2SD1047 transistor has a http://www.myheatsinks.com/calculate/thermal-resi...
junction to case thermal resistance of Rth-j,c =
1.25ºC/W. The maximum allowable power for 150ºC in the
junction and 25ºC in the air is: P = (Tj - Ta) / (Rth-j,c +
According to this web calculator: Rth-hs,air + Rth-c,hs) = (150 - 25) / (1.25 + 0.61 +
http://www.myheatsinks.com/calculate/thermal-resi... 0.127) = 63W.
the thermal resistance of the heatsink I have
purchased is Rth-hs,air = 0.61ºC/W. I will assume The output voltage of the transformer is 21VAC at full
that the actual value is lower because the heatsink is load, that makes an average of 24VDC after diodes
attached to the case and the heat can be dissipated and filtering. So the maximum dissipation will be P =
that way too. 24V * 3A = 72W. Taking into account that the thermal
resistance of the heatsink is a little bit lower due to
According to the ebay seller, the thermal conductivity the metal enclosure dissipation, I have assumed it is
of the isolator sheet I have purchased is K = enough.
20.9W/(mK). With this, with a thickness of 0.6mm, the
thermal resistance is: R = L/K = 2.87e-5(Km2)/W. So,
Step 9: Enclosure
The enclosure, including shipping, is the most expensive part of the power supply. I found this model in ebay, from
Cheval, a Thay manufacturer: http://www.chevalgrp.com/standalone2.php. In fact, the ebay seller was from
Thailand.
This box has a very good value for money and arrived pretty well packaged.
The best option for mechanizing and engraving the front panel is using a router like this
https://shop.carbide3d.com/products/shapeoko-xl-k... or making a custom plastic cover with PONOKO, for
example. But as I do not have the router and I did not wanted to spend much money I decided to make it the old
way: Cutting, trimming with file and using transfer letters for the text.
http://www.instructables.com/ORIG/FIA/131M/J3AF89IJ/FIA131MJ3AF89IJ.svg
…
(https://cdn.instructables.com/ORIG/FIA/131M/J3AF89IJ/FIA131MJ3AF89IJ.svg)
Mark the position of the heatsink, including the hole for the power transistor and the position of the
holding screws.
Mark the hole for accessing the heatsink from the interior of the power supply enclosure, I have
used the insulator as a reference.
Mark the hole for the IEC connector.
Drill the contour of the shapes.
Drill the holes for the screws.
Cut the shapes with cutting pliers.
Trim the shapes with a file.
Screw the heatsink to the back panel, although paint is a thermal isolator, I have put heatsink
grease to increase the heat transfer from the heatsink to the enclosure.
Assemble the IEC connector.
Position the adhesive spacers using the power supply kit circuit.
Screw the power transistor and the insulator, there must be thermal grease in each surface.
Assemble the 7812 for powering the arduino, it is facing the case to allow heat dissipation, using
one of the screws that hold the heatsink. I should have used a plastic washer like this
http://www.ebay.com/itm/100PCS-TO-220-Transistor-... but I ended up using the same insulator as
the power transistor and a bent piece of the case.
Wire the power transistor and the 7812 to the power supply circuit.
Improvements:
Use grower style washers to avoid screws get loose with vibration, specially the vibration from the
transformer.
Paint the front panel with transparent varnish to prevent letters to be wiped out.
Further working: