| Electronics > Projects, Designs, and Technical Stuff |
| Programmable Electronic Load, 0-5A |
| (1/9) > >> |
| JeanLeMotan:
Hi, This is my first post here although I've been reading a LOT of topics along the years. A few months ago I needed an electronic load to characterize a CR123A battery used in some temp/humidity sensors with a very low duty cycle. I needed an accurate discharge curve to estimate the battery life more accurately. Since I was also discovering opamps at the time and how magical they are, I decided to have a go at designing an electronic load. This is what I ended up with 2 months later. Specs & features: 0-5A (depends on the heatsink and mosfet really) 1mA resolution 0-30V, can measure also down to -30V 1mV resolution Reverse polarity protection 4 wire measurements Autoranging for both V&A using the ADS1115 PGA to get the max resolution/accuracy I can get from that part Temperature sensing Fan control Energy counting Fully programmable: it can execute a programmed sequence of operations and output the data through serial CSV data output on the serial port The schematic of the analog part is here: https://easyeda.com/jeanleflambeur/electronic-load The digital part is not on easy-eda yet but I will put it there. It's pretty simple and it involves an ESP32, a OLED screen, a rotary encoder and momentary switch. I have a 3d printed case as well and the final produce looks like in the attachment pic. The schematic has several blocks: * The voltmeter, using a TL071 in as a differential amplifier outputs a 0 - 3.3V for a voltage range of -30 - 30V. * The ammeter, using another TL071 in as a non-inverting amplifier with ~5x gain. * PWM vref which takes a 0-3.3V PWM signal and low-pass filters it into oblivion for an analog 0-1V. There is an off signal as well here. * The load control using the last TL071 with voltage offset trimming so I can get down to 0mA. This takes the shunt and VREF as inputs. * The Load section: this is just a mosfet (or 2 but with really basic/non-existent balancing). For now I'm using a IRFB3006 because I had it laying around but I have a pair of IXTP80N075L2-ND on the way from Digikey for proper linear MOSFETs * ADC: an ADS1115 16 bit adc reads a differential voltage from the voltmeter and a single ended voltage from the ammeter. Nothing special here, just the datasheet filtering There is some regulation as well as the board needs +/- 12V which I generate from an ebay module from the 3.3V of the ESP32 and that's it. the rest is software which is on github: https://github.com/jeanleflambeur/electronic-load I know that I don't have any lead inductance protection - I found about that from this forum too late and I'm sure I made many mistakes. This is my first use of op-amps and my 3rd electronics project overall, with the other 2 being fully digital. Right now the load is characterizing my battery running this little program: S0.05 L1 D500 L0 D5000 R1000000 Which translates to this: 1. Set target current to 0.05A 2. Load on 3. Delay 0.5s 4. Load off 5. Delay 5s 6. Repeat 1000000 times The software supports up to 10 stored programs (completely arbitrary limit) that can call each other. The programming is done from the serial console by just typing the program string directly. There is a calibration menu as well for the voltmeter, the ammeter and the PWM voltage. Unfortunately calibrating it requires access to an bench power supply to generate some test voltages and currents. I think this can be worked around by reworking the calibration section. There are some issues as well: 1. The reverse polarity protection MOSFET gets hot when the load voltage drops below 4V and the currents are significant (>1A). I believe this is due to the MOSFET getting down to the linear region and becomes a resistor. 2. The max current at low voltages is limited: with the current mosfets, at 1V I can only get 1.4A. 3. The 3.3V regulator on the ESP32 I have is not a LDO and when powering the load from USB (the intended way) it doesn't really regulate: there is a drop of around 400mV in a schottky diode on the board, and the AMS1117 doesn't have enough headroom for a stable 3.3V. Since the PWM reference is powered from this regulator, it's unstable. I have some pin compatible LDOs on the way to replace the AMS1117 and solve this. I will appreciate any comments/suggestions/improvements etc regarding the schematic, PCB and software. [Edit] REV3 topic here: https://www.eevblog.com/forum/projects/jlm-electronic-load-0-30v-0-4a-1ma1ma-resolution/ |
| JeanLeMotan:
Well, I guess there's either not a lot of interest in dummy loads, or the topic has already been discussed too much already :) |
| Mazo:
I didn't see accuracy specs or resistor tolerance shown so your diff amp might have a pretty bad CMRR if using 5% ones |
| ogden:
--- Quote from: JeanLeMotan on February 21, 2019, 11:29:12 pm ---1. The reverse polarity protection MOSFET gets hot when the load voltage drops below 4V and the currents are significant (>1A). I believe this is due to the MOSFET getting down to the linear region and becomes a resistor. --- End quote --- You are correct about linear region. Either drop idea of reverse polarity protection or redesign it. In short: add opamp as polarity sense and mosfet drive device :) --- Quote ---2. The max current at low voltages is limited: with the current mosfets, at 1V I can only get 1.4A. --- End quote --- You have 0.1R sense resistor, right? It means that at 5A burden voltage is 0.5V. Do not see any problem. Reverse polarity protection at work here? While you have no good reverse protection - short it while you work on other parts of the design. --- Quote ---3. The 3.3V regulator on the ESP32 I have is not a LDO and when powering the load from USB (the intended way) it doesn't really regulate --- End quote --- Just add proper voltage reference and analog switch or CMOS buffer, powered from it. --- Quote ---I will appreciate any comments/suggestions/improvements etc regarding the schematic, PCB and software. --- End quote --- You have no current balancing resistors. It could be so that one mosfet never opens while other have to dissipate all the load. You maybe got ideal pair, others that follow your design may not be so lucky. Other option : you don't know (yet) how your mosfets balance current. |
| JeanLeMotan:
--- Quote from: ogden on February 23, 2019, 12:34:54 pm ---You are correct about linear region. Either drop idea of reverse polarity protection or redesign it. In short: add opamp as polarity sense and mosfet drive device :) --- End quote --- It makes sense, like this the mosfet is always fully switched on/off by the opamp and never in the linear region. --- Quote from: ogden on February 23, 2019, 12:34:54 pm ---You have 0.1R sense resistor, right? It means that at 5A burden voltage is 0.5V. Do not see any problem. Reverse polarity protection at work here? While you have no good reverse protection - short it while you work on other parts of the design. --- End quote --- What's even weirder is that this max current at low voltage is influenced by the mosfets used. With other mosfets I got lower current. Isn't this caused by the Id <-> Vds curves in the datasheet? In any case, I remove the reverse polarity protection and see if it's fixed. What would happen to the load mosfets if I apply reverse polarity without any protection? --- Quote from: ogden on February 23, 2019, 12:34:54 pm ---Just add proper voltage reference and analog switch or CMOS buffer, powered from it. --- End quote --- Analog switch or cmos buffer? Gotta look up these ones. --- Quote from: ogden on February 23, 2019, 12:34:54 pm ---You have no current balancing resistors. It could be so that one mosfet never opens while other have to dissipate all the load. You maybe got ideal pair, others that follow your design may not be so lucky. Other option : you don't know (yet) how your mosfets balance current. --- End quote --- So just adding a low value resistor in the source of the MOSFET? I also saw this design that uses a BJT transistor: https://youtu.be/9auu8hH4IPM?list=PLUMG8JNssPPzbr4LydbTcBrhoPlemu5Dt&t=457 Thanks a lot for the advice. |
| Navigation |
| Message Index |
| Next page |