transistor pwm control help

Hello, I use a transistor MJE3055 to control the speed of the water pump of my computer (5watt) .

The pump's positive wire is connected to the +12v and the negative is connected to the transistor's collector.
They transistor's and emmiter goes to gnd.
I use 680ohm to connect the digital pin output to the transistor's base.
The pump's positive wire is connected to the +12v and the negative is connected to the transistor's collector.

What I realise is that when I write HIGH 100% of the time, its performance is quite low , compared to when directly connect it to the 12v supply.

Am I doing something wrong ?
thank you

How much current does the pump draw (need)?

That MJE3055 has very little gain (typically around 50 or so, but can be as low as 20) and is probably not turning on all the way.

For instance if the pump needs 2 amps, you would need at least 100ma into the base to ensure the transistor is fully on. I think you might want to add a 2N2222 or 2N3904 as a Darlington front end to the MJE3055.

The pump draws 0.5A @ 12v while connected at +12v directly. I havent measured it in my circuit.

I have tried to use IRF510/530 as they have same pinout as 3055's but it didnt work at all.

What transistor would you suggest ?

Okay, then try using a 220 ohm resistor from the arduino to the base. That might give it enough base current if you've got a good MJE3055.

thebadtall:
The pump draws 0.5A @ 12v while connected at +12v directly. I havent measured it in my circuit.

I have tried to use IRF510/530 as they have same pinout as 3055's but it didnt work at all.

What transistor would you suggest ?

It is not only a transistor matter. If you read the 3055 datasheet, you'll see that the transistor doesn't get saturated. You should choose a lower base resistor.... you could try a 220Ohm and see if it works : 220 Ohm will source a Ib value of (5-1,8)/220 = 14,5mA . Which is better than the 4,7mA with 680 Ohm . It could be OK with Ic=500mA given the DC Current gain/Ic curve of the datasheet.

Hummm, how could a IRF510 have the same pinout as a 3055 ??? :astonished: the 3055 is an NPN transistor, the IRF510 is a N-channel mosfet , which has no base, no collector and no emitter :wink:

To drive a power BJT transistor fully into saturation, you should use a base drive equal to one tenth the collector current.

So you really need 50mA into the base of the MJE3055. Do NOT use a darlington configuration, as the saturation voltage will be about 1.4V instead of 0.1V or thereabouts.

So I calculate:


And the LTSpice file:
http://www.polyphoto.com/tutorials/ElectronicsGeneral/BJT_PWMCircuit.asc

Those are just generic NPN transistor models, but should be close enough for this.

BTW, I didn't put it in there, but you should have a diode reverse biased across the pump to help absorb voltage spikes.

polymorph:
To drive a power BJT transistor fully into saturation, you should use a base drive equal to one tenth the collector current.

This is only a rule of thumb and is not always true necessary. In fact, it practically never is. My spec sheet shows that with IC at 1 Amp, the transistor is on as far as it will go at about 60ma and VCE is less than .2V at anything beyond an IB of 35ma. With an IC of 500ma, I'd expect you'd see VCE at .1V with IB > about 30ma and less than .2V with IB > 18ma. These are at the minimum rating of the transistors specifications. It is quite likely that he has a transistor that is on the better side of the minimum specification. Plus, there is no harm in him trying the 220 ohm resistor, or even a 180 ohm.

polymorph:
Do NOT use a darlington configuration, as the saturation voltage will be about 1.4V instead of 0.1V or thereabouts.

You may be thinking of the VBE of a Darlington. The VCEsat would be more like ~0.9V. That would give a power dissipation of about 450mw. A TO-220 package should be able to handle this free air without much trouble.

HI, have you got the GND of the motor supply connected to the GND of the Arduino.
Also have you tried removing the 2N3055 from the board you are using and putting a link from emitter to collector to see if motor now runs at proper speed.
What I am trying to find out if it is a layout/hardware problem that is causing your problems.

Tom.... :slight_smile:

BillO:
How much current does the pump draw (need)?

That MJE3055 has very little gain (typically around 50 or so, but can be as low as 20) and is probably not turning on all the way.

For instance if the pump needs 2 amps, you would need at least 100ma into the base to ensure the transistor is fully on. I think you might want to add a 2N2222 or 2N3904 as a Darlington front end to the MJE3055.

My recommendation would be avoid the 3055 altogether, its 1970's technology,
a MOSFET is the best solution, but it must be logic-level and you do need to find
one with a low enough Rds(on) for your load, voltage/power-loss and heatsinking
requirements. A free-wheel diode is also needed for the inductive load.

[ The 3055 will struggle to switch fast enough for efficient PWM anyway. It used to be the
only cheap option for handling large currents, that day is long, long gone. ]

The 3055 was design for power audio amplification.
It is designed to operate in linear mode always never in saturated mode.

In all I have to agree with some of the recent posts. The 3055 transistor was never really meant to be a switch.

An IRL510 MOSFET (Not IRF) would do the job.

Don't know how true this is, but I had a conversation with a guy that worked for International Rectifier. He told me that the IRL and IRF MOSFETs with the same number (like IRF510 and IRL510) come off the same production line. Besides meeting other characteristics that are the same between them, those that test at 2V < VGS(th) < 4V and Rds < .54 ohm @ VGS = 10V are marked IRF510 and those that test at VGS(th) <= 2V and Rds < .54 ohm @ VGS = 5V are marked IRL510.

The moral of that story is, you may find a IRF510 that works with VGS = 5V in a given situation, then try the same thing with another one and it will not work. The only way to guarantee functionality at 5V is the use the IRL version.