DIY Adjustable Constant Load (Current & Power)

93K276124

Intro: DIY Adjustable Constant Load (Current & Power)

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!

STEP 1: Watch the Video!


The video gives you all the information you need to make your own adjustable constant load. During the next steps though, I will present you some additional information.

STEP 2: Order the Components!

Here you can find a parts list with example seller (affiliate links):

Aliexpress:

1x Arduino Nano: https://s.click.aliexpress.com/e/_dULoNXh

1x 16x2 I2C LCD: https://s.click.aliexpress.com/e/_dSjOzdW

1x Rotary Encoder: https://s.click.aliexpress.com/e/_dZs9jUb

1x TC4420 MOSFET Driver: https://s.click.aliexpress.com/e/_d9epnMB

1x IRFZ44N MOSFET: https://s.click.aliexpress.com/e/_dUJRtAg

1x ACS712 Current Sensor: https://s.click.aliexpress.com/e/_dSKBwNK

1x Fuse Holder: https://s.click.aliexpress.com/e/_dU3K3jS

1x 20A Fuse: https://s.click.aliexpress.com/e/_dTjqvC4

2x Binding Post: https://s.click.aliexpress.com/e/_d9ke5na

Ebay:

1x Arduino Nano: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x 16x2 I2C LCD: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x Rotary Encoder: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x TC4420 MOSFET Driver: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x IRFZ44N MOSFET: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x ACS712 Current Sensor: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x Fuse Holder: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

1x 20A Fuse: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

2x Binding Post: http://rover.ebay.com/rover/1/711-53200-19255-0/1?...

Amazon.de:

1x Arduino Nano: https://amzn.to/2BLw2Ml

1x 16x2 I2C LCD: https://amzn.to/2BJ8tnx

1x Rotary Encoder: https://amzn.to/2Lmt5S0

1x TC4420 MOSFET Driver: https://amzn.to/2PBVQ0g

1x IRFZ44N MOSFET: https://amzn.to/2PxQd38

1x ACS712 Current Sensor: https://amzn.to/2NijkGn

1x Fuse Holder: https://amzn.to/2NkffkK

1x 20A Fuse: https://amzn.to/2PCLm0A

2x Binding Post: https://amzn.to/2BP0eGq

STEP 3: Create the Circuit!

Here you can find the schematic as well as pictures of my finished circuit. Feel free to use it as a reference for your own circuit.

STEP 4: Upload the Code!

Here you can download the code for the project. Upload it to the Arduino Nano through the Arduino IDE

Also make sure to download/include this library:

https://github.com/fdebrabander/Arduino-LiquidCrys...

STEP 5: Finish the Project!

All that is left to do is mounting all the components inside your enclosure.

STEP 6: Success!

You did it! You just created your own adjustable constant load!

Feel free to check out my YouTube channel for more awesome projects: http://www.youtube.com/user/greatscottlab

You can also follow me on Facebook, Twitter and Google+ for news about upcoming projects and behind the scenes information:

https://twitter.com/GreatScottLab

https://www.facebook.com/greatscottlab

81 Comments

Is it not possible to make this in such a way that it detects the input impedance of the device and then automatically adjusts the voltage and current?
Can someone tell me what the purpose of C3 (the 470uF connecting the MOSFET gate to ground) is please? Ta.
It seems that together with R1 it makes a low pass filter with a cutoff frequency of around 340hz, I guess it is used to smooth the pwm output from the arduino
Could someone give me a clue as to what the magic Arduino register tweaking in lines 70 to 80 is doing? I'm thinking of using a different MCU but this bit of code is defeating me.

Presumably setting up the ADC prescaler for the voltage and current measurements. What do the values actually mean
ADCSRA &= ~PS_128;
ADCSRA |= (1 << ADPS1) | (1 << ADPS0);

Presumably sets up interrupts to allow the button press?
PCICR |= 0b00000100;
PCMSK2 |= 0b00010000; // turn o PCINT20(D4)
attachInterrupt(0, isr0, RISING);

Beyond me, sorry!
TCCR1A = 0;
TCCR1A = (1 << COM1A1) | (1 << WGM11);
TCCR1B = 0;
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
ICR1 = 2047;
OCR1A = 0;
Maybe add a "Constant Voltage" ( Parallel Regulator / Big Zener) -mode.
A thermal shut-down + programmable maximum power should probably be considered too. ;-)
Instead of MOSFET driver, what if I use the RC low pass filter directly from the Arduino board instead of the MOSFET driver? Shouldn't that work just fine?
Perhaps my eyes fail me but.......
I don't see the source for the heatsink anywhere ??

Also, what I really need is a 65v 20A dummy load.
I may try to modify this design for that.
Queston:
Hi, I notice that there are two electrolytic capacitors and one under the TC4420. may I know what are the values of the two electrolytic capacitors and the SMD? from the diagram I only saw, 22u and 470u
i believe he just has two 220uf caps in parallel. That would make sense to me... The desired capacitance is 470uf, maybe he only had 220uf caps so paralleled them to get a similar result.
Code adapted for Nokia 5110 LCD.
Note: If a strong power source is connected (eg a UPS battery), the regulation of the current is too slow and there is a possibility of MOSFET burnout (even 55A IRFZ44, I burned two until I realized the problem). Use a quick fuse
can you help me with this? your code is broken.
The 150k resistor in IRFZ gate control is for the MOSFET protection during the startup?
Well, this is a good instructable, nevertheless:
1) dissipate 20A over 30V means you need to dissipate 600W, as the junction to case resistance for IRFZ44 is ~1.5°/W, this means you have to dissipate 400°, as temperature junction is maximum 175°C, this mean you have to cool down case to -225° ...
On another hand it's also what datasheet said: with an infinity head sink, maximum power allowed for IRFZ44 is less than 150W. (in fact (175-25)/(1+case to to sink))
2) if you have a look on IRFZ44 datasheet, you'll see it isn't really made for "linear" usage, DC isn't indicated on SOA graph, but should be for VDS ~12V in the range of 1A.
Yes, it's a good instructable, but not using this Mofset.
Regards JMI
JMI, would you be willing to suggest some alternatives to the suggested Mosfet? Thank you
I'm looking all over the web for something like this, but I need exact schema and parts... Can you make an a Instructable with everything we need to follow, but redesigned so it is a better unit? It would be nice to have something that is simple but accurate.... Thank you very much! Tony
Hi, I'm nearly finished building this project and the output voltage (measured with a multimeter) of my setup doesn't change when I set an output via the interface. I'm using Scott's code and the same components that were recommended. The only difference is that I'm using an Arduino pro mini.

I'm using a 20V 6A power supply to supply any load and a buck converter to supply power to the equipment. I lost my 5 volt regulators and I had a spare buck converter.

Regardless of the value I change the either the current or load values to, I always get a 2.4V output. The voltage drops to 0 when I 'stop' the output but it seems as though the duty cycle of the PWM signal doesn't change. I tied pin 9 directly the gate of the mosfet and the my output voltage was 2.1V and didn't change when I varied any values in settings.

My mosfet is fine, I tried 2 of them, and bot were adjustable with a 50k pot.

Can anyone help me here?

Puh-leeese
Hello.

The TC4420MJA driver is not available on any shops and it is quite expensive. Is there any replacement ?
Hi
Cool project. I'm deffinately going to build this. Did anyone make a PCB for this? and are willing to share the gerber files for it?
Best regards,
Christian
More Comments