DIY Adjustable Constant Load (Current & Power)
Vložit
- čas přidán 25. 08. 2018
- Special $2 for 10 PCBs(100*100mm): jlcpcb.com
Previous video: • How to create a simple...
Constant Current Load video: • Li-Ion Capacity Test |...
Cocktail Machine video: • Make your own crude Co...
Motorized Camera Slider video: • Make your own Motorize...
Facebook: / greatscottlab
Twitter: / greatscottlab
Support me for more videos: www.patreon.com/GreatScott?ty=h
More project information (schematic, parts list, pictures,.....) on Instructables: www.instructables.com/id/DIY-...
Parts list (incomplete, see Instructables for more, affiliate links):
Aliexpress:
1x Arduino Nano: s.click.aliexpress.com/e/_dUL...
1x 16x2 I2C LCD: s.click.aliexpress.com/e/_dSj...
1x Rotary Encoder: s.click.aliexpress.com/e/_dZs...
1x TC4420 MOSFET Driver: s.click.aliexpress.com/e/_d9e...
1x IRFZ44N MOSFET: s.click.aliexpress.com/e/_dUJ...
1x ACS712 Current Sensor: s.click.aliexpress.com/e/_dSK...
1x Fuse Holder: s.click.aliexpress.com/e/_dU3...
1x 20A Fuse: s.click.aliexpress.com/e/_dTj...
2x Binding Post: s.click.aliexpress.com/e/_d9k...
In this project I will show you how I combined an Arduino Nano, a current sensor, an LCD, a rotary encoder and a couple of other complementary components in order to create an adjustable constant load. It features a constant current and power mode and can handle a maximum of 30V and 20A if your heatsink design can handle it. Let's get started!
Thanks to JLCPCB for sponsoring this video
Visit jlcpcb.com to get professional PCBs for low prices
Music:
2011 Lookalike by Bartlebeats
Killing Time, Kevin MacLeod
(incompetech.com) - Věda a technologie
This is an old video and I'm just realizing how happy it makes me to see somebody assemblying circuitry the way I always wanted to... in free-air. Now that I've been in the research/educational industry, it makes me very happy to know that this haphazard approach isn't so rare. I'm constantly opening old equipment to fix, or reverse engineer them and finding this type of assembly. Love it! Wish I wasn't so afraid when I was younger of making a mistake :)
I really like your in depth insight on your tutorials, without dragging it on....straight up and to the point with excellent video editing, parts list, schematic, and links...truly professional work, and vast knowledge of electronics. Keep up the great work, and thank you for the videos, have enjoyed every one and will be building this tonight as I have all the components, plus always have nano's on hand, these days more and more hobbyists are incorporating them straight in the the schematic as above...awesome
Your videos never fail to pique curiosity in creating something new. And amazing thing is the project you choose are perfect in scope. Keep inspiring and leading the DIY world!
I like the old school way that you pitch a product in your videos - it makes a connection to the things you try to teach, thanks.
Good opportunity to get your sponsor involved - do a part B where you put the design into their online PCB software and order a PCB. Then build and show off how much tidier and easier the PCB option is.
Yeah.
I thought same, but it would be premature.
This is really only a very rough prototype.
The theoretical power it MIGHT handle is never going to be seen because of thermal limitiations.
He mentions 3amps at 6 volts is what it WILL do.
So that's 3% of the theoretical potential.
See my reply on its own.
I always get excited for a GreatScott notification!
Glad to hear that :-)
Me too
Me I am getting sweat (not wet because language) IRL
A GreatScott notification... or a Great Scott notification. Either one works!
@@greatscottlab can you make a 12Vdc to 220Vac inverter please?
Project idea: since you have already attempted to build a simple radio receiver, how about some kind of radio transmitter? The simple low power ones are pretty easy to build...
This could be a great opportunity to show how AM and FM work in detail.
Greetings from Gotha, Thuringia, Germany.
yeees, or maybe an DIY radio transmitter for old cars (with aux input)
Really, Really like this build, thank you! Love the Arduino display programming, been trying to figure out how to do this. I might try to build it now. :-) Great Scott, I’d also like to put in a vote for a nice Class A Amplifier, I really think you are the man to take on the task. Stay super creative my friend, you have to take up all the slack I leave...
Hey, did you ever build this project? I'm working on it now and having some trouble.
Perfect timing for this video, exactly what I need. Very good explanation, thanks.
This is great! I will build one.
One suggestion:
Add mAH discharging so I can discharge my batteries down to a specific capacity and add a discharge voltage cutoff mode:
The Arduino will discharge at a set current until a specified voltage is reached
I just recreated your circuit today! it was Awesome! This is very useful diy constant current load, I like it, and I'm happy to say that this is my first time using Arduino, Awesome!
The STM32F103 would be nice, with its 12 bit ADC, and higher resolution timers. But a great tool for the workbench. Nice job!
ADC in STM32F103 are also much faster and have DMA capability. You can get 1MS/s. and uC itself is faster, so you can get tighter regulation. But I think max voltage is 3.6V. Unfortunately even STM32F103 doesn't have DACs. Only timers, but they are 16-bit ones, which is nice.
@@movax20h no DAC on STM32F103RB ? Oo
It's greatscott day!!! This is awesome!
Happiness is suddenly watching the notification of new video from great scott!!
You can use a differential amplifier to not only drop the hall sensor output voltage at 0A to 0V but also amplify the output at max current to 5V giving you as much resolution as possible for the current sensing.
Great scott is amazing. The king of electronic projects
OMG I ACTUALLY UNDERSTAND THIS ONE! I've cooked plenty of 3D printer control boards by putting a big load on the MOSFET and overheating RAMPS Q3. Guess it's time to add Electronics Engineer to my resume. Thanks Scott!
Fantastic work, dude! Awesome!
Your videos are so informative and project inspiring. If only I were not so high right now I just might try this!
Great, Scott!
You are my favorite.
Halogen Lightbulbs make an Awesome, Cheap power resistor for such a project!
You lost me at the intro...so many leds and so many solder! Hahaha awsome vid. Love it.
love the way you make circuit boards. Dead bug wiring taken to the point of art
Thanks for this Project.
With it I learned how to build Menu for LCD screen.
I didn't have a 16x2 LCD, but I did have a few Nokia 5110 LCDs, so I decided to adjust the code for that LCD.
And guess what... It works :)
I like your videos, very informative! Keep it up!
another good one Scott, this is a good start point or as is project. thanks
Awesome as always!
Instead of "don't touch it" for the undervoltage pot, I learned how to tune it so that it's least likely to cause problems:
I accidentally fried my LTC3780, and I did a lot of probing and I noticed that the under voltage regulation caused some problems when set to 0.
The fried LTC3780 could only tune from 0.8v to 2.5v (fault light on above that) and had no current limiting.
So here's what I learned:
If you set the under-voltage pot to as low as it goes, then the full supply voltage will pass to the LM358 to an opamp input while the supply voltage is at a regulated 5v. Even though it's supposed to only produce 5v out, it started to fail for me and will go up to near the supply voltage which feeds the run pin of the LTC3780. The LM358 still worked if the trimmer was set closer to the supply voltage though, so clearly it puts more stress on the LM358 to pass much higher voltages to the inputs than the 5v regulated voltage. If the undervoltage pot is tuned closer to the supply voltage this creates a voltage divider that will make the input voltage to the LM358 closer to the regulated voltage.
Any voltage above about 6v to the LTC3780 on the run pin will destroy it.
So, my advice is turn the undervoltage regulator all the way up, so that you get the fault light and the output goes to 0, and then turn it down until the fault light turns off, and overshoot a little (but don't set it to the minimum). As long as you're using a constant supply voltage it'll continue to run, and this will reduce risk of frying the LM358 which will fry the LTC3780 (The IC is same cost as the whole board really, so you don't want to have to replace it).
Thanks, buddy!
After watching this man, I realize my knowledge of electronics
is that of a tiny child. Always impressed by him.
Hey! Don’t be ashamed of yourself, you will eventually be better than him if you try hard enough!
I literally just looked for videos like this yesterday.
I would actually love a tour of your work space, seems like its completely decked out!
Excellent, as usually.
Thanks again Keep up the inspiration
Great Scott ...Plz continue ESC project
I love your video, every week I am waiting for your video online.
Thank you
Always came up with the best explanation Nice...............
Great video. Great project.
I watch you from Sénégal in Africa
For the current reading on my PWM charge controller using the same current sensor I used a loop which runs for a full second counting the current values, then dividing by the number of loops it did to get an average. I found this gave me a much more stable value. However, if you're using it to control current that wouldn't work so you'd need both the instantaneous value and an averaged one. Instantaneous used in your control loop but the averaged value shown on the screen.
Thank you very much, this is what i am looking for
Very nice project!
Very helpful! Thanks colleague:)
Great Videos like everytime😊
100% building myself one of these !!!
Hi Scott, the current ADC should be suitable when increasing the sensor voltage range. the range in your setup is around 300mV. by amplifying (with a opamp) this signal and correcting the 2.5V, you can transform your 300mV sensor signal into 0 till 5V
I love your videos ❤
Thanks for the code on instructables I'm working on a lab power supply and I'm reverse engineering your code to build my menu without your code I'd be so lost thank you
your videos are very interesting and knowledge full
Excellent project
You can use use STM32 in place of atmega328 for better ADC and PWM resolution. Or INA219 with a lower value shunt resistance can offer you higher current range and stable power measurement.
I am sweating with the heat of the constant load. Thanks to SweatScott for the good job and nice video 💓 💝 💟 💖 👏 👏 👏 🎉 🎉 🎉
This project is somthing new and interesting
Good video! Constant Load and Constant current is very useful!. I remember the mosfet work like resistor in linear (ohmic) region and it's use in switching mode in saturation region for increase efficency.
If you want to use a MOSFET as a switch, you use it in the omic region.That is the reason, why the RDS-on is stated in the datasheet as static on resistance. This is because, when the MOSFET switch is in the 'ON' state, it has a almost constant resistance, as opposed to a bipolar transistor. The confusion arises, because in a bipolar transistor the saturation region is where the Vbe is so high, that an increase in Vbe does not decrease Vce (Vce,sat is reached). On a MOSFET on the other hand, the saturation region is the region, where an increase in Vds does not increase Ids, that means, even though you apply more voltage across the MOSFET, the current does not increase. But if you increase Vgs in the saturation region, the current does increase.
The terminology is really confusing, because in bipolar transistors you want to switch in the saturation region, but in MOSFETs, the saturation region is completely different.
It's the other way around, the typical mosfet Ids over Vds graphs, Vds is on the x axis and Ids on the y axis. So in the omic region an increase in Vds creates a proportional increase in Ids, but in the saturation region (line is almost flat) an increase in Vds does not increase Ids (or only very slightly)
Yes, i think he has it confused in this tutorial. I am making a similar device using IRFZ44N and by using the low pass filter, the mosfets keep getting cooked since they are in linear mode. Using a PWM signal at the mosfet gate is less stable, but it also allows the mosfet to function without breaking and shorting out after a few seconds/minutes with any real power dissipation.
Great video, thank you.
Nice penmanship!
It would have been great if you used an op amp to drive the MOSFET. But, whatever, Great job!
Please use op amp in next version, that should get rid of the oscillation and would make it more precise.
I've been meaning to build one of these. I'm currently planning on building this to stress test 3∅ 30A connectors.
Our Hubbell supplier in the US has been pushing spring-loaded clamp connectors instead of the standard screw-clamps. If they didn't come from Hubbell, I would've already said "No" to them but I want to be sure they won't fail under full load
Great project! Interesting to see a take on this using an Arduino (instead of the op-amp analog solution).
GeatScott
you are great
great video!
i am a really big fan of you
Very nice build. I will definitely check out your code
Awesome Bro, Thanks...
I have been wanting to get familiar with electronics like this strictly because I think it would be handy for playing with my car lol.
Have a couple ideas but no skill in making them happen!
Nice bro....
Thanks
Nice project
Hey GreatScot, I was wondering if you could make a tutorial of how to build a frequency compensated attenuator for a guitar tube amplifier. That would be great. Thumbs up for your great work so far!
That sounds pretty cool huh
This could have been a Diy vs Buy episode. You could compare it to the commercial available ones and tell which option is better
Very nice video :))
9:07 You can do small improvement by not subtracting OCR1A when curcurrent = current to prevent oscillations.
Finally but I was waiting so long for this video that I already made one 😂😂😂
Hey, did you ever build this project? I'm working on it now and having some trouble.
How does yours work?
I don't get anything from your videos.
But I like watching them.
Me too
Yesterday I played the "Great Scott - UTILISE" drinking game. OMG, what a headache :D Great video, nevertheless, as always ;)
This is 🔥
Those ACS sensors seem like a good alternative to a current sense resistor...got myself some and I plan to use them on some motors to stop them when the current gets too high.
This is awesome
Great project! Did you measure the maximum power draw by the heatsink used?
Hey,
Very good explained, like your other videos. Can you do something about DIY low range dipole antenna receiver and sender?
The "see you next time" closing sentence is getting better and better each video...
Great idea.
Also note that you cant connect the supply backwards (reverse polarity) as the voltage divider will send negative voltage to the arduino. Nevertheless, great build!
Nice project! Great Scott, have you done anything with ultrasonic pulser-receivers? I'd love to see your design for one similar to the olympus 5077pr :D
Hey really love your videos, you should try making a wind turbine to generate power
You are awesome! tks!
4:38 Alligator trying to take a few nibbles :)
hey bro. Love your videos. Just a tip, you should use a DeEsser on before compressing your vocal recording. Don't try to get rid of the hissing with EQ. Cheers.
I love the idea of building one of these so I can use it for logging discharge curves and testing my batteries. I would need much better precision though, so here are some thoughts on this.
The interface between the digital electronics and the analog electronics is the biggest limitation in precision here. Both the reading of current and voltage, and the control of the power MOSFET are noisy because of the limited resolution of the ADC and PWM. I was thinking of using a SPI controlled 16-bit variable potentiometer and an opamp to assist with driving the MOSFET. By using the feedback of the current sensor and the variable potentiometer connected to an opamp, would it not be possible to very precisely control the driving of the MOSFET?
When reading the current and voltage values, of course using a more precise DAC would be simplest as you have mentioned. But if I wanted to experiment with getting more precision with the 10 bit ADC we have already have, How does this scheme sound: Read the voltage from the voltage divider with the ADC (10 bit). Output the read value via SPI to a variable potentiometer . Using an opamp, we can connect the digital pot and the voltage we want to measure, and the opamp will amplify the difference in voltage so we can read that error difference with another ADC on the Arduino. The second ADC read would be a measure of how far off our originally read value is from the actual value, which we could calibrate against. We have more precision in the digital potentiometer than our ADC, so we would just nudge up or down the output value of the digital pot until the error feedback on the second ADC goes as close to zero as possible. Then we know based on what value we write to the digital pot what the actual voltage must be.
Let's walk through an example; it might make this more clear. Say we want to measure a current coming from the current sensor. It is outputting 2.954265v, which obviously our ADC can't even come close to in precision. Our 10 bit ADC can only read in steps of 0.00488 mv, so the value is going to be 605 or 606, giving us a reading somewhere around 2.951 to 2.956 volts. We spilt the difference and output 2.9535v to the digital pot. If the digital pot is 16 bits, that would be a value of 38711d, giving an output value of somewhere between 2.9534v to 2.9535v. The opamp magnifies the error difference between our actual 2.954265v and our pots output by say, 500x the voltage difference. We set it up so that the opamp output range is 0 to 5 volts, and a center voltage of 2.5v means no difference between the digital pot and the actual voltage from the current sensor, and it amplifies any difference in the two inputs by 500x the voltage difference. In this example, our voltage difference woudl be around 0.000765v, so let's say the opamp is actually putting out 2.1175v now, which our second ADC reads as 433 or 434, giving us a reading of 2.11v to 2.12v. We split the difference to 2.115. Now we have to adjust the digital pot output by some value to see how much closer we get. We calculate it like this. Subtract 2.5 from the new reading to find out how far off we are from center (-0.385v), divide by 500 (to scale it down by the amplified value of the opamp), which gives us -0.00077v. We now know we are reading higher on the ADC than we should be, so we adjust out output up. (or the other way around if we get a positive value instead of negative, of course). We subtract this calculated value from the value we last wrote the digital pot, giving us 2.95427v, which we write to the digital pot as 38721. Our new output is 2.954222v to 2.954299v. Do the whole feedback read again, and we get a much smaller error reading from the opamp. Every time we nudge up or down slightly in this way, we in theory get closer to the real world value.
Since we are reading with a 10 bit DAC, 9 bits of which we consider significant figures we magnify the error by 500 (512 would sound better, but I'm approximating), then reading again, we can probably get closer to 14 significant bits of precision. Of course, every time our most significant bits (first ADC read) change by more than 3 or so up or down, we have to start over in our calculations, but it should only take 2 or 3 cycles to gain enough precision again to be confident. The ADC takes like 1/10,000th of a second to read a value. So, I figure we can read at least 400-500 times a second. with calculations and re-reads, every 5-10 ms we should be able to get a very accurate read. We use the 10 bit course read for fast responses, and the higher precision reads for accurate adjusting of our MOSFET. Before, we were limited to 0.00448mv resolution in the ADC. We might be able to achieve an effective resolution of 0.0003v this way (that's about 14 bits). That's enough for millivolt measurements anyway. Most times, such short durations of time are not going to result in very much change in readings, and therefore we will spend most of our time in precision calculation, giving us very good accuracy.
How plausible does this sound? Worth putting the time into building to test out, or a waste of time and never going to work out correctly? I know this is bonkers over the top complicated compared to just getting a better ADC and calling it good, but I like the idea of something like this if it can be done.
Good video, interesting use of digital control loop. For more resolution you could use, instead of digitizing the current value, an analog control loop (a simple opamp) comparing voltage over sense resistor vs input set by a pwm (there are many techniques to improve resolution of arduino pwm, specially because you don't need it to be fast here).
Another good goal to pursue is having a load that can be controlled externally (e.g a pulse, or a step) to analyze response of circuits under transient load changes.
Another good one would be a load that can be used for AC... :)
Thank you 👍👍👍👍
Amazing
One possible issue with this type of load is the control loop which is run by the microcontroller. That would make it quite slow which could possible create oscillation under the right conditions or even worse it could react very slow to a rapid change in current.
You could add an automatic Lithium Ion/lithium polymer Battery Test function, by measuring the Current/Time while drawing a constant current like 500mA.
An updated version of this could make use of a more modern mcu. I would suggest looking at the Seeeduino XIAO which has an on-board DAC which removes the need for filtering to drive the MOSFET and has 12-bit resolution on its ADCs. All of the voltages are only 3.3V maximum so you'd need a logic-level MOSFET but those are readily available.
What's the purpose of the MOSFET driver (instead of using the Arduino directly with RC filter) since it's only being supplied 5V?
I've been told to use masking tape to mark my holes/cut-outs.
It avoids our ugly marks on the finished product ;)
Very helpful, I made a test constant current load using a couple of op amps and some mosfets salvaged from an old UPS which worked for testing 12V SLA batteries but the FETS blew when testing (lithium) 24V batteries. I think the FET's were unsuitable and / or I had over engineered it somewhat making a mistake in the circuit design somewhere. You design is much simpler so I'll give it a try.
The FETs probably were only designed for a maximum Vds of 20V or 16V, that are typical values. Would work fine at 12V, but they let out the magic smoke at too high voltages. Always google for a Datasheet before using any mosfet with higher voltage than the original device!
Yeah I think that was the problem. I was gonna re-visit that CC load tester later but may look at integrating Great Scott's solution into a battery tester. Perhaps change the LCD for a 4 line and add display for time elapsed and calculated Ah rating. Also feature to disconnect the battery when it reaches it's fully discharged state.
As an improvement suggestion it would be nice to have a self diagnostic feature in the software that can shut down system in case if a current greater than the set value is detected for a pre defined time interval in order to protect the load in case if the transistor shorts out due to a fault.
You could have used a shunt resistor (or transformer based on for over 50A), analog multiplier (could be one quadrant multiplier even), Norton opamp, normal opam, and single high res DAC, with multiplier in the feedback loop, to create constant power load without micro control. That would be beneficial for very quickly changes voltages, i.e. these generated by some SMPSs. But micro is good for testing batteries, where reaction speed is not that super important. Also micro allows you do simulate inefficiencies of load (i.e. ~constant power, but depending on input voltage, the import power could vary), just like most SMPSs are not really constant power, as they vary (by about 10%) their input power (for the same output power!), depending on a voltage.
What you could do in your current setup, which is relatively simple, and requires just code update, is pulsed loads. I.e. every second a 1W or 100mA pulse for 10ms. Or something like this. Useful for various applications.
You could have used an STM32 Bluepill for the project. Since you reviewed it, I think you still have one. That one has a 12 bit ADC, a much more precise PWM and it's cheaper too.
STM32 Adc is very likely to be noisy if you dont take extra care