Alex's Linear Power Supply Build Log


This is my new version of my bench power supply. I designed a few earlier that didn’t work and I had to do a lot of testing to get this to work so let me know if there is anything you like or dislike about the design. The board will show up on Monday and i will put it together and test it as soon as it get here.


Hi @mecheng1987,

I can’t read the schematic because it does not have enough resolution. Can you post a new one? Preferably a PDF?



That’s a good point. I always like to share schematics/files on GitHub if you think that might work for your project as well.


yea, Ill post it as a pdf. Not really big on git hub yet but I guess I should start.


Lab Bench Power Supply.pdf (122.5 KB)



 I am a digital guy, so a lot of this might be a bit off. I think it is great that you have designed your own power supply circuit. I have spent the last year or two trying to get a single phase to three phase power inverter to work! I don't see any problems, just a few things I would have chosen differently, plus one request for help.

Like I said I am more a digital guy and I have worked with AtMegas quite a bit and even I know what a 7805 is, although I keep having to look up 555 timer circuits to figure out how they work, and I am still iffy on opamps. But the rest of the devices I had to look up to help me figure out the circuit. Most of the other people here may not need that crutch but I still do. It would have made it easier for me to understand your circuit if the part types had been listed either next to the part or in a little table in the corner. Not necessary at all for production, but helpful posting for comments.

For the other readers like me who need help, U1 is a zener diode to make a reference voltage, U2 AtMega is a microcontroller, U3 ADS1015 is a 4 input, 12bit ADC with digital interface, U4 7805 is a 5V voltage regulator, U5 and 8 are precision dual opamps, U6 AD4895 is a low noise, high speed opamp, U7 TS 1102 (I think) High side current sense, U9 is a good old 555 timer. DS1 is the display, a 20 by 4 LCD with 4 bit interface.

It looks like the 555 is being used to debounce a switch input to the AtMega. Being a digital/software type I would have done the debounce in software and saved a few components. But doing it in hardware allows you to monitor the cleaned up switch pulse on a 'scope so it is really just a matter of personal preference.

The 12 bit ADS1015 gives very fine resolution to the voltage limit and current limit input potentiometers, but even the 10 bit ADC channels in the AtMega would give 15mV resolution on a 15V supply. However, for a bench power supply extra precision and resolution can become important.

I like the use of the TS1102. Using a high side current sense is more work, but I think much more precise and safer.

The MAX44248 opamps provide a very wide voltage range allowing for a fairly high input voltage. But even with the desire to make a very precise the very high precision of the MAX44248s and the AD4895 may be over kill for a power supply. However analog circuits are my weak point and the added cost seems to be pretty small so maybe this is just my digital background tripping me up again.

I did not see the actual linear power part of the circuit. I am assuming that is done somewhere else and the line labeled ‘VIN’ is really the linear power source feeding into the voltage and current limiting circuits and the display driver in this circuit diagram. I kept looking for how the variable voltage power was being generated and if you were using transistors to drop the voltage down from a transformer secondary just how big the heat sinks were going to be!

Over all I don’t see anything wrong or that will cause a problem, just places where I would have chosen differently. Good work!


It’s actually a thermocouple amplifier for temperature sensing.

A 555 is a bit of overkill to debounce a switch, I too would have done that in software.

What is the voltage range of this power supply? At first glance the values for your resistor divider seem incorrect.

Your regulator circuit becomes a current regulator when the current threshold is reached. I would add the option in software to instead act as an eFuse when the current limit was reached. Perhaps you already plan to but I don’t see any inputs to the processor other than the output enable or the serial port. A small keypad would allow adding options through software and put that processor to good use. In fact I would have used a couple of DACs in place of the two pots to make it completely digital. Something like the DAC7573 / DAC7574.

My only other question would be why use a relay to switch the output instead of another MOSFET?


So that is what the T/C stands for! However, I think the part number should be AD8495 instead of AD4895. I think the pinout matches that better, too. But if I was looking up the wrong amplifier I can see why I got so confused!

I had not thought of the keypad but you are right that it would allow a wider range of functions. Even just a rotary encoder knob with push button switch could be used to scroll down menus and sub-menus. You could even use the rotary function to dial in one or more numbers digitally. Use limited power supply display and the rest of the display for menus when the rotary is being used, and then after clicking ‘exit’ or a time delay with no changes flip back to full power supply display. Something like the EN11-HSM1BF20. And it would only require 3 more input pins on the AtMega.


Yes AD8495 is the correct part number, there is no AD4895.

A rotary encoder would work as well, some of them even have a push button built in.


ADA4895, Yes you were right again. I was slightly off and added a second ‘A’ to the part number. it is the AD_A_ 4895 that is the high precision, high speed, low noise amplifier I was initially looking at.

I thought about what menus to add. Choosing current limiting output voltage or acting as e-fuse is one. Then perhaps set start temp for fans, drop below this and shut down the fans, above this number shut the whole thing down. And then there is that RS232 interface. Even with a standard device ti connect there, I will bet that the time will come that you want to dynamically set the baud rate and character format. If the RS232 is to be used to computer control the power supply then you may need to move either the front panel voltage and current limit knobs into software, give the micro the ability to over ride base on the external RS232 commands. Or you could use it for data logging, time, actual voltage, actual current, panel Vref and Iref, and the thermocouple temperature and fan speeds.

But since this is replacing a ‘dumb’ box with two dials and one switch, two for the fancy models, it is hard to come up with a list of other functions.


Hey guys thanks for the input!

The working range of the power supply is 0-15V DC and 0-2.5A. That stems mostly from the fact that i am using a old power brick from a laptop power supply to switch the line voltage (115AC) to 19.8V DC and it has a rating of 2.5A.

I definitely will update the schematic with descriptions of the parts that’s a good idea especially if i am posting it. You’re right on the AD8495 I screwed up the part number when I was creating the part in KiCad, it is a thermocouple amplifier that I am using to monitor the heatsink temperature on the main Pass transistor to turn on the two small fans i have integrated into the case I built. I was thinking of using a couple of rotary encoder instead of the 10-turn pots that I have in the build but since I had them already and wanted to use them up I decided to go fully analog with the current limit and voltage limit functions and use the micro to simply drive the LCD and the Relay for the output enable.

The serial interface is just so I can use the Arduino crutch to program it as I wanted to do more hardware than programming on this build. The MAX 44248’s were again used cause I had them already from a previous build and are probably overkill. The main pass transistor for regulation was originally an IRF740 but I upgraded to the IRFP250 wich again is overkill as its a 200V 30A rated transistor in a larger package but its a common one in my parts bin and not obsolete like the IRF740.

I decided to use the relay instead of another transistor just because I could I suppose. There was a FET in the design at one point but I just picked the relay instead. no rhyme or reason that i can think of since I know the contact resistance of the relay is going to be the same thereabouts as the Rds on of a good FET.

The 555 is used as the de-bounce for the output enable switch so i can get a glean signal to the micro. I’ve tried software de-bouncing before in a very limited capacity and i just like hardware de-bouncing better. Just personal preference but I’m also a huge 555 fanboy so i end up just “finding” ways to incorporate it in a design if I can.


Also by the way, this is the case I built for it. I 3D printed it but of course my printers aren’t big enough to get the whole footprint of the case on the bed. I ended up having to print them in sections and epoxy them together.



The cse is very impressive, at least in a small resolution image taken fro one direction :stuck_out_tongue:. I agree that using 555 timer or software to debounce is purely persona preference, and if you are comfortable with them s you sound, then I can see why you are using it.

While touching up the part number on the thermocouple amp, you might also look at the high side current sensor, I think you have too many '1’s.

I you decide to add a single rotary quadrature encoder with included button and connect it to three unused ports on the micro you can ignore it for now and use it in the future if you think of anything. If you use 3 rotary encoders, then have the computer output to another high precision I2C DAC to drive the opamp circuits, it also allows for a whole new operating regime.

1) With the RS232 connection, you can connect the power supply to a data logger to keep track of typical voltage settings, current limits and actual current used, when the over current was needed, etc. 
2) Or you could turn it the other way around and have the computer control the power supply. This would be great for automated test sequences. 
3) With the voltage and current limits digitally input from 2 dedicated rotary encoders, the computer can generate the same numbers internally and then they are out through DACs to the analog circuits. Regardless of digital or analog setting of Vref and Iref so that you can tweak them whenever you want without having t go through menus,
4) And if you are going to use the RS232 port sooner or later you will wish you had a run time way of changing the interface options in order to establish a connection. 
5) There is also some internal memory on the AtMega that you have selected, you could even do simplified data logging internally, which mean you would have select what is most important and when it needs to be recorded. 
6) With the fans controlled by the micro using a thermocouple, you could also set the temp to turn on, the temp to turn off, and the never-to-exceed temp that will cause everything to stop                                                                                                                                     
7) You could even pre-program  on/off cycles, voltage levels, or even a low current one, ramp up until  desired voltage is reached, sustain and then ramp down and then off for delicate or complicated testing where you want both hands free.

None of this is expected on a simple, linear bench power supply, but you might take my suggestions and run with them and have a very flexible system for very few dollars more.


Looks awesome! Nice job on that case.



I like the idea of using the serial interface for data-logging to a PC that’s something i think i will implement when i get started on the firmware. The board for this schematic actually has just shown up so I’m not going to make any layout changes until I have this one tested and running but the tips you suggested are great to keep in mind for future projects. The fan control you were talking about is exactly what i had in mind too and an over temp limit that would just shut everything down too.

I’ll throw the board layout and some better pictures as soon as I can sorry about the crappy picture of the case.



I was too sleepy from not going to bed until after sunrise so I didn’t open the high res version of the image. I also started repeating myself in a couple of posts. Sorry about the repetitive posting. Still hard to fully appreciate from a single, isometric view.

I would recommend that you try tacking three wires onto pins 24, 25, 26. Since the rotary encoder can be panel mounted the three pull up resistors required could be mounted on the encoder itself. That way if you decide to try it, you can use the current board layout just with three ‘patch up’ wires connecting the rotary encoder plus internal switch. Since you already have the 40x4 display you would have enough to do half the things I suggested, plus selecting eFuse or voltage dropping current limit suggested by 1.21Gigwatts. Since the pins are currently unconnected, you can also just ignore the tacked on wires until later when you want to do a quick upgrade without having to do a new board layout!


Sorry for the double post. It feels like it has been several days with no one posting anything and I had another thought. Yes, sometimes it happens even to me :grinning:.

mecheng, if I am making a sub-unit of something, whether a subroutine in a program or a sub-circuit that goes into a larger project, I try to prepare for garbage coming in the inputs, even if the only thing they lead to is more of my stuff. Especially if the board is on its on PCB and plugs into the other(s). So for this board, since you are generating the high powered, variable voltage power elsewhere and then plugging it into this board, I would want to add something to protect this circuitry from being cross wired and getting a minus Vin instead of the plus Vin the rest of the circuitry appears to require. In the simplest case that might be just a power diode between ground and Vin to clamp a low going voltage. Or a better, more long term protection from putting a heavy current fuse right at the input of Vin, the diode to clamp the negative going voltage and draw the current needed to pop the fuse.

Clearly none of this is needed if the system always works right. But if you find it so useful you make more and use them for other applications, it will probably happen eventually, and it is cheaper to replace fuses than high-side current sensors or precision opamps. But once again, this suggestion is purely a matter of personal preference.


Definitely putting some input protection is a good idea. This board in particular isn’t going to be used for a modular design but it could be in the future. I haven’t posted in a few days as I just traveled back home and have been testing the board after assembly. Found a few screw ups in the layout and I think I fried my external ADC in the process, input 3 of the four seems latched up to the 5V rail for some reason. I think I’ve got the analog part of the circuit working right at this point. Going to work on the rest of the digital stuff to make sure there’s nothing else haywire before I get a replacement for the ADC. here is the board sitting inside the case. I had it out on the bench for most of the testing, just put it back in the case to check clearances.


Well, I wanted to see a big heat sink and there it is! A VERY big heat sink. Nice clean layout. You have lef lots of room around the component, not squashed them all together like normally do. Also I see you are much more comfortable with surface mount. I agree that they look snazzy and don’t take up much board space, but I have troubles with them half the times I use them, so I have remained and old fashioned, through-hole guy. I see you have already made the first alterations in the PCB wiring. It could be worse. I used the wrong footprint for the main switching power MOSFETs and had to twist the leads of all 6 of them to get the signals in the right places. Of course, if that had been surface mount and I made the same mistake, it would be almost impossible to fix without scraping the board and starting over with a new PCB.

Good luck on the rest of the testing.


I’ve done the same thing with so-8 FETS and it sucks trying to cut traces and bodge wire the pads to the right traces! :smile: