h-bridge heats up

Hey guys, new here.

I have one simple question, I followed this tutorial to get the arduino and h-bridge to control 2 motors.
http://itp.nyu.edu/physcomp/Labs/DCMotorControl

my question is, after running both motors for 10-15 seconds the h-bridge starts to get hot.

I am using these motors:

they are rated 3 to 6V however when they are moving the voltage draw for each motor is around 2.25V with 4.5V total draw into the h-bridge's Vcc2

i've tried running the motors both from the arduino's 5V output and from a battery and it seems to have the same effect.

am I doing something wrong? or is it usual for the h-bridge to heat up?

how hot does it get?

i've tried running the motors both from the arduino's 5V output

Bad idea.
You didn't say which arduino, but the regulators are not rated to power motors.
Use a separate supply - always.

You didn't say which arduino, but the regulators are not rated to power motors.

I am using the Duemilanove.

If I understand this correctly, if i plug a wall wart into the connector I can connect the motors to the Vin and GND pins without any problems?

I think I know what may also be contributing to the heating problem.

the SN754410 chip is only designed to drive motors at 1A max and it seems each motor is pulling almost 3A

I guess I need to find different motors.

the SN754410 chip is only designed to drive motors at 1A max and it seems each motor is pulling almost 3A

You should not be running 3A through your Arduino, even if you are bypassing the regulators. None of the traces are designed to handle that much current.

Any IC that has 3A running through it, is probably going to get hot.

Aside from getting different motors how could I run them with this setup?

All your problems (heat, current etc) are interrelated.

You could use motors that draw less current but where would be the fun in that? Let's see if we can get this working with what you've already got.

First to avoid damaging your arduino, try connecting the external supply dirctly to your motor driver circuit first then take the connections from there to the arduino, ie power goes to SN754410 circuit first, then to then arduino Vin from there. This will stop the high currents drawn by the motor from flowing through the arduino PCB.

As for reducing the current drawn by the motors, you could try PWM (pulse width modulation) to reduce the "on" time of the motor drivers, which will reduce the average current being drawn. This is easily done using the analogWrite command and setting a value less than 255. The SN754410 can handle up to 2A pulsed non repetetive currents for < 5msec so this may work. The only problem with this method is the motors will run more slowly because the average current is lower, and this may be slower than you might want them to run, maybe not even fast enough to overcome the static friction in the motors themselves -> they might not turn at all!

The SN754410 uses bipolar output transistors and if you look at the data sheet it specifies typical voltage drops of 1.4V and 1.2V for VOH and VOL at 25 deg Celcius when passing 1A. Knowing that Power (P) = Current (I) * Voltage (V), this equates to 1.4W and 1.2W (2.6W total) if you're using the full H-bridge mode for a single motor. The data sheet says that the device is rated to approx 2W continuous at 25 deg C, so no surprise that it is getting hot.

You could use separate driver ICs for each motor, this will reduce the power dissipated in each driver IC as the current will be halved, this in turn will reduce the heat generated in the IC, or try a different motor driver IC with lower "on" resistance. Perhaps a driver using MOSFETs would be better since they can have very low on resistance (R) and P = IIR, if your reduce R you get less power dissipated as heat in the device.

If you still have heat problems, the only solution is heatsinks on the motor drivers... either more copper connected to pins 4, 5, 12, 13 or if this doesn't work, bond the body of the IC to a chunk of metal, a proper finned heatsink is best. Don't forget to use heatsink paste to achieve proper thermal bonding. Maybe even use a fan to force air over the IC and heatsink?

It starts to get technical if you want to calculate the correct size and thermal properties required for a heatsink in your application, but it can be done. It has to do with keeping the temperature rise inside the SN754410 below the maximum junction temperature knowing what power the device is dissipating.... a topic for another day perhaps?

. a topic for another day perhaps?

Well today if you like :wink:

http://www.thebox.myzen.co.uk/Tutorial/Power.html

Nice, article!

But I was thinking of a more advanced lesson on how to calculate what size heatsink you require given a specific device and power load, covering things like thermal resistance, junction temperatures, ambient temperatures and thermal derating plus how to correctly mount devices on heatsinks, more along the lines of this article :

http://sound.westhost.com/heatsinks.htm (not my website by the way!).

This is probably beyond most people starting out in electronics, but is essential for long term reliability of a high power design...

letaage, Thanks for your helpful comment.

Last time I messed with this I had 2 AA's plugged directly into the SN754410 's Vcc2

the motors ran fairly slower but the heating issue was still there.

I am going to try to run just a single motor with PWM and see what happens.

it seems I have not picked the best compatible parts so, what kind of setup/parts would you recommend?

AA batteries can deliver large current when put under a heavy load such as a motor...

As for what would I recommend - it depends on what you are trying to do, and on your budget! :slight_smile:

I always start with a specification of what I am trying to achieve performance wise and functionality wise then work out what is needed from there - always designing the circuit to handle the worst case scenario.

If you can tell me what you are trying to achieve I might be able to suggest some alternatives...

letaage,

I am trying to learn some basics into robotics and home automation, my project to learn this is to make a tank like car that will avoid obstacles.

right now I am just trying to get the thing moving once i am successful with that I will add the proximity sensors, etc.

You are using the Tamiya twin motor gear box kit, this uses the Mabuchi motor FA-130 : http://www.pololu.com/file/download/fa_130ra.pdf?file_id=0J11

From this data it says that it has a stall current of 2.1A, which can happen if the motor rotor locks eg if the wheels get stuck.

This tells you that your motor driver needs to be able to handle a continuous 2.1A current per motor in the worse case scenario, any less than that and it will overheat and possibly blow up if the wheels get stuck.

If you want to use the SN754410, say one per motor, then each driver will dissipate 2.1A * (1.4V + 1.2V) = 5.46W of energy as heat under a fault condition.

As we know, this is more than the SN754410 can handle and indicates that the SN754410 will probably burn out if the motor stalls for some time.

Looking at Sparkfun (where I am guessing you got your motors from?) they have a 2.5A motor driver which might be more suitable:

Except for one problem. It won't work for 3V motor supplies, it's only spec'd for 5V or more... hmmm....

Perhaps this one will work better:

This is based on the Toshiba TB6612FNG and uses MOSFETs which means lower power dissipation and it will work with a supply as low as 2.5V and is dual channel.

But it is only rated to 1A continuous per channel which is too low to handle a fault current, although the TB6612FNG has built in thermal shutdown control so overheating shouldn't kill the device.

But here's where MOSFETs have another benefit over BJTs... you can parallel them, they will tend to balance each other in terms of impedance and share current nicely where as BJTs don't. If you parallel up BJTs you need to make sure they will share current equally or else one will tend to take the bulk of the load and eventually overheat.

So it might be possible to use two of these motor controllers, each one paralleled up to drive an individual motor.

Each channel has an on resistance of 0.5 ohm, paralleled up gives 0.25 ohm, so with a 2.1A fault current you're talking about 2.1A * 2.1A * 0.25 ohm = 1.1W to dissipate, ie 1/5 the power as compared to the SN754410. Much better!

Of course this isn't as cheap as the SN754410.

I was running some tests last night and this is what I figured out:

when the SN754410 is controlling only 1 single motor, the average current is around 0.3A with 2AAs as power source.

the max stall current has been 0.62A

with that said, after making the changes to control only 1 motor with the h-bridge it seems to have solved the problem, now the current is within range even on worst-case scenario.