My Lab PSU project - open source! - Page 1
Forum section: electronics / projects

author: nemail2
author_rank: Regular Contributor
timestamp: November 17, 2018, 02:22:07 am
content: HiI wanted to share my Lab PSU project with you because some of you helped me with it and also I acquired a huge part of my knowledge from EEVBlog.Specs:0 - 20.48V output controllable in 5mV steps0 - 4096 mA output controllable in 1mA stepsAround 0.1% accuracy due to high accuracy components12 Bit DAC12 Bit ADCLow Ripple, Low NoiseSeparate linear, software-adjustable voltage regulator for fan speed control to avoid high frequency switching noise (PWM)One Board solution (toroidal transformator not onboard)Optional Front Panel for Display, rotary encoder, button and LED mountingFast UI thanks to Teensy's 120 MHz frequencyHeader for Wiznet W5500 Ethernet module (SPI interface header, basically, plus some I/O pins)https://github.com/mamama1/LabPSU_DarlingtonTook me about half a year to develop this in my spare time + write some code (yet to be released). However the code really isn't polished and neither it is very advanced yet. But it works quite well! Nice additions like velocity control for the rotary encoder are missing, unfortunately.Suggestions, Issues on GitHub, Pull requests are very welcome!

author: t1d
author_rank: Super Contributor
timestamp: November 17, 2018, 02:43:10 am
content: Nice job. I did not find a schematic drawing, on the link. I guess I missed it. Please post it, on this thread.

author: nemail2
author_rank: Regular Contributor
timestamp: November 17, 2018, 02:47:06 am
content: Thanks,schematic is here:https://github.com/mamama1/LabPSU_Darlington/tree/master/HardwareOr did you mean as PDF or PNG?Here you go (also uploaded to github):

author: t1d
author_rank: Super Contributor
timestamp: November 17, 2018, 03:13:09 am
content: Quote from: nemail2 on November 17, 2018, 02:47:06 amAhh..., that's much better; thank you.Nice schematic. What program did you use, to draw it?

author: nemail2
author_rank: Regular Contributor
timestamp: November 17, 2018, 10:59:06 am
content: Thanks but to be honest I don't like it very much. I'm no professional but I think this is rather unstructured and how you doin, however not as bad as the Haasoscop one'shttps://youtu.be/2Z3URu9vQBk?t=1405I made everything with Eagle.

author: Kleinstein
author_rank: Super Contributor
timestamp: November 17, 2018, 12:35:01 pm
content: The voltage regulation part looks OK. However the transistor T4 looks a little odd. I kind of understand that it helps to provide a little extra current from the OP if the voltage is high. So it might be OK, but it's unusual. I don't think R24 parallel to the transistor is optional.The most critical would be likely a low output current and with a low ESR cap (e.g. 2-20 µF film type) at the output.The maximum output voltage is rather limited due to the low supply to the OPs. Why not give at least 18 V to at least the critical OPs ?However the current regulation part looks like it could be rather slow (because of the may4080) and possibly could oscillate. Here the critical load would be an inductive load, like a transformer winding at low current. With the 2 extra minimum current sinks, the current regulation is also not really precise, as these currents are also included and especially the sink with T8 is not very stable and the sink with IC9 (LM334) may not work well at low voltage.The slow current limit might not be a sufficient short circuit protection.0.1 Ohms emitter resistors for the 2N3055 may be a little on the low side and could require matched transistors to get good load sharing. One might still get away with it at the low voltage. The usual value is more like 0.22-0.33 ohms.

author: nemail2
author_rank: Regular Contributor
timestamp: November 17, 2018, 01:39:01 pm
content: Hi kleinstein, nice to read you again and thanks for your feedback!Quote from: Kleinstein on November 17, 2018, 12:35:01 pmI used T4 previously but now I'm not populating it since 2 revisions of the board. In fact, T4 is optional and R24 is mandatory. Until now, I didn't see any issues with this.Quote from: Kleinstein on November 17, 2018, 12:35:01 pmWill take look if I have one, but more likely I'll find a ceramic type or low ESR electrolytic one in my parts collection... Nice idea!Quote from: Kleinstein on November 17, 2018, 12:35:01 pmThat's due to the specs I decided to go for. First I wanted 0-30V but soon realized that this would need a quite larger amount of effort to build. So I finally decided to go with 0-12V and that's why everything is how it is. I use a 2x9V toroidal transformer which gives me exactly the voltages I need to keep this working at high currents and even if mains voltage drops within a certain margin.If I make another PSU at some point, I'll probably go with 0-24V but then I'll have to overthink some of the parts and probably also do automatic transformer tap switching or implement a tracking (switching) pre-regulator.I guess I could have specced everything up to make it go to let's say 18V or something quite easily but I didn't see any point in this (at least for my use cases) so I decided to go for plain 12V (however it goes up to about 13V even under load anyway).Quote from: Kleinstein on November 17, 2018, 12:35:01 pmYeah that's true, I wouldn't try to use CC mode for powering a single LED. The LED probably would be dead until the current limitation kicks in. It reacts in somewhere about 2ms which is rather slow. I was wondering why the MAX4080 is so slow and whether there are faster ICs or whether this would be faster with descrete opamps. Also the output cap slows CC mode down. I'll happily take suggestions on how to make this faster (however I'd love suggestions which don't involve very big changes even more :-D).I'll try inductive loads, didn't really do that yet.Quote from: Kleinstein on November 17, 2018, 12:35:01 pmI only use the one with the transistor and the zener because the LM334 didn't work well at low voltages as you correctly identified. I did leave the footprint in the design to be able to choose but it is unpopulated as of now. The zener gets quite hot, around 70 °C but it is stable there.Yes, it is not very precise. CC mode or current measuring is a few mA off always, but most of the time about 10mA. Suggestions very welcome.Quote from: Kleinstein on November 17, 2018, 12:35:01 pmI'm not sure whether I tested this properly but shorting the outputs at various voltages didn't seem to do any harm to the PSU. It went into CC mode, at lower voltages obviously tended to heat up more and at low voltages eventually turned off the outputs due to overtemperature condition (controlled via software, measured via NTC) which is currently set to 80 °C at one of the TIP3055's.At higher voltages (like 4-5V), where the NPNs don't have to burn so much power, the PSU stays happily for hours with a short circuit on the output.Quote from: Kleinstein on November 17, 2018, 12:35:01 pmMaybe I was lucky but in the last 3 iterations of this, the NPNs got nearly identically warm. Sure this will also be due to the shared heatsink so they heat each other up but during fast temperature risings (faster than the heat can spread through the heatsink), they were nearly identically warm.In the latest iteration I even used 82mOhm resistors because the 100mOhm ones weren't available. Until now, no issues as it seems.I didn't want them to heat up too much because of temperature drift and even more waste of energy and also because it is hard to get high power resistors with a relatively small footprint.But I'll keep that in mind, if I ever encounter issues with load sharing.

author: mariush
author_rank: Super Contributor
timestamp: November 17, 2018, 03:08:03 pm
content: Just at a very brief look of the schematicI'm not liking all the voltage regulators in to220 or whatever footprint just sitting there without heatsink or anything.... either use some dpak or something to dissipate heat in the circuit board or leave room for heatsink.I'm also not a fan of seeing 4 different regulators... for example I see 2 x 7815, 1 x 7812 and 1 x LD33V ... it would be cheaper to buy 4 of the same regulator instead separate regulators... feedback/adjust resistors are also cheap. And maybe get something with built in protections, so you won't have to puke in4007 all over the board.You can get LD1086 or LD1085 in d2pack , or LM317P (in to220 with insulated backing), so you can simply put all 4 regulators on a wide heatsink without messing around with insulating sheets etcAnd why IC1 and 15v for the fan? Why not use regular 12v and 12v fans? If that transistor t9 shorts out or whatever, you're blowing up the fan with 15v when you can just have a 12v input and leave the fan running at 11v or whatever (just use a better fan with higher rpm if needed)You got a bunch of 10uf ceramics which besides potentially becoming expensive these days, may be borderline enough for those linear regulators. Some may oscillate at certain loads with so little esr and so little capacitance on output. It's probably fine, but I don't see why you couldn't just go with a cheap 10-100uF electrolytic, it's not like they'd blow up or something.And BUJ303B,127 .... 400v 5A to-220 npn transistor for fan control? couldn't get a sot223 or something, or you wanted this to be 100% through hole?

author: Kleinstein
author_rank: Super Contributor
timestamp: November 17, 2018, 03:12:52 pm
content: It should be possible to get a faster current sense amplifier with a separate PNP (or P FET) and OP. However besides the current sense amplifier, there is also the compensation at the OP that can take quite some time, as initially the OPs output would be all the way up and the 1 nF capacitor correspondingly charged quite a lot. There are a few possible ways to improve on this:A diode in parallel to R7. The current read point should move to the other side of R7 anyway.It may also be possible to move C5 to the other side of D1 - this might need some extra small capacitor directly at the OP.Getting much better current precision without a larger change is difficult, as the minimum load current can not be separated at the collector side. The more normal way would be to have the shunt on the low side and than change the reference part a little. This might still have the reference current flowing through the shunt, but this current is at least more constant.For testing a very large (e.g. 5000 µF) low ESR electrolytic is also a difficult case for the regulator. Even some commercial supplies don't like this very much.The transistor T4 might help to get a slightly higher maximum output voltage as it allows extra current from the OP, when at a high voltage. With the parallel resistor there should be no problem with the transistor if the R1 value fits (e.g. R1 > R24 * Hfe). With R24 that small one might have to make sure the OP for the current limit can bring the voltage all the way down and has enough driving power, as the 1 K resistor might deliver up to about 15 mA. So it might take a higher value for R24 when the voltage gets higher.For better load sharing one could combine T3 and T7 to a single transistor and only have the TIP3055 in parallel. Getting the transistors from the same batch might be good enough.

author: nemail2
author_rank: Regular Contributor
timestamp: November 17, 2018, 07:59:25 pm
content: Hi,thanks for your suggestions, let me answer below.Quote from: mariush on November 17, 2018, 03:08:03 pmThe ones which get warm have enough space for small heatsinks which perfectly suffice:https://www.digikey.com/product-detail/en/aavid-thermal-division-of-boyd-corporation/576802B00000G/HS121-ND/8707Quote from: mariush on November 17, 2018, 03:08:03 pmI've got a separate 15V regulator for the opamp supplies to make sure that this rail stays clear from any noise. the second 15V regulator is the pre-regulator for the fan control so pretty noisy and also it gehts quite warm.Integrated protection is interesting, didn't know that regulators exist which have this.regarding the LM317 or LD108x, they are both more expensive that the L78xx series, at least at Mouser where I order and in low volumes plus I'd need more components (voltage divider resistors). Generally a good idea, but for my use case it doesn't seem to really fit.Quote from: mariush on November 17, 2018, 03:08:03 pmI am using a 12V fan. The 7815 is there to preregulate the input voltage of about 18-20V to 15V so the BUJ303B doesn't have to burn so much power. Load/heat sharing, so to say. It works reasonably well, both ICs get quite warm but not too hot.Don't know whether you recognized it or not: the 15V regulator + the BUJ303B are part of a linear voltage control circuit for regulating the fans speed in a linear way using voltage instead of PWM. Two reasons: 1) to support fans which are not controllable via PWM and 2) to not introduce PWM noise within the PSU. I indeed use PWM which is filtered by an RC filter which then controls an LM358 and the BUJ303B but the PWM trace is very short and limited to the digital ground plane and digital part of the PCB which is quite noisy anyway.Quote from: mariush on November 17, 2018, 03:08:03 pmAs far as I remember I just did stick to the datasheets of the ICs where I put the 10µ MLCCs...Quote from: mariush on November 17, 2018, 03:08:03 pmyes, as mentioned above - it is for linear voltage regulated fan speed control. I wanted it to be TO220 size at least to ease heat dissipation. This transistor is not too expensive, approximately just as expensive as any other common TO220 voltage regulator.I maybe would have been able to find a cheaper part here but not much cheaper I guess and as I'm not building this in volume and compared to the prices of other components in the PSU I found it negligible and didn't want to spend more of my spare time for part search in this case.But: It is open source, feel free to make suggestions, post issues or pull requests on github, or even fork it if you like to!PS: I don't want to convince others of my opinion, only starting discussions here. Drown me in arguments and I'll eventually change my mind!

author: nemail2
author_rank: Regular Contributor
timestamp: November 17, 2018, 09:30:04 pm
content: Quote from: Kleinstein on November 17, 2018, 03:12:52 pmdo you have an example for this?Quote from: Kleinstein on November 17, 2018, 03:12:52 pmwhat would the diode do? this is copied 1:1 from daves µsupply and I guess he put R7 in to slow things down a bit. what do you mean by "the current read point should move to the other side of R7 anyway" and how would that be achieved using the parallel diode?Quote from: Kleinstein on November 17, 2018, 03:12:52 pmhuh? how would that look like?Quote from: Kleinstein on November 17, 2018, 03:12:52 pmunderstood. the issue is that this is my first "more complex" PSU design and I'm happy that I kind of understood most of the aspects here. Low side current shunt measuring is something I have absolutely no idea of and I'd lack of any point to start from.Quote from: Kleinstein on November 17, 2018, 03:12:52 pmWhat about a 5F supercap? :-DQuote from: Kleinstein on November 17, 2018, 03:12:52 pmSo far all good, getting about 13V output voltage, even under full load, thats even over spec.I have sized R24 accordingly so enough power remains to bring the voltage down in CC mode.Quote from: Kleinstein on November 17, 2018, 03:12:52 pmI wasn't sure about this so I decided to put two Darlingtons in parallel. I could leave both BD139 footprints in and connect one of them to both of the TIP3055 and put in a jumper to disconnect one of the TIP3055 from the BD139 in my next iteration of the board so I could try both variants without having to reproduce the board if it doesn't work well.You won't hear any objections from me if I can save one of those expensive puppies ;-)

author: Kleinstein
author_rank: Super Contributor
timestamp: November 17, 2018, 10:37:04 pm
content: The BD139 should not be so expensive. With not so much power a BD139 should be sufficient to drive 2 of the TIP3055.A diode parallel to R7 would speed up the phase when die current is significant higher than normal. The compensation would be back to normal, slow, when closer. So this should not have much effect on stability. It it more like a simple bodge type modification to speed up the reaction in case of a short, it won't save a LED, but it's only a diode (e.g. 1N4148) to add.Reading the actual current should be at the 1 K resistor and thus the other end of R7 anyway, even in the otherwise unmodified circuit.At the OPs input the current reading would be off during transients. The diode would change that error, but the current reading is not very accurate anyway.With only 15 V supply for the OP, T4 might not be needed. It might give some 0.5 V higher maximum output voltage at high current.Going to low side current measurement (e.g. a shunt on the negative terminal )would be a major change in the circuit.The max4080 is more like a low power version. One can build the max4080 internal circuit with a P-FET and OP with a higher speed. Something like 3-5 times the speed should be relatively easy.

author: nemail2
author_rank: Regular Contributor
timestamp: November 19, 2018, 12:31:20 am
content: ok just a quick update plus photos :-)i have to work on the suggestions and try different things, in the meantime enjoy a photo of the actually not so bad measurement and control performance :-) please be aware that I didn't have the correct high precision low ppm resistors for all the adc voltage dividers and for the opamp feedback loops so i had to put in what i found at home (paralleling and serialing resistor values) so precision should be better with the actual high precision parts.and the second photo, a picture of the board, in the middle of soldering. takes me 3 hours to solder that thing every time. i have to get a fume how do you call it ... purifier?https://owncloud.ne-mail.net/s/S3N7zyTjbtzSXcfhttps://owncloud.ne-mail.net/s/Gxq6jTW28g2wwTN

author: wasyoungonce
author_rank: Frequent Contributor
timestamp: November 19, 2018, 12:58:58 am
content: never mind...

author: nemail2
author_rank: Regular Contributor
timestamp: November 19, 2018, 08:09:46 pm
content: Hiok, got some time again now.Quote from: Kleinstein on November 17, 2018, 10:37:04 pmTrue, it is about EUR 0,50. I had in mind it was more expensive. I will leave both footprints for both BD139 in but connect both emitters through a jumper so I can try it out without having to redo the PCB if it doesn't work.Quote from: Kleinstein on November 17, 2018, 10:37:04 pmI think I'm getting it now.. maybe... As soon as the forward voltage is reached, the diode conducts without any resistance (in opposite to R7 which will always have 1k), am I correct?Forward voltage is about 0.7V so that would be about 1.4A with the MAX4080F @ 0.1 Ohm shunt where the diode starts conducting and speeds up regulation - right?Quote from: Kleinstein on November 17, 2018, 10:37:04 pmIt doesn't seem to be too bad currently, or am I wrong here (referring to the photo in my last post)? You mean the opamps input should be connected directly to the MAX4080 output, by saying "the other end of R7 anyway"?Quote from: Kleinstein on November 17, 2018, 10:37:04 pmI still have the footprint in the board so I can always populate T4.Quote from: Kleinstein on November 17, 2018, 10:37:04 pmGuess it would make more sense to recreate the whole thing if going for low side current measurement...Quote from: Kleinstein on November 17, 2018, 10:37:04 pmYou mean like this:https://www.analog.com/-/media/analog/en/landing-pages/technical-articles/robust-high-voltage-over-the-top-op-amps-maintain-high-input-impedance-with-inputs-driven-apart-or-w/32025.png?la=en&h=300or this:https://www.analog.com/-/media/analog/en/landing-pages/technical-articles/robust-high-voltage-over-the-top-op-amps-maintain-high-input-impedance-with-inputs-driven-apart-or-w/32024.png?la=en&h=300?

author: Kleinstein
author_rank: Super Contributor
timestamp: November 20, 2018, 07:08:20 am
content: The current measurement at the "wrong" side of R7 kind of worked, because there is only the capacitor and OP input. So on average not much current is flowing and changing the average current. However transients would be better at the other side.I have not checked the scale factor for the MX4080. So the 1.4 A for the point where the diode starts to speed up the current regulation might be right, though it would be rather high. I has expected a higher voltage at the current signal, as there is an extra amplification stage for the set point. If that low, one should get away without the amplification stage.Going to a low side shunt would require a whole new design. It could be similar, but would still quite different, e.g. a new board design.The Max4080 replacement circuit is about that way. One would not need the 2. nd OP, as the signal can already be large enough.

author: nemail2
author_rank: Regular Contributor
timestamp: November 20, 2018, 07:28:03 am
content: Quote from: Kleinstein on November 20, 2018, 07:08:20 amThat's what I was thinking, almost no current, so almost no voltage drop. You can't beat ohm's law :-) If I'd measure at the other side of R7, I could remove it completely, it would be absolutely pointless then. Dave included R7 in his µSupply to slow the readings down on purpose I think.Quote from: Kleinstein on November 20, 2018, 07:08:20 amThe MAX4080F has a gain of 5 so at a 100mOhm shunt I'll get 0.5V at the output of the MAX4080F @ 1A across the shunt.A diode with a lower forward voltage would help to start speeding up things earlier, i guess? Or I could try and remove the resistor completely.The amplification stage is there because the DAC of the Teensy 3.5 is only capable of outputting 1,195V if using its internal reference (no way via silicon to use the external reference, that's only for the ADC *sigh*). So I had to up the 1,195V with an opamp because I need 2.048V for the desired 4.096A max output current due to the MAX4080F's gain.Quote from: Kleinstein on November 20, 2018, 07:08:20 amYeah, I'll take that (new) challenge at some point for sure and try to build one, just because I'm eager to learn. But I won't ditch this whole design as it works quite well otherwise. There is no reason for not using this PSU for general purpose @ home for hobby work... It is not THAT bad, I guess.Quote from: Kleinstein on November 20, 2018, 07:08:20 amI did find this replacement circuit months ago but I did go with the MAX4080 because it was less complicated to build up (only one part) and because it was cheaper. I might try this replacement circuit in LTSpice at some point and maybe even build it up on a PCB if you're saying that it would be much faster.Anyway - I'm quite happy with this. I didn't learn anything of what I needed to build the PSU in school or somewhere else, just started with an Arduino Uno and a few LEDs two years ago. So please excuse the schematic style, amateur-ish routing and PCB layout and stupid questions :-)Thanks for your advice so far! I'm curious why this gets so little attention in such a huge forum but maybe it is just because it is the n-th self-made PSU....

author: Kleinstein
author_rank: Super Contributor
timestamp: November 20, 2018, 02:55:11 pm
content: The gain of the max4080 depends on the load resistor (1 K in the schematics).The purpose of the R7 is to slow down the response of the control loop enough to make it stable. So one would normally need that resistance and can not just remove it - the 1 K resistance to ground can take that function too, as it set the impedance for the current signal. So in some respect R7 is responsible for the slow response of the current limit, but the loop kind of needs to be slow, because max4080 is relatively slow. The simple, single pole compensation assumes one rather slow element in the loop and the next slower element (in this case the max4080) would determine how slow it has to be to make it overall stable.Besides the current sense, there is another point that makes the response of the current control slow: the output stage is low impedance and thus on a short the control signal has to follow the dropping voltage, just to keep the current constant.The emitter follower output stage make the voltage control relatively easy, but current control difficult.The low maximum DAC output voltage explains the need for the amplification.