Offline
Newbie
Karma: 0
Posts: 19
|
 |
« on: December 15, 2012, 06:53:05 am » |
I need to control the speed of a dc motor (0.5 A no load, to 10 A full load). In the picture you can see that I'm using a 2n2222 that controls a TIP3055 (or a 2N3055). The circuit works but I'm not sure that is perfectly ok... Can you check it out? I don't know if I need the two green resistors (with question marks), I didn't use them in the test but I saw that some people use them. What should be the values? Also: what is the functionality of the 1N4007 diode next to the motor? And do I need to put another diode from the collector to the emitter of the 3055? Thanks!!!
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 114
Posts: 2205
|
 |
« Reply #1 on: December 15, 2012, 07:52:20 am » |
You don't have to use those resistors; the diode is to protect your 2n3055.
|
|
|
|
|
Logged
|
|
|
|
|
SW Scotland
Offline
Edison Member
Karma: 6
Posts: 1053
Arduino rocks
|
 |
« Reply #2 on: December 15, 2012, 08:42:52 am » |
I'd have thought a mosfet driven directly from the PWM signal would have been a much better choice : much lower ON resistance so less heat generated by the control element.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 71
Posts: 6625
Arduino rocks
|
 |
« Reply #3 on: December 15, 2012, 10:07:55 am » |
The green resistors speed up the turn off of the transistors - the one for the 3055 is probably needed to prevent sluggish switching of the 3055, perhaps 100 ohms or so (it discharges the stored minority charge carriers from the base when going from saturated state to off).
The 2n2222 is a lot faster than the 3055 so its green resistor may not be doing much - 1k would do.
The 75 ohm resistor on the 2n2222 collector needs to be a power resistor, about 3W rating.
Without the 1N4007 the motor could generate hundreds of volts and destroy all the semiconductors in that circuit - it prevents inductive kick-back at switch-off by routing the current safely as the magnetic field collapses. However it needs to be a bigger diode - it will be carrying the same current as the motor, 10A, but in pulses - perhaps something rated 3 to 5A is a good compromise.
You _must_ have a fuse between the battery and your motor driver circuit BTW.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 114
Posts: 2205
|
 |
« Reply #4 on: December 15, 2012, 02:40:04 pm » |
A word of caution: switching 10amp is no small matter. You want to look into 2n3055's datasheet to make sure that it is up to it.
I would also look into what value-add, if any, that little capacitor is doing. It is forming an lc tank with your motor and can cause ringing.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 71
Posts: 6625
Arduino rocks
|
 |
« Reply #5 on: December 16, 2012, 06:42:47 pm » |
A word of caution: switching 10amp is no small matter. You want to look into 2n3055's datasheet to make sure that it is up to it.
I would also look into what value-add, if any, that little capacitor is doing. It is forming an lc tank with your motor and can cause ringing.
Its sort of a snubber cap, since the 1N4007 is a slow rectifier it does the initial job of absorbing the spike till the diode catches up, also will reduce RF interference from brush-sparking. But you are right to warn caution of the 2N3055 - it can handle 10A, but the current gain drops to 5 at that current level, the 2N2222 can't drive 2A! Its a venerable and ancient power transistor, more modern devices will be far more suitable, quick search suggests MJ15003 as possible part (gain 25 at 5A...). However a MOSFET might be a more sensible choice, or a Darlington if you can afford the voltage drop.
|
|
|
|
|
Logged
|
|
|
|
|
Phoenix, Arizona USA
Offline
Faraday Member
Karma: 27
Posts: 5082
Where's the beer?
|
 |
« Reply #6 on: December 16, 2012, 10:00:06 pm » |
However a MOSFET might be a more sensible choice
I think a logic-level MOSFET would be the most sensible choice, personally. For all the reasons already given, as well as that at 10A the 3055 is going to need one heck of a heatsink...
|
|
|
|
|
Logged
|
|
|
|
|
Windy City
Offline
Jr. Member
Karma: 0
Posts: 76
|
 |
« Reply #7 on: December 16, 2012, 10:08:25 pm » |
VCEsat is also 3V @10A, so there will be 30W of heat to dissipate. Well within the capability of a 2N3055, but it will require a fairly big heatsink nonetheless.
May I suggest an IRL540 MOSFET? It could be used by itself and would not even need a heatsink with a gate drive of 5V and a drain current of 10A. It can handle sustained currents of up to 28A and peak/pulse current over 100A, so it should be able to cope with stall and start conditions fairly well.
|
|
|
|
|
Logged
|
Dirt Biker
|
|
|
|
Offline
Sr. Member
Karma: 15
Posts: 463
|
 |
« Reply #8 on: December 16, 2012, 11:02:19 pm » |
I need to control the speed of a dc motor (0.5 A no load, to 10 A full load). In the picture you can see that I'm using a 2n2222 that controls a TIP3055 (or a 2N3055). The circuit works but I'm not sure that is perfectly ok... Can you check it out? I don't know if I need the two green resistors (with question marks), I didn't use them in the test but I saw that some people use them. What should be the values? Also: what is the functionality of the 1N4007 diode next to the motor? And do I need to put another diode from the collector to the emitter of the 3055? Thanks!!!
That circuit is fine. The resistors you highlighted are not necessary. What the diode does is protect the 2N3055 from inductive kickback. When the motor is energized, a magnetic field forms on the armature. When the current is removed, the magnetic field collapses almost instantly. Faraday's law basically says that the faster a magnetic field changes, the higher the voltage induced in the wire. So, if you put +12 volts into the motor, when you de-energize it (i.e. the PWM goes to the "off" cycle), the magnetic field collapses and can generate hundreds to thousands of volts in the OPPOSITE direction. So, normally the diode does nothing (reverse biased), But if an inductive kickback occurs, the diode is forward biased and "snubs" the spike. Picture a rubber band. Say you hold the bottom of the rubber band and stretch the top end higher and higher (more and more "positive"). When you let go of the top, the rubber band will snap DOWN (negative) very fast. The SAME energy (less losses) that you put into the rubber band stretching it is returned when you release it, but because it's faster, the "snap" stings your skin. The energy is the same, the "delta-T" is much smaller. With Faraday's law, the delta-T is in the denominator, so the less time it takes for the magnetic field to collapse, the higher the voltage is. Make sense?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 15
Posts: 463
|
 |
« Reply #9 on: December 16, 2012, 11:04:04 pm » |
VCEsat is also 3V @10A, so there will be 30W of heat to dissipate. Well within the capability of a 2N3055, but it will require a fairly big heatsink nonetheless.
May I suggest an IRL540 MOSFET? It could be used by itself and would not even need a heatsink with a gate drive of 5V and a drain current of 10A. It can handle sustained currents of up to 28A and peak/pulse current over 100A, so it should be able to cope with stall and start conditions fairly well.
A MOSFET would be a MUCH better device to use. The Rds (saturated) is only a fraction of an ohm on power devices, and the gate can be driven directly from the Arduino port (no 2N2222 or even resistor needed). Excellent advice.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 19
|
 |
« Reply #10 on: December 17, 2012, 11:59:39 am » |
Ok. So if I just swap the 3055 with the Mosfet it should work... Is the circuit in the drawing correct? Do I need a resistor (1K?) from the arduino to the mosfet? The mosfet only needs a small heatsink, with a fan? If this is the final solution I just need to order a couple of IRL540.
Thanks for the help!!
|
|
|
|
|
Logged
|
|
|
|
|
United Kingdom
Offline
Faraday Member
Karma: 131
Posts: 4681
|
 |
« Reply #11 on: December 17, 2012, 12:56:01 pm » |
IRL540 is not a good mosfet to use for switching 10A, its Rds(on) is 0.077 ohms max so it will dissipate around 7.7W when carrying 10A. Look for a mosfet with much lower Rds(on), such as IRLU8726PBF (0.008 ohms max).
|
|
|
|
|
Logged
|
Formal verification of safety-critical software, software development, and electronic design and prototyping. http://www.eschertech.com
|
|
|
|
0
Offline
Tesla Member
Karma: 71
Posts: 6625
Arduino rocks
|
 |
« Reply #12 on: December 17, 2012, 12:58:27 pm » |
Use 150 ohm resistor between Arduino pin and MOSFET gate to limit the current (a MOSFET gate looks like a capacitor of several nF).
What frequency of PWM were you contemplating BTW? Switching losses are proportional to PWM frequency.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 19
|
 |
« Reply #13 on: December 17, 2012, 01:47:27 pm » |
The PWM frequency is the one normally generated by an arduino mega, I prefer not to change it because I'm using several other devices with it. It is also going to communicate through serial usb with a computer. I know that changing the pwm frequency changes the clock frequency of the arduino. Otherwise if changing it isn't a problem, what would be the best pwm frequency?
I'm a bit confused on wich mosfet to use... It has to be a IRL series with very low Rds(on)... Correct? The problem is that a IRLU8726PBF is not so easy to buy online. (I live in italy), IRL540 is more common, also on ebay..
|
|
|
|
|
Logged
|
|
|
|
|
Canada
Offline
Sr. Member
Karma: 3
Posts: 391
|
 |
« Reply #14 on: December 17, 2012, 03:03:01 pm » |
IRL540 is not a good mosfet to use for switching 10A, its Rds(on) is 0.077 ohms max so it will dissipate around 7.7W when carrying 10A. Look for a mosfet with much lower Rds(on), such as IRLU8726PBF (0.008 ohms max).
Hi dc42, no offense intended here, but I think you made a little error on the math. The dissipation would be .77W. @giacomomarelli, the IRL540 should work but it will get a little hot. With an R DS ot 0.077ohms will give about .77W at 10A which will mean a rise in temperature of about 48C degrees C over ambient. With an ambient of 20C, that would give a temperature just under 70C which should be quite safe at that current where the maximum allowable case temperature is about 155C. Although the IRLU8726 would probably be a lot cooler. As stated a small gate resistor might be a good idea for PWM use to reduce current draw from the MCU a bit, the value of 150ohms seems okay and is not critical, use something between 150 and 470 and you should be fine. Other capacitances should be negligible for your use.
|
|
|
|
|
Logged
|
|
|
|
|
|