Beginning year 11 my electronics workbench was quite decked out; the only thing missing was a decent DC power supply. Reading around online, good ones with decent range and constant current capability were going to set me back at least 150$ (quite a lot for the cash-strapped student I was!); so I decided to make one.

After a few weeks of spending the odd school afternoon perfecting prototype circuits, simulating, and slowly piecing a master-circuit together, I had a working schematic.The following weekend I layed out a PCB in EAGLE and sent it off to iTead Studio to get manufactured. When the board had finally arrived, I ordered all of the components from Element14 (which were shipped and arrived the next day surprisingly) and assembled the thing (a process that took a little less than half a day – which included using the dremel to cut out panel holes etc).

Amazingly, when I turned it on the first time to begin programming, the on-board chip was recognized and everything seemed to be working! I then stuck the firmware on there that I had developed intermittently whilst waiting for the board to arrive — there were a few bugs, but nothing that a couple of hours extra work couldn’t fix; except the devices current-readings were slightly out (A hardware issue, I have narrowed it down to resistor tolerances and will substitute a couple with potentiometers in the near future).

The circuit


(you probably want to follow the image link twice to view it properly)

Running along the top isn’t all that interesting, we have on the left the sockets for the DC input and fuseholder alongside some bypass capacitance for stability. Then we have 2 regulators; a 5v for the LCD, and a 3.3v for the microcontroller. Followed by this we have a little subcircuit for the power LED, then four buttons with pull-down resistors.

The majority of the analog+interesting circuitry lies mid-left of the schematic. 0-3.3v RC-filtered PWM from the microcontroller enters V_SET and IC1A, which drives two transistors in a darlington configuration, a smaller 2n2222 (Q1) followed by a higher-power heatsinked 2n3055 (EXT). IC1A is set up as an amplifier whereby feedback comes from the darlington’s output and is divided so that 12v scales to 3.3v (also read by V_READ). This has the effect that 0-3.3v from the micro corresponds to an adjustable 0-12v at up to 1 amp across V_OUT. Notice that Q2, when turned on, will zero the voltage output as it switches off the darlington pair – this is used for current limiting which is explained later.

R8 is the 0.5 ohm current-sense resistor, the voltage-drop is amplified by IC1B in a differential-amplifier configuration whereby 0-0.5v sensed corresponds to 0-3.3v being output.This is then sent straight back to the micro through I_READ, and also compared (by an op-amp acting as a comparator) with I_SET in IC1C. The output of this is fed into the base of Q2 (described earlier), which consequently means that current is limited according to the voltage output by the micro at I_SET. The output of IC1C is also compared with a fixed, relatively low voltage and directly drives a ‘current limiting active’ LED.

The last part of the analog circuitry lies around V_OUT. To the right is some bypass capacitance, and to the left is a constant-current sink IC (LM334Z) configured to run at 1mA. This was required as in my breadboarding tests the circuit was unstable at currents under ~200 microamps. The offset this causes to the current reading is negated in software.

The other parts of the circuit are mostly digital, the micro and its boilerplate components as well as the lcd, some programming headers and an IO expansion header.


The PCB was designed to fit inside a Hammond model 1598BSGYPBK case (from specification as I didn’t actually have the case at the time), mounted with 6 screws. When the case arrived, I soldered the components onto the PCB, mounted the rear power transistor and heatsink, cut out panel holes with a drill and dremel and then gradually pieced the thing together.


Overall, the project cost me somewhere in the region of 140$, but this figure is inclusive of unused components as well as the 11 other copies of the PCB I ordered (12 is the minimum order, for a cost of about 40$) and a 30$ 15v 2amp power-pack from the local Jaycar store.

As the components totalled ~70$, I could have easily wiped off 30$ by ordering from a larger distributor (i.e digikey) and not ordering any excess components. Also, with the manufacture of more than one unit, the PCBs would have only cost ~3$ each. The powerpack can probably be purchased off of Ebay significantly cheaper also (lets say 20$). Considering these changes, individual units could quite realistically be built for somewhere around 55$ – a lot less than the 150$ item that I had originally considered for purchase.

All in all, I ended up spending about the same amount of money I would have spent had I simply a purchased a proven supply. The learning experience that accompanied my route however, I believe has strengthened my electronics background quite reasonably.