EDITS: 11/6/19 - Fixed broken links; Changed schematic for low voltage supply following change of LM7805
21/7/19 - Attached a PDF containing the whole schematic
The first step in producing this was to install and learn KiCad! I did start out with Omnigraffle - just a tool I had - but Frank Milburn posted a good response on one of my questions so I switched over and spent a bit of time picking it up.
KiCad files available in Github
Custom footprints and custom symbols can also be downloaded from Github. You’ll need to add a link to these in KiCad’s preferences so that the project doesn’t error when opening. I’m assuming that if you have KiCad you know how to do that, but please ask.
I’ve structured the design so that it was easier to work on and it is split into two parts: a power stage and power control. It should have low ripple, be very stable, allow control down to 0V and 0A, cope with a short circuit and run at a low temperature (so quietly.)
Power Control Block Diagram
The key elements of the solution are a pair of paralleled LT3081 Linear Regulators. These are sourced from a Switching Regulator (LTC1624) that steps down the input voltage (approx 24V from a 60VA rectified power stage - I couldn’t find anything smaller that provided the necessary current) which aims to keep the voltage just above that set for the output. The Linear Regulators can output 1.5A each but can be paralleled to produce what is needed - in this case 3A from 2x1.5A but in theory as much as desired by paralleling more of them. They remove the ripple from the switching regulator and their output is controlled through potentiometers for voltage and current settings. I’ve used 10-turn pots for this to get fine control - it should be possible in V2 to replace these with a DAC to control from the Arduino microprocessor and touchscreen.
The regulators can output 0V as long as 4mA each is pulled from them by the negative supply, an LTC1983. This is fed from a +5V supply - LM7805 - which also drives the monitoring element and the Arduino which I’m using to display the output voltage and current as well as the temperature sensors.
Stable current output is achieved with a current source, LT3092, configured to provide 1mA per regulator controlled with the voltage potentiometer.
Finally, output monitoring is achieved with a TI INA260 digital current and power monitor fed to an Arduino and LCD. I’ve also incorporated 3 thermistors to monitor temperatures of the Mosfet, bridge rectifier and case (ambient) - the linear regulators provide their own temperature output feeds which are also passed to the Arduino.
Switching Regulator Schematic
If I’m being honest with myself I don’t fully understand the switching regulator element of it yet: I have spent a significant amount of time pouring over the data sheet and LTSpice so I get some of it but I need to do more work. In this supply, it takes the input voltage - 24V from a 60VA rectified transformer in this case - and outputs a voltage 1.7V higher than the set voltage or voltage set by the current limit. This is controlled by the voltage divider fed to the feedback pin; the 100uF capacitor, C10, helps provide stability.
Linear Regulator Schematic
These have been connected in parallel to provide up to 3A to the output supply. Voltage control is provided via the potentiometer connected to the SET pins and current control (current limiting) via the potentiometer connected to iLim pins. The regulators can provide 0V output as long as 4mV is pulled from the output (the job of the negative 5v supply); 0Amps is guaranteed as long as the resistor connected to iLim is less that 200ohms - R15 is 100Ohms in this design.
The Temp pins are connected to the Arduino so I can monitor their temperature under different loads. In theory, they shouldn’t be dissipating much power, as the Switching Regulator controls the voltage drop but from simulation, and calculations, I’m not yet convinced: I’m providing them with heatsinks and will see what happens during testing. The iMon pins would allow me to monitor the current output and a connection to the Set pins (VCtrl+ seen in the block diagram) the voltage: I’ve provided an output connection for these on J3 pins 3 - 6 but will actually use the INA260 in the Output Monitoring circuit instead. A multimeter connected across J3 could be used to verify the readings displayed.
Output can be turned off completely through a switch connected between the Current Source and regulator Set pins (see the block diagram - the switch is connected to J3 pins 1 and 2)
Current Source Schematic
This is used to create stability in the output voltage generated through the Set pins on the linear regulator via the voltage control potentiometer. It provides a constant current source irrespective of temperature changes to maintain that stability - which the potentiometer on its own couldn’t do. The 73K2 resistor in parallel to the 47K5 resistor limits the maximum voltage to 15V. Changing the 73K2 to a different value would allow for higher (or lower) voltages - the maximum would be 24V but that would require a 36V supply to the Switching Regulator (its max input supply.)
Negative Power Supply Schematic
Used to generate -3.3v with a transistor to limit current to pull down the output of the linear regulators by around 10mA in order to allow them to control voltage on the output down to 0V
Low Voltage Supply Schematic
The schematic below has been replaced with the one following. The LM7805 was replace with a DC-DC Switching Regulator to improve efficiency and avoid thermal issues.
Not much to say here: converts the 24V in down to 5V to drive the Negative Power Supply, Output Monitoring and Arduino. The original LM7805 was used because I had miscalculated the thermal requirements - I forgot the Arduino in the calculation and that draws around 320mA (according to datasheet), potentially causing a 6W power dissipation on the LM7805. The DC-DC Switching Regulator is much more efficient and should not cause thermal issues.
Output Monitoring Schematic
This uses the TI INA260 monitoring IC, in the output path, to monitor and report Current, Voltage and Power. I’m using an Arduino with an I2C connection to read the values. The address is hard-wired to 0 (zero) by connecting the address pins to ground. I’m also provisioning three thermistors to monitor the temperature of the Mosfet (on the Switching Regulator), the bridge rectifier (on the Power Stage) and the case temperature - once I select an enclosure. I’ve made a number of thermal calculations for the design - see the upcoming Calculations post - but until I get to see this in action I’m not sure exactly what will happen in that respect. It does mean that I can move the thermistors around - the ones I’ve chosen have quite long leads - as part of the testing if need be. Ultimately, I could free up Arduino analag pins if any aren’t needed - for example to switch a fan on/off at a given temperature.
Output Display
Not shown, but I’m going to use a 4Duino from 4D Systems to display the sensor outputs on its ‘built-in’ LCD: it’s actually an Arduino Leonardo under the covers I believe. It’s an expensive solution but I’m ok with that as it allows me to develop some Arduino skills and can be developed further if I move on to V2 of this supply.
Power Stage
I decided to separate the power stage in the design so that there was some flexibility in choice. I’m going to use a 60VA toroid transformer but the Control Stage can be supplied from an old laptop supply or switching supply as long as it delivers at least 3A (preferably a smidgen more for comfort) and 18V (probably a bit less as long as allowance is made for any voltage drop across the control circuit.) If a different supply is used, then the Power Stage PCB could be dropped - a terminal block is provided on the Control Stage PCB for connection.
There’s not much to say here as it’s a standard rectified output. 24V DC is a more than I wanted or needed but I struggled to find a transformer that would give an output closer to 15V and 3A.