This is my planned concept of a simple DIY Electronic load ...any remarks or suggestions are highly welcome.
I'm posting it here for the community to possibly check for issues I might have missed or even not thought of
and for inspiration to others.
I will publish the final schematic and resources once I make at least a working proof of concept on a breadboard/perfboard (will surely take some time).
Heavily inspired by:https://juangg-projects.blogspot.com/2019/02/arduino-based-electronic-load.htmlhttps://www.instructables.com/id/DIY-Adjustable-Constant-Load-Current-Power/Similar thread:
https://www.eevblog.com/forum/projects/diy-electronic-load-project-thread-d/Main specs:- 24V max, <6A max, (withstand continuous 5A@12V; used heatsink limited)
- generic Arduino Nano controlled
- use of external ADC & DAC modules for improved resolution/precision and simplification
- temperature limit control and active (pwm) fan cooling
- simple UI - small 0.96" 128x64 OLED screen, one button and a rotary encoder
The code / UI part is not ready nor being prepared yet. But that's a relatively** easy part...
Planned vision:- simple menu, operated by a rotary enc. + its button, and 1 extra button
- display will show: mode and current+set: A, V, W, T, +Temp.
- modes: CC, CP, Capacity, *Resistance?
- settings for respective modes: Amps, (m)Watts, Capacity, Time?
- protection settings for max limits to shut off at: A, V, W, T, +Temp.
- maybe storing last settings in EEPROM
I want to design a reliable circuit first...
So here is a draft:https://ibb.co/zFKLnpvSorry for the usage of many connectors and headers instead of direct lines or specific parts and modules, but the circuit is designed directly so that a PCB can be made easily (spot the logo in the schematic
).
The main part is built around a logic level MOSFET driven by OP amps - a well-known concept
First block (U1.1) drives the fet according to sensed voltage from a shunt (array of 1R/1W --> more precise 0.1R@10W), which is meant to provide 1V@10A -read via a 10k resistor (R11)
[necessary?], and a the set voltage on its other input.
C1 is supposed to improve stability
[maybe someone will comment if this is necessary].
The desired current (input voltage) is controlled by the second block (U1.2) -a voltage follower with a approx. 1/9 divider (R12+R13) - that's supposed to go up to 1/9 * 5V = 0.555V --> so up to 5.5Amps max load. This is driven either from the MCU by the MCP4725 module 12bit DAC (#IO3), via a 1k resistor (R16) -no low pass filter needed because of using the DAC, or an optional external source (H2)
[someone may comment on options or the protection diodes for details], selected by a switch (P4).
The current reading is obviously fed into the MCU - but first it's 4x amplified by the third block (U1.3) for improved resolution. That amplified voltage (0.555 * 4 = 2.22V @max current of 5.5A) is fed to a ADS1115 module 16bit ADC (#IO1).
A optional connector (H1) for external reading can be placed too.
And to make a use of the fourth block (not really necessary), we buffer the connected voltage sensed by a 1/5.3 divider (R17+R18) - that defines the max limit of 26.5V on the input transformed to 5V on the divider. This is then fed (#IO2) also to the ADC module, and an optional external output also (H3).
This all needs just some fine calibration in software naturally.
So to make it a complete description of the core part, the tested source connects to P1. Those optional P2 (for verification/test multimeter) and P3 (for a fuse) can be omitted.
Temperature (on the heatsink) is sensed by a simple NTC in a divider configuration (I may modify this later), and fed to the ADC module (#IO4). To simplify this part and avoid calibration + calculations, I'm planning to measure the voltage at room temperature and when dipped in water boiled to 75C, then just map() it in software to pwm %.
A digital voltage sensor can be used instead, just mind the max temp. specifics.
The heat-sink fan will be pwm driven too (about 35-75C -> 20-100%). I hope it can work in a basic Arduino pwm mode (@490Hz I belive) without too much noise.
Rest of the wiring consists of a simple 5V power input with basic protection and filtering, and the Nano with a rotary encoder + 1 button. The external modules and a display are attached to connectors, all running on I2c (with pullups if needed: R20+R21).
I have not calculated the required heat-sink, but the coarsely estimated 70W will require some decent dissipation, the fan should help to reduce its size thou.
(EDIT: not sure if the single IRLZ44 is suitable for the job and won't get a bit overloaded at that planned maximum power, might be safer not running it continuously at more than 2A in this setup)Thanks