TIP120 overheating using PWM

I started with the circuit from (itp nyu), using an Arduino Pro Mini 3.3's PWM (pin 11) to control a small motor via a TIP120 . Then in the interest of portability, I got rid of the second power source, and I want to run both the Arduino and the motor off the same battery.

The battery is a sparkfun 3.7v LIPO, using the sparkfun LIPO charger. The Arduino uses a bluetooth mate to communicate with a mobile app. Pin 11 of the Arduino goes to base of the TIP120, while collector and emitter are wired to the same battery as the Arduino.

I thought I would have to create two electrically isolated circuits in order for this to work (which I don't know how to do fully), so I was very happy when I first hooked it up and the motor started going at full speed. To my surprise, the problem came in when I tried to slow it down.

As soon as I engage PWM, the TIP120 gets way too hot to touch in just a few seconds. Yet I can run the motor at full speed for 20+ minutes and the TIP120 stays cool to the touch and the Arduino behaves normally.

I tried an NTE261 in place of the TIP120 -- same results.

Am I misunderstanding the TIP120's state when the circuit first gets powered up? Since the motor is running at full speed, I assume that means that the TIP120 is basically allowing all supplied current to pass through. When I engage PWM on its base, then I assume it limits that current, based on the shape of the wave on its base pin. But if all that is true, shouldn't the TIP120 be overheating as soon as it's turned on and the motor starts running?

Help!?! :slight_smile:

Are you using a series current limiting resistor between the arduino pwm output pin and the transistor's base? If so what value?

Lefty

No - what value should I be using? I assumed that since the output of the Arduino pins tops out at around 40ma, that limiting that current wasn't necessary. Was I wrong? :slight_smile:

"I assumed that since the output of the Arduino pins tops out at around 40ma"

ACK!

the arduino has an absolute maximum (not recommended) limit of 40ma, more than that will not be limited, it will be supplied until the pin is destroyed. thats why we use resistors to make sure the current never exceeds this limit.

I assumed that since the output of the Arduino pins tops out at around 40ma

A common misunderstanding. An arduino output pin will try to supply whatever current is being attempted to be drawn per ohm's law by the externally wired component(s). 40 ma is just the amount where damage to the output pin is eminent, it will continue to try and supply more current, crying out in pain the whole time until it burns open some internal transistor. That is way driving a led without a series current limiting resistor from an output pin is so damaging to both the led and the output pin.

A base resistor is required for your TIP120, it's value is based on the current gain (beta at operating frequency) of the transistor and the amount of current the motor draws.

Lefty