Tuesday, June 10, 2008

Simple (and dirty) Pulse Width Modulation (PWM) For Motor Speed Control

Simple circuit for DC Motor speed control (fan speed control, light dimming and etc) using the 555 timer. Also a good starting point for novices wanting to get their hands dirty with the 555 timer IC. Some would argue that this is not the most efficient approach, but hey (read the title), it's simple, and it works.








click image to enlarge



click image to enlarge

Introduction

Those of you modders, tinkerers, makers at one point or another would have encounter the need to have a finer control of DC motor speed, be it for robotic projects, RC, case mods etc. The simplest, no-brainer approach to that is by adjusting the voltage supply to the motor using a potentiometer. The higher the voltage, the higher the speed and vice versa.

Might be a good option for some cases, but the potentiometer approach doesn't perform too well when a much more stable and refined control is needed.



Pulse Width Modulation (PWM)

Put simply PWM is the process of switching power ON and OFF to a device in pulses at a specific frequency. Same approach used in commercial light dimmers, DC motor speed controller, CPU fan speed controllers and etc.

The fundamentals. Imagine your everyday incandescent light bulb. When you turn the power ON, it doesn't lights up to it's full brightness instantly, instead it will take (approximately) a couple of seconds to do so. Similarly when you turn the power OFF, it will take a couple of seconds for the bulb to die off.

Now, imagine you're able to flick the power switch ON/OFF fast enough. If you can time your ON/OFF flicking just right (of course it's difficult), the light bulb will actually dim instead of flickers.

The ON/OFF cycle is known as the duty cycle. Below are the visual representation of 50%, 80% and 20% duty cycle.




The 555 Timer IC

The 555 timer is arguably one of the most popular IC ever made. There are thousands of resources online if you're interested to delve deeper into the subject. I'm just going to give the simple description directly relevant to the build.

You can get the 555 at any electronics supply store, just ask for 555 IC (or IC tiga lima in Malay) from the auntie and you're set. If you can't seems to find it, check out the Amazon link for 555 timer below.






PIN 1 - Ground
DC Ground


PIN 2 - Trigger
When LOW, it causes the Output pin to go HIGH. Activated when voltage fall
below 1/3 of +V.


PIN 3 - Output
Output is HIGH when Trigger pin is LOW. Output is LOW when Threshold pin is
HIGH. Output is LOW when reset pin is LOW.Output pin is able to source or sink
current.


PIN 4 - Reset
Short to +V when not in use.


PIN 5 - Control Voltage
Grounded through a 0.01uF capacitor when not in use.


PIN 6 - Threshold
When voltage reaches 2/3 of +V, this pin will cause Output to be driven LOW.


PIN 7 - Discharge
Grounded when Output pin goes HIGH.


PIN 8 - +V
DC Power









How the circuit works




When the circuit is powered up, the C1 capacitor will initially be in a discharged state. Thus, the Trigger (pin 2) will be LOW, driving the Output (pin 3) to go HIGH. Discharge (pin 7) goes HIGH and shorts to ground. The cycle begins.

The HIGH Output will cause C1 capacitor to be charged through the R1 and D1 path. Upon C1 voltage reaching 2/3 of +V, the Threshold (pin 6) will be activated and drive the Output (pin 3) LOW. Discharge (pin 7) goes LOW. The time it takes for C1 to charge depends on the position of R1.

Since Output (pin 3) is now LOW, capacitor C1 will start to discharge through the D2 and R1 path. When the voltage of C1 drops below 1/3 of +V, Trigger (pin 2) will be LOW, driving Output (pin 3) to go HIGH, and Discharge (pin 7) to go HIGH and shorts to ground. The cycle repeats itself.

You've probably noticed by now that the circuit is using Discharge (pin 7) to drive the motor, simply by shorting to ground in each cycle. You can add some amount of protection if you're concerned about back EMF from the motor.

Pin 4 and 5 are not used, and pin 1 is simply tied to ground. The circuit can take between +3v to +18v. The Frequency is around 144Hz. Do note that, doubling the value of C1 will reduce frequency to half, tripling will will reduce frequency to 1/3, and so on.


Part list

1) 555 timer IC - 1
2) 100K variable resistor - 1
3) 1N4148 Diode - 2
4) 100nF capacitor - 2


So that's it

Any input, comments, suggestions are welcomed.



17 Comments:

Zana said...

ooh, so this is what you do when *she's* not around eh? hehe.

anyway, congratulations on finally getting the www.easterngeek.com domain name working :)

looking forward to reading about your laser thingy project, though i think i've seen it first hand.

how lucky is that :)

oOFooi said...

Congratulation! You hard work finally paid off. :)

Anonymous said...

Couldn't get it working... :?(

I've got a 1.5 to 3V small DC motor hooked up to two 1.5v batteries.

Do I need a battery or motor with a larger voltage rating?

Please... help!
Tom

Chein said...
This post has been removed by the author.
Anonymous said...

Hiya,

may I know that what duty cycle will be there for this circuit. If I place a fan there in the output instead of a motor, with all the values of capacitors and resistors same, what will be the duty cycle for it.

Regards.

Chein said...

Hi,

To the above question:

The duty cycle depends on the position of the variable resistor R1.

If you turn R1 halfway through(its midpoint) then it will be 50% duty cycle. One tenth of the way, then it's around 10% duty cycle.

Sergio said...

Thanks for posting this. Very nice and clear. My question is: how many amps will this circuit take? I need to control a 12 V motor that draws a max of about 7 amps. I am currently using a purchased pwm, but after about 4 amps the digital ammeter fluctuates wildly and becomes unreadable. Thanks.

Anonymous said...

What about using a cmos 7555? I have a whole bunch of them and I tried to get one to work with a 9v an a resistor and got it to I think? modulate but only with my finger shorting the leads of the led together?

Anonymous said...

This is a great and simple PWM circuit. I was wondering if their is any other way to decrease the voltage drop than to in increase the voltage? Right now I can only light up 3 LEDs with 12v.

Anonymous said...

Hi There nice circuit! My question is that I want to use a 500k pot with a "click off" mechanism (the only one I have) so what value do I need to change C1 to if I want to drive a 12 cm,12V computer fan with a 500K pot? My power supply is 12V which can supply 1A.
Thanks!

Chein said...

Using 500K pot:

My guesstimate, the current rating of your cpu fan is around 100mA - 200mA, if that's the case, then the setup you've just mentioned should work.

The only difference in your case is the drop in the frequency of the pulses.

Since your pot is 5x higher, it will take 5x longer for C1 to charge and discharge.
Thus the frequency of the pulses will be around 1/5, that's around 29 pulses per second (28.8Hz).

If insist in getting the 144Hz using the 500K pot, then you will need to reduce C1 value to 1/5 of 100nF.

Hope that helps. Cheers

Anonymous said...

Thanks! Using a 20nf cap now but the circuit is only putting out 4V. Tried using a 2n3904 npn to drive the fan but I cant get it to work. I have no idea what im doing wrong? Emitter to ground,collector to -ve from motor and base to pin 7 on 555.I think thats right? Would using an even smaller cap raise the average voltage?
Thanks
Rich

Anonymous said...

thanks for your nice tuturial.

I am not an expert, but I could reply the wiring of the PCB, but the image is not clear, could you a more clear picture?

Anybody could help me with the PCB scheme?

mlerei said...

Chein,

I teach an electronic communications class and I was wondering if you would mind me using your circuit in one of my laboratory lessons on PWM.

Thanks!
-Emily C.

Chein said...

Emily C,

Sorry for the late reply.

I have no problem with that, by all means, go ahead.

Some "attribution" to this blog would be nice though ;)

riley said...

Hi, i came upon your video and was wondering if the pot controls the speed of the motor, provided that the voltage is kept constant at some point.?

Chein said...

Riley - FYI,the voltage supplied to the motor is always at max, but in pulses.

The pot controls how long each pulse is (the pulse width).