PWM for small air pump.

I've just bought a couple of small air pumps to use as part of my solar powered, Picaxe controlled, filter, top-up, aeration and circulation system for a small (2000 Litres - 440 Gallons) wildlife pond.
These are the ones - - Less than 3 quid apiece on eBay. Primarily used for blood pressure monitors and drinks dispensers.
Brushed motors so limited lifetime, but they feel solidly built and won't be running continuously and at 3 quid a throw, I'll keep a few spares.
All the specs I've seen say power consumption is 300mA, but mine both measure (checked on 2 meters) 60mA off-load, rising to 75mA when pushing a large quantity of air through an airstone (diffuser) in 2'6" of water.

The pump (only using one) will be driven from 12V via a ULN2803A and at full whack is pushing too much air. Rather than throttle the air-line I want to run this with PWM from the Picaxe.
I haven't tried this yet (need to make a couple of hardware mods on the board first) but what sort of frequency should I be looking at to get maximum efficiency?

Last edited:
Hi Bear,

It most likely would be but I've only got 12V available from my lead-acid battery and want to be as energy-efficient as possible ('cos it's solar powered and this sunshine ain't going to last forever :) so I don't want to use a resistive dropper or regulator which would lose the excess voltage as heat. I'd also like to run it at two different speeds which would be a lot easier with PWM.


Senior Member

I don't think that there is any generally "best" number for PWM frequency. Motor efficiency is lower at lower frequencies, but switching losses are higher at higher frequencies. If you feel the ULN2803A and motor with your finger after a few minutes of running, that will give you some idea of the heating losses.
Some motors can be noisy at lower frequencies.
I would start at around 2 kHz.



Senior Member

IMHO the ULN2803 is not a good choice for a PWM system because of the high saturation voltage drop (> 1volt) and poor switching speed of the Darlington transistor configuration. But if you must use one, then don't forget to connect the supply voltage pin (for the catching diode) and I'd suggest a frequency as low as possible (perhaps 100 Hz or less). Unless driven directly from a battery you might need quite a large supply decoupling capacitor.

Alternatively (particularly if acoustic noise is an issue), you could use one of the many cheap "buck" converter modules, which will effectively drive the motor with a lower voltage dc. It will operate at probably hundreds of kHz, but with the "appropriate" components and circuit, so should be more efficient and noise-free (acoustically and electrically).

Cheers, Alan.


Senior Member
I have built and used several very simple speed controllers for a 12V, 3A DC motor.
I used a IRF530 MOSFET with the Picaxe PWM output driving the gate through a 220 ohm resistor and 100K to ground. A 1N4004 diode was installed across the motor terminals to dissipate any high voltage spikes.
PWM frequency was 978 Hz at 4 MHz processor (-08M) speed using code:
pwmout,255,Duty where Duty was varied between 0-1020.
Ideally a MOSFET driver should be used, but at this low current and frequency I found it to be unnecessary.
I do not pretend that this is a perfect or optimised solution, but it does work, is inexpensive and about as simple as you can get.

Thanks All,
I was wondering about the suitability of ULN2803 with PWM, and you've confirmed my suspicions. The circuit is already built and been in use for a few years so I don't want to chop things about too much, but I do have a couple of buck converters handy and will try a simple MOSFET driver as well.

Last edited: