In this tutorial, you’ll learn how to build a 555 PWM Circuit. The 555 timer is one of the most popular integrated circuits for hobbyists. And one of the cool features is its ability to produce a PWM signal.
The circuit is fairly easy to make, and it can control a great variety of things, including motor speed and LED brightness.
555 PWM Circuit Diagram
Note: For VCC, you can use anything from 5V to around 15V. What to choose will depend mostly on the size of the motor you are using. If it is small, you can control everything with 5V.
Components Needed
- A DC motor
- 555 Timer IC
- Q1: IRLIZ44N MOSFET (or any other n-type MOSFET with a suitable gate threshold)
- RV1: 10 kΩ Potentiometer
- R1: 1 kΩ Resistor
- R2: 5 kΩ Resistor
- C1: 100 nF Ceramic Capacitor
- C2: 1 nF Ceramic Capacitor
- D1-D2: 1N4001 Diode
How the PWM 555 Circuit Works
The PWM 555 Circuit is known as an improved 555 oscillator. This is because it makes use of a couple of extra components to improve the output signal that the most common astable multivibrator circuit would give. It uses R1 and C1 to control the frequency of the signal. And you can modify the duty cycle with RV1.
With the duty cycle, you can control the average voltage in the output of the 555, which makes it a very functional analog controller for your projects. For example to control the speed of a motor or dim an LED.
In the example below, we’ll connect a motor.
How to Build the PWM 555 Circuit
Here you can see the circuit already built:
Here is a closer look, be aware of the placement of R1 and one of the diodes, which are placed in a way to not take too much space:
Get the 555 Timer Cheatsheet
A super helpful reference that makes it easy to design circuits, so that you can build oscillators, timer circuits, and more in no time.
The Result
In this video, you will be able to see the output of the 555 PWM Circuit, and how the duty cycle changes while changing the value of the potentiometer. It is also visible that the change in speed of the motor depends on the duty cycle.
The downside with this circuit is that the frequency of the output also varies quite a bit, which means it does not work well with servo motors that require a specific frequency. If you need a specific and stable frequency, check out this project on controlling a servo motor with the 555 Timer.
More 555 Timer Tutorials
Get the 555 Timer Cheatsheet
A super helpful reference that makes it easy to design circuits, so that you can build oscillators, timer circuits, and more in no time.
YOUR 555 MOTOR TIMER DOES NOT WORk
in other words it sucks
It does work, as you can see in the video. But if you’ve found an error somewhere in the article, let me know. Or if you’re having problems getting it to work yourself, just reply here with the motor, mosfet, and voltage you are using and we’ll see if we can help you spot the issue.
Yes it works. But I can not get smaller duty-cycle than about 9%? I have a scoppy oscilloscope. /Cheers
That might be correct. This isn’t an ideal PWM controller. If you want more control, I recommend you use two 555 timers. You can base it off the circuit shown under “Controlling a Servo with 555 Timers” in this project: https://www.build-electronic-circuits.com/halloween-project-useless-machine/
Just skip R4 and and SW1. And replace R3 with a potentiometer to control the duty-cycle.
Ofc it does work. you probably did not connected something
Well johnny tell us what goes wrong.
Skill issue tbh
I have a circuit that uses a NPN transistor to control a small DC motor using a 555 as a timer.
It will not work. But if I replace the motor with a resistor and an LED to the collector the NPN works fine.
I am wondering why, Can you tell me why it does not work or am I doing something wrong.
A motor needs much more current to run than an LED. So I’m suspecting that you’re not getting enough current through your transistor.
Check how much current your motor needs, and check how much current your transistor supports. Many common transistors support only up to 100 mA, while a motor often needs more.
If you transistor supports the current, then I’m guessing your transistor isn’t turned properly on. You probably have a base resistor, right? You can try a lower value for the base resistor.
Thank you for your efforts very informative.
Thank you.
The circuit should really have a flyback diode across the motor terminals. Otherwise the back emf spikes can fry the MOSFET.
Good point!
VERY IMPORTANT ACTUALLY!
Running this without a flyback diode *will* kill the MOSFET over time because the inductance of the motor can generate 100+V which only the biggest FETs can handle safely without breaking.
So put a diode between Vcc (Cathode) and Source (Anode) of the FET (parallel to the motor) and it will give the inductance a path to dump it’s current.
Cheers!
Hi, I’ve been trying to make this circuit and the potentiometer doesn’t change the motor speed in the simulator I used:
https://www.tinkercad.com/things/7Weuim8GKzu-pwm-circuit
I’ve done everything almost exactly as you showed on your breadboard photo with some minor changes due to software limitations. If you can, can you check the circuit and let me know what I’m doing wrong? I want to build this on a PCB and don’t want to waste parts on screw ups.
That link is not working, sadly.
This circuit doesn’t have any implemented software, what issues are you referring to?
I’m simulating it in tinkercad and probably worded it wrong.
Is there any reason the potentiometer might not be changing the RPM of a motor if all the other parts of the circuit are correct?
Ive tried this and the pot does not change the speed of the motor.
It just turns. ?
Can the capacitors be ceramic disc type ? or do they have to be tantulum or electrolytic?
Thanks
Got it to work, forgot to hookup pin 7 on the 555.
Thanks
do you have insight into how, mathematically, R1 and C1 controls the frequency? Id like this done with a 4Khz wave.
Yes, you’ll find these formulas in the main article: https://www.build-electronic-circuits.com/555-timer/