0
\$\begingroup\$

Circuit Diagram

The transistor gets really hot even though I am using a heatsink. Have I connected something wrong?

\$\endgroup\$
  • \$\begingroup\$ Drop your base resistor to 200 ohms. \$\endgroup\$ – WhatRoughBeast May 13 '16 at 19:27
  • \$\begingroup\$ Your using PWM on a transistor that reacts slowly to changes in drive current. Try a fast npn or use a mosfet if you can drive the gate with at least 10 volts. Another option is to lower the PWM frequency. \$\endgroup\$ – Sparky256 May 13 '16 at 19:33
  • \$\begingroup\$ I guess "slowly" depends on. Usual PWM frequencies of 1-2-10kHz shall make no problem for a transistor. \$\endgroup\$ – Gee Bee May 13 '16 at 19:51
2
\$\begingroup\$
  • Check the wiring of the transistor, its pinout is B-C-E which is not too intuitional. E goes to GND
  • TIP120 is a bipolar transistor, dropping 0.7V when it is fully on. Assuming your motor draws like 2A, this is 1.4W of heat, which is hot by design
  • In order to reduce wasting power, you can pick a MOSFET instead of this BJT. Pick e.g. IRFU2405 or AP20N15GI-HF - any N channel incremental mosfet will do. Less on-resistance means less power waste. In short, if you pick a MOSFET rated for 40A, it will essentially have no losses at 1-2A and will make no heat at all.
  • Note that the MOSFET has to be a logic-level mosfet, i.e. a device which can turn fully on for less than 5V. The types I am suggesting are logic level MOSFETs.
  • You don't need a series resistor between Arduino and the G of a MOSFET. However it is a very good idea to use a pulldown resistor of 1K..10K between G and GND. This ensures that the MOSFET is always OFF if the arduino is not driving its outputs (for example during reporgramming the Arduino).

Not related to the original problem:

  • Note that the DPDT relay connection is fishy. It is not very likely that you can actually drive a relay coil directly from a port output, so you might wish to use a small bipolar transistor or a small FET to drive the relay coil. Even if you have the relay coil working, remember that you have a protecting diode missing. Similarly as you need diode for the motor, you need a similar protecting diode for the relay coil, otherwise when turning off the relay, the energized coil may destroy the Arduino.
\$\endgroup\$
0
\$\begingroup\$

The base resistor is way to high. VBE(on)=3V, if your arduino outputs 5V, then Ib=2V/1.1k=0.5mA -> Ic=hfe*Ib=1000*0.5=500mA - this is not saturated what you have is variable resistor like operation of transistror, not on/off control needed for PWM.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.