7/19/2018 UPDATE:
Here is my final schematic and board layout for this project. Again this project is just a test board to allow me to evaluate the design and develop software. It by no means is a final product.
1/1/2019 UPDATE:
I've tested my design below (PCB v0.1) and its pretty successful for a first revision board. Some stats:
1. 0.02A/us Slew Rate achieved. (estimated 0.5A/us slew rate for next revision)
2. Voltage precision (Noise Free), auto ranging w/ 2 ranges, 32SPS with 8SPS lower noise option :
0.050-12.000V (0.39mV ADC LSB)
12.00 - 100.00V (3.1mV ADC LSB)
Accuracy of course depends on your calibration equipment. I was able to calibrate mine against an AliXpress LM399H Reference. Voltage is accurate to well within 2LSB (2mV @0-12V, 20mW @ 0-100V)
3. Current measurement (noise free), auto ranging w/ 2 ranges, 32SPS with 8SPS lower noise option :
0.0050 - 1.5000A (0.000048A ADC LSB)
1.500 - 10.000A (0.00039A ADC LSB)
I calibrated against a $30, 0.25% chassis mounted shunt, and its accurate within the error of my best multimeter (500,000 count meter).
4. Temperature
Fan speed varied between 30-100% between 40C and 60C
50W @ 48C @ 64% fan speed
100W @ 56C @ 83% fan speed
150W @ 66C @ 100% fan speed
200W @ 77C @ 100% fan speed
(thermistor calibrated against a thermocouple, so really only 1C accuracy
6. Changes to next Revision:
a. Deleting buck-boost converter (too noisy)
b. Increasing voltage to 150V max (Change TVS diode and add a 3rd voltage range when > 100V)
c. LM77805 negative voltage reference used to ensure op amp could cut off all current. Was implemented wrong in v0.1PCB, but is not needed as the MCP4735 DAC is able to choke off all current down to about 100uA.
d. Unused 2 channels on expensive 4chan op amp (AD8630) changed to 2 channels (AD8630)
e. Expensive precision op amp (AD8630) unnecessarily used for current control. Changed to high current (5mA vs 250mA) op amp (AD8534). Should increase slew rate from 0.02A/us to ~0.5A/us
f. Lower noise to DAC and ADC power by using ferrite beads, TL431 (technically TL432) and optimizing AGND
g. Error in 12V TVS diode placement
h. Misc: Cheaper smd nfet to turn fan on/off, buzzer added, removal of unnecessary bypass caps, 62K resistor added to non-inverting terminal of current op amp for input bias current balancing, deletion of potentiometer for DAC output, resistors added to data lines for
I'm working on optimizing the software and adding in the interface, as I only have a serial interface for testing at the moment. This design should be able to scale up easily by adding a 2nd heat sink for about 400W and 32A by changing out the current shunt(1mR vs 10mR).
-------------------------------------------
I wasn't able to find any electronic load schematic online that was similar enough to how commercial loads are constructed so I spent the past 4 months designing my own. Any open source load schematic / project on the web that I've found had some combination of flaws or lack of features when compared to commercially available designs: 1. None or Bad Linear mosfet load sharing, 2. Not very high current or voltage, 3. minimal interface, 4. Poor PCB design, 5. Low quality component selection where it counts (low tempco resisters etc). This load is meant to be a first step to evaluate the components and performance, get the programming and interface fully flushed out, then design a larger one based on a linear design for less noise and higher accuracy(16 or 18bit dac and a 24bit adc). The intent here was to take a first step and learn about all of the aspects required to design such a device, then as a second step try to built one that rivals a top tier commercial load. At least in performance.
My requirements:
10A, 100V, 100W
WiFi enabled with fully featured web front end
Fully featured Telnet/Serial control
SD card Logging with RTC time stamp
Reuse some components I had lying around such as the Dc-DC converter boards, ADC and DAC dev boards, and AD8630 op amps even if they aren't the perfect fit.
Functional choices:
Custom designed ESP32 dev module. Why would I do this?! I didn't want a PCB antenna inside the case, and I couldn't find any module with a USB-B connector
ESP32-WROOM-32U choosen (no PCB antenna, U.FL connector only for external antennae)
Full size USB-B jack
I will be using FreeRTOS to utilize both CPU cores maximally. I've already written about half of the functional code during testing and design
4x4 keypad with an arduino pro mini "backpack" to offload this task. Arduino will interrupt ESP32 when a new key is pressed ( to set a flag), buffer any new new keys in a FIFO stack and communicate the buffer over I2C. Probably won't need the FIFO stack as the ESP32 is blazing fast and should be able to grab the new key before a human can press another one. Either way this low priority task is off loaded
Socket 1156 CPU cooler sandwiching (4) IRFP250NPBF TO-247s. 25W and 3Amps per fet at a calculated 28C temp rise. Second design will be a more typical 8-10 fets using (2) long rectangular heat sinks which I've already purchased. But for now...this is good enough, as CPU coolers are designed with heat pipes specifically to wick away around 100W of heat. I may only get about 75W out of the heat sink I've choosen though, but its a good first start.
Each fet individually controlled by op amp.
16-bit ADC from AD8630 chopper amps configured as a diff amp for voltage, and intverting amp on current. ADC PGA gain will change dynamically for increased resolution at the low end. Conversion speed will also dynamically adjust based on the task: I.E. Pulse test change to 860SPS at 12bit to capture more data, or drain a battery, switch to 10SPS at 16-bit for more accuracy.
Low tempco 4 terminal shunt
12-bit DAC...because I had it in my parts bin.
3.5" Nextion Touch Screen as I wanted to evaluate the technology. and because I wanted to offload visualization to another controller.
Front mounted sense terminals for 4-wire measurement.
No power button. Software only: Turn off Nextion display, go to low power mode on ESP32.
Comments you may make and my initial answers to them.
1. Using Switching converters is noisy! Yup. Will be using a linear power supply and 4 layer design in the final version
4. Why do you have a -0.23V generator? Because I wanted to evaluate it as a ground reference for the DAC and FET control op amps. Although I think it will be too noisy. But it will allow me to completely turn off the fets as the DAC will be able to control the op amps below 0V.
5. Why didn't you use a cheaper op amp or one with a higher voltage? Because I had them even if they are over speced for the job. All of the fets I've tested switch out of the linear region at around 4.3V and fully saturate by about 4.6, so there really wasn't a reason to use a cheaper inferior op amp with a higher voltage. Besides having practically no offset voltage or input bias current will only help.
6. I used a crappy voltage reference. Yup...version 2 will likely have a the MAX6225 and a DAC8830, so that should do the business.
Special Thanks go to:
Andreas Spiess for his ESP32 videos
Scullcom Hobby Electronics long DC Load Series
I'm getting ready to pull the trigger to order the PCB so I welcome any feedback on the schematic or PCB layout. Especially if I've gotten something seriously wrong, as this level of design is on the edge of my knowledge as a hobbyist! I fully expect to have to make at least 3 or 4 revs of this board before I get it correct, but if anyone can save me a rev that would be super!
EasyEDA.com project home page
here
But feel free to just look at the screen shots below too
Schematic:
Front Panel Design:
Top PCB
Bottom PCB