Originally written by MATT GODFREY
This project is a simple linear bench power supply with adjustable voltage and current. It is meant to be a learning experience, putting ideas of circuit design, feedback, stability into practice building a complete practical power supply. I have intentionally avoided using a 3 terminal regulator or purpose built chip and instead implemented the feedback for voltage and current using a couple of opamps. The idea is for this to be a practical final product while giving pactice implementing some basic circuits.
Beyond this, everything is kept as simple as possible with no additional features to compliacate the design. The display is a 20x4 character LCD controlled by an Arduino which reads the currents and voltages. The voltage and current are set by 2 pots on the front panel. There is no data logging or serial comms, although this could be added later if desired with an update to the arduino firmware.
The design is fairly simple and uses a single npn darlington transistor as the main pass transistor in a common collector configuration. This provides current gain but no voltage gain, which is provided by a small signal npn transistor in a common emitter configuration. The current and voltage feedback loops are controlled by two opamps which compare the measured output values with setpoints generated by two potentiometers on the front panel which are driven by a 5V reference.
The output voltage is sampled via a 6:1 votlage divider (converts the 0-30V output to a 0-5V signal) and the current is sampled by measuring the voltage drop over a 100mOhm resistor in series with the output. Everything is mapped down to the 0-5V range so that they can be directly measured with an arduino using the 5V rail as the reference voltage.
There is additional circuitry for the mains rectification, the transformer tap select and a 7805 5V regulator which provides the reference voltage, powers some of the chips and is routed to the front panel to provide a fixed 5V output.
The main feedback loop and output stage is shown in the figure above. Opamp U1A has it’s non-inverting input connected to the wiper of a pot on the front panel, driven by a 5V reference signal which provides the setpoint between 0V and 5V. The inverting input comes from the 6:1 voltage divider R5/R6 which divides the 0-30V output down to a 0-5V signal. The output voltage is amplified by the common emitter amplifier created by R1, R3 and Q2, with the pnp transisor Q1 required as the common emitter amplifier is inverting. The current gain is then provided by the common collector amplifier formed by Q3. Q3 is the main pass transistor and so must have high gain and be capable of dissipating a lot of power (see below) - I use a TIP120 which is an npn darlington transistor rated to 5A with a DC current gain (hfe) of ~1000.
The output current is monitored by measuring the voltage drop over the shunt resistor R4. This is achieved with U2 (INA196) which is a dedicated current monitor IC – basically a differential amplifier with a gain of 20V/V. With a 100mΩ resistor at 2A this develops 200mV, which means the output is in the range from 0-4V. This is fed into the negative input of opamp U1B, with the positive input being the setpoint coming from a second pot on the front panel. This is also connected to the base of transistor Q2 along with the voltage control signal, except that it is through a diode D3.
The transformer I am using has 2 windings rated at 2.5A, each with a 9V and 12V tap. The two windings are connected in series to provide 3 AC voltages of 9V, 12V and 24V. The 21V tap is unused.
A multi-tap transformer is needed to reduce the power dissipation in the pass transistor. The worst case in terms of power dissipation is a short circuit, when the full voltage is dropped over the pass transistor at maximum current. With 30V at 2A this gives 60W, which is outside the spec of most cheap transistors. The transistor used in this design (TIP120) has maximum dissipation of 65W at room temperature, but this is reduced to 30W at 80 degrees (see figure below from the datasheet). By using 2 taps I limit the maximum power dissipation to around 30W, at the expense of the extra complexity of the tap selection circuitry. Some alternative solutions could be sharing the current between multiple pass transistors, or using a larger heasink with forced cooling.
The main voltage supply is selected via relay K1 based on the output voltage from the 12V or 24V taps, bridge rectified and filtered. Opamp U5A is set up as a hysteresis comparator via resistors R7, R9 and R10 with a trip point of 10V +- 2V (output voltage, the actual trip point is 6x lower due to the 6:1 voltage divider). The output from the opamp drives the base of npn transistor Q4 which switches the relay coil current on or off to select the correct tap. Resistor R8 limits the base current into Q4.
Display is handled by an Arduino nano, which measures the setpoint and actual voltages and outputs to a 20×4 character LCD on the front panel. I use the Arduino's internal 10 bit ADC (giving 1024 different values) which at 30V and 2A gives about 30mV and 2mA resolution - more than enough for my purposes. The code (available here) is very simple, just sampling the 4 votages and updating the display roughly every 100ms . The measured voltage and current must be calibrated by measuring the actual output with a multimeter and comparing to the value output by the arduino, as described in the code.
Some more details about this power supply design and build are available on my personal blog
5 April 2016: The current revision (Rev1.1) is assembled, tested and working. The above description has been updated to correspond to the latest revision. All that remains is to finish the power supply enclosure by finishing the lid, giving it a coat of paint and adding some knobs to the front panel pots.
30 March 2016: The new version of the board has arrived, been built and tested and is working correctly. I will update this post in the next few days with the changes.
12 March 2016: I have started working on a new revision which fixes some of the problems found in the original version. I will update this project page with more details once it is working.
Jan 2015: I am currently in the process of assmebling, testing and troubleshooting the board. I have had the first revision of the board manufactured and assembled it. Most of the functionaly is working - the voltage set, tap select, display and 5V output with only minor mods. I am still having some problems with the current limiting circuit which I hope to resolve soon. Once that is fixed I will finalise all the changes to the design and release a second revision.