Teensy 3.1 PWM, TIP31C, and LED strips

currentled stripmosfetteensytransistors

So I have been having some trouble with my Teensy and I think I have an idea of what it is but I need some help understanding it .

So I have four 12v RGB led strips. Each color pulls close to an amp so I used 12 TIP31C NPN transistors I had. This works but after a minute or so, or less if all the lights are on full, the Teensy will stop responding and even reboot. I noticed it gets very warm as well. As soon as I turn the lights on another LED I have on a digital pin seems to half in brightness.

The way it's wired is that each transistor's emitter is wired to ground, base straight to a PWM pin on a Teensy, and collector to the individual color of the strand.

I believe what's happening is that I am drawing too much current from my Teensy and causing it to overheat and also using too much power to drive the transistors so that the Teensy cant properly run anymore, which causes it to shutdown.

My problem is that I don't know if I need to use MOSFETs instead of the TIP31Cs or if I can use a base resistor between each transistor and the Teensy. I have no idea what value resistor I'd need or any idea what MOSFET I would need if I use that instead. I spent several hours trying to understand the idea behind both calculating a base resistor and also selecting a proper logic level MOSFET but the concepts escape me for both.

The Teensy outputs at 3.3v and each pin is rated for I think a maximum of 20ma. Something that complicates is slightly is that the length of the LED strips will vary a little.

Best Answer

... emitter is wired to ground, base straight to a PWM pin ...

VBE(sat) of the TIP31C is 1.8V. Every time the output goes high, the MCU has to burn up the voltage difference between the supply voltage and VBE internally. This is not good for the chip. Put a resistor on the base so that there is an additional external component to drop this voltage over instead.