problems with pump speed control

Hi, I'm trying to speed control a 12V/3A pump using PWM and an IRF540 FET.

The circuit works ok driving a 12V fan, but when I connect the pump the voltmeter only reads about 7V with pwm=255, and pulses every second or so when I reduce the pwm. I also tried with a TIP-122 transistor and the result is the same.

This is the pump:
http://www.ebay.co.uk/itm/New-DC12V-Micro-Solar-Pump-Speed-Adjustable-2500L-H-3-5M-Micro-Submersible-Pump/391712440327?_trksid=p2047675.c100011.m1850&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20140107083358%26meid%3Db6fe5a4c9f394287a1c9e96886707cd3%26pid%3D100011%26rk%3D4%26rkt%3D8%26sd%3D381887488607

It has a manual dial to set the speed manually, and I set this to maximum. If I set it to minimum the multimeter reads 12V at pwm=255 but there is zero flow.

This is roughly the circuit I'm using, except the power supply is 12V and the input cable is connected to a pwm pin:

Any input much appreciated.

Am I missing something or is the diode in that circuit doing nothing at all?

Thanks, I've attempted to correct it. Don't think that was causing the problem though.

That is a brushless motor.

trojanhawrs:
Am I missing something or is the diode in that circuit doing nothing at all?

It is a snubber diode.Used to remove the back emf generated by a commutated motor.

The "motor" is a 12V 3A pump, there wasn't a pump object in autodesk circuits to draw it properly.

The problem seems to be with the pump, the circuit works ok with a motor (I tested a 12V fan), I'm wondering if the dial (some sort of potentiometer?) used to control the pump manually is confusing things?

The diode should be in parallel with the motor I think, cathode on live side and anode on earth.
What are you using to supply this 12v? 3a seems like a fair old current

A 12V/5A regulated PSU, the pump runs ok standalone and the speed can be controlled manually via the dial. It just doesn't like being controlled via my circuit.

For example, turn the dial half way and the pump pumps smoothly at half speed, as you'd expect. Do the same via pwm=128 and it pumps slowly for a second, stops for a second, then repeats. It's also not getting full power when pwm=255, I suspect the manual speed controller is sucking up some of the voltage but it's a sealed unit so I can't bypass it unless I cut the wire.

Just had a quick look at the datasheet for your transistor, I'm pretty sure that's your problem! It's apparently designed for low speed switching applications, you need a fast one for pwm. The one that ships with the starter kit will do if you have one

Actually I might be talking rubbish about the starter kit one - double check the data sheet on that first. What you want is an n-channel MOSFET that will operate on 5v gate voltage, and obviously built to handle your v and I requirements, with fast switching

ash73:
A 12V/5A regulated PSU, the pump runs ok standalone and the speed can be controlled manually via the dial. It just doesn't like being controlled via my circuit.

For example, turn the dial half way and the pump pumps smoothly at half speed, as you'd expect. Do the same via pwm=128 and it pumps slowly for a second, stops for a second, then repeats. It's also not getting full power when pwm=255, I suspect the manual speed controller is sucking up some of the voltage but it's a sealed unit so I can't bypass it unless I cut the wire.

The link to the pump you provided says that the motor is brushless (BLDC).

I am not surprised you have problems as these are not designed to run from PWM generally.
I am a little surprised it works at all.

You could try cutting the wire from the control box and using one of these (or similar DYOR) controlled by the arduino servo library.
No guarantees though.

So wrong mosfet and wrong pump, off to a good start then :slight_smile:

If not PWM, how else does one control the speed of a brushless pump?
(EDIT: Sorry missed the link to the ESC will read up on that)

Boardburner2:
The link to the pump you provided says that the motor is brushless (BLDC).

I am not surprised you have problems as these are not designed to run from PWM generally.
I am a little surprised it works at all.

What makes you think that? Had a brief Google but don't see anything indicating it should be a problem

trojanhawrs:
The diode should be in parallel with the motor I think, cathode on live side and anode on earth.

It is.

trojanhawrs:
What makes you think that? Had a brief Google but don't see anything indicating it should be a problem

The circuit you are using is suitable for controlling brushed 'standard' DC motors with PWM.

The motor that you have is BLDC they are controlled by specific methods and IC's which your box will have .

They are not suitable for control by PWM on the supply leads.

Great, that's pinpointed the problem, many thanks for your help chaps!

I shall have to read up on ESCs.

ash73:
So wrong mosfet and wrong pump, off to a good start then :slight_smile:

It is an expensive pump.
Suitable drivers for those motors have been around for a long time.
They are commonly used by the RC aircraft (and boats e.t.c.)community though so are cheap to buy these days.
Could be a fairly cheap rescue.

Can you say what you are trying to achieve ?.

It's a scientific experiment, the pump needs to be speed controlled so I can create an accurate water pressure in a pipe, the Arduino will read from a pressure sensor and adjust the pump speed to correct the pressure.

I have a r/c heli with an esc, didn't even occur to me the pump might work the same way; electronics is new to me.

Could you just use a digital pot in place of the mechanical one since you already have the speed controller? Would be a fairly easy solution.

Wow that's a nice idea, thanks I'll give that a try! :slight_smile:

Just wanted to report back Alka's suggestion works perfectly, I hooked up a MCP4131 digital pot to the existing speed controller and it works just fine.

Many thanks for the help :slight_smile: