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-loadThe 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-loadI 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/