PWM Motor Speed Controller Circuit Using IC556

Controlling or varying a DC motor speed may appear to be not so difficult
and you may find plenty of circuits for it. However these circuits do not
guarantee consistent torque levels at lower motor speeds, making the functioning
quite inefficient.

Moreover at very low speeds due to insufficient torque, the
motor tends to stall. Another serious drawback is that, there’s no motor reversal
feature included with these circuits. The proposed circuit is completely free
from the above shortcomings and is able to generate and sustain high torque
levels even at lowest possible speeds.

Circuit Description
Before we discuss the proposed PWM motor controller circuit, we would want also
to learn the simpler alternative which is not so efficient, yet may be
considered reasonably good as long as the load over the motor is not high and
as long as the speed is not reduced to minimum levels.
The figure shows how a single 555 IC can be employed for
controlling DC motor speed, we won’t go into the details, the only notable
drawback of this configuration is that the torque is directly proportional to
the speed of the motor.
Coming back to the proposed high torque DC motor speed controller circuit design, here we have used two 555
ICs instead of one or rather a single IC 556 that contains two 555 ICs in one

PWM Motor Speed Controller Circuit Using IC556

Briefly the proposed DC motor controller includes the
following interesting features:
Speed can be varied continuously right from zero to maximum,
without stalling.
The torque is never affected by the speed levels and remains
constant even at minimum speed levels.
The motor rotation can be flipped or reversed within a
fraction of second.
The speed is variable in both the directions of the motor
The two 555 ICs are assigned with two separate functions.
One sections is configures as an astable multivibrator generating 100 Hz square
wave clocks which is fed to the preceding 555 section inside the package.
The above frequency is responsible for determining the
frequency of the PWM.
The transistor BC 557 is used as a constant current source
which keeps the adjoining capacitor at its collector arm charged.
This develops a saw-tooth voltage across the above capacitor,
which is compared inside the 556 IC with the sample voltage applied externally
over over the shown pin-out. 
The sample voltage applies externally can be
derived from a simple 0-12V variable voltage power supply circuit. 
This varying
voltage applied to the 556 IC is used to vary the PWM of the pulses at the output
and which eventually is used for the speed regulation of the connected motor.
The switch S1 is used to instantly reverse the motor
direction whenever required.

Parts List for the proposed high torque DC motor speed controller circuit
R1, R2, R6 = 1K,
R3 = 150K,
R4, R5 = 150 Ohms,
R7, R8, R9, R10 = 470 Ohms,
C1 = 0.1uF,
C2, C3 = 0.01uF,
C4 = 1uF/25V
T1, T2 = TIP122,
T3, T4 = TIP127
T5 = BC557,
T6, T7 = BC547,
D1—D4 = 1N5408,
Z1 = 4V7 400mW
IC1 = 556,
S1 = SPDT toggle switch

The above circuit was inspired from the following circuit which was published long back in elecktor electronic India magazine.

PWM Motor Speed Controller Circuit Using IC 555

The first diagram can be much simplified by using a DPDT switch for the motor reversal operation, and by using an emitter follower transistor for the speed control implementation, as shown below:

98 Replies to “PWM Motor Speed Controller Circuit Using IC556”

  1. Hello. I've been looking for a DC motor speed controller to incorporate into a street rod. The PWM design above looks like it will work perfectly for my application but I'm unsure of the continuously variable DC voltage source that is required. My application is in a standard 12 volt vehicle. Can I use a simple potentiometer or will I have to build a custom circuit as the variable DC voltage source? Thank you. Dave

  2. Hi Dave,

    The input to the above circuit requires a continuously variable voltage input for getting equivalent motor response at the output. This can be implemented only through a variable DC power supply, for example through a simple circuit using the IC 317. This variable supply will incorporate a pot which can be directly used for varying the voltage to the circuit and the motor speed.
    If your requirement does not include a bidirectional motor movement, then the above circuit can be simplified to a great extent (by eliminating the transistor bridge network)

    1. Swagatam,thank you for responding. I've been traveling, just got home. Would you happen to have a schematic for a simple variable DC power supply using the IC317. I'm self taught in electronics and still find it difficult to design even a simple circuit from the ground up. My application is not bidirectional and my desire is to simply reduce the speed of a DC motor, not necessarily to change the speed often. Once I get the speed that suits me it will not change. Thanks again for taking the time to answer my elementary questions. Dave

    2. Hi Dave,
      There's already one article regarding 317 power supply published in this blog, you can type 317 power supply in the search box provided at the top right of this page, you should be getting the link of that article.
      For application you just have to modify the above circuit in the following manner:
      eliminate all transistor stages after the pin #9 of the IC.
      Now at pin #9 connect R8 as its shown and in place of T6 connect a TIP 122 transistor.
      Connect its collector to the positive and connect the motor across its emitter and ground.
      Now applying the varying voltage at pin #11 should make the motor speed vary correspondingly

  3. I am facing this exact problem of torque being proportional to speed in a simple PWM-based speed control setup. So, I am very excited about your solution here.

    I would like to implement your solution through on an ATMega168 PIC, which I believe should be possible, if I had any idea what is going on in your circuit.

    Unfortunately, I am much more of a programming guy than a circuitry guy, so I'm having difficulty understanding exactly how this circuit works on a theoretical level.

    If it is not too much trouble, could you explain in what way the PWM output is being varied (e.g. frequency? duration?) and how the necessary variation is being determined?

    Thank you very much!


    1. The circuit is basically wired around the IC 556 which is nothing but a couple of IC 555.
      We all know how versatile the IC 555 is. Here one of the ICs decides the frequency of the PWM, while the second IC responds to this frequency and also to the externally applied input varying voltage and generates an output having correspondingly varying pulses.
      The frequency remains constant as the first IC generates it at a constant rate, however the pulse width constantly varies depending upon the voltage that's being applied externally. The pulse width is directly proportional to the applied voltage level.
      This is the basic principle through which the circuit operates.

      You may refer the IC555 datasheet for more information.


    2. Thanks for your response. I'm going to build this myself. I'm putting together my order on Digikey, and that's generating some more questions:

      -Wattage of resistors? I was going to go 1W on all
      -Voltage of capacitors? I was going to go 25V on all to match one specified
      -Voltage of BC547 & BC557 transistors? Options: 45V or 30V
      -Frequency of 556? Options: 500kHz, 1MHz, 2.1MHz, 2.5MHz, 2.7MHz
      -Can I substitute a 500mW Zener diode? No 400mW in stock, all other specs same

      Thanks again,


    3. Resistors are all 1/4 watt, 5%, CFR.
      25 V for the capacitors is OK.
      BC547 and 557 are specified with 45V (CE).
      The frequency is around 100Hz.
      zener wattage is not critical, any value will do.
      Thanks and Regards.

    4. Hello, again,

      While I am waiting for my components to arrive, I am working to understand the circuit. I would like to ask three questions, please. The links lead to modified images of your circuit diagram, for reference.

      1. I do not need to switch directions. Have I correctly modified the circuit to remove the switching ability: Motor Speed Control, No Switch

      2. I do not understand how the upper left quadrant of your diagram functions like a standard astable setup for a 555/556. I have changed it slightly in the green circle to show what I would expect an ~100Hz (93Hz) astable setup would look like. Am I incorrect? Motor Speed Control, Revised to Generic Astable Circuit

      3. I really have no idea what the components in the upper right quadrant circled below do. Could you please explain the theory behind this circuitry? Area I don't understand

      Thank you again for your time and your patience!



    5. Hi,

      In the first link, your approach is correct but the wiring is terribly wrong 🙂

      The second link is OK if you have confirmed the calculations.

      As explained in the article the transistor BC557 and the associated components function as a constant current source and a saw-tooth generator, required for feeding the PWM generator stage.

      The following article, also written by me will help you to understand the concept more accurately:


    6. Haha, yes. It was the quickest way to draw it from the original diagram.

      Yes, I have done the math and it works out.

      Thanks for the link to the article; that is just what I was looking for!



  4. Hello, again,

    So, I built the circuit from your diagram and am not experiencing the low-rpm torque and low-speed start I had been hoping for. Thinking I had made a mistake, I built it again from a bare board, but got the same results.

    With the various 12V brushed DC motors I've tried, I cannot get a start below 2400 RPM (3.2V input to pin 11/Control B). If I start at 2400 RPM, I can then slow the motor down from there, but stall torque is very, very low and the motor cannot restart itself. This is similar performance to simple PWM solutions I have tried.

    I'm not sure if there is a way that you can help me trouble-shoot this. I have included a photograph of my breadboard, for whatever that's worth. Any input would be greatly appreciated. I really want to achieve the low-RPM torque you say is possible.



    1. Hi,

      This circuit was tested by me and I found the results very satisfactory and that's why I expressed my confidence in the circuit. I had used two 555 ICs in place of a single 556, but I don't think that's any way related to the performance of the circuit.
      Earlier I had tried the ordinary single 555 type configuration and could not initiate the motor at lower speeds and every time had to provide a manual spin to the motor spindle for making it start, however the above circuit was completely free from this problem.
      Did you use a Darlington type of transistor at the output? Because ordinary transistors cannot provide the required leverage, moreover the current of the power supply should also be adequate or rather on the higher side.
      I really hope it works for you as expected, I don't seem to get any other clue right now.


  5. I am trying to make a grinder (like a dremel) with full speed control 50 to 5,000 rpms. It has to be compact and cordless. I have tried a couple of options, but I cannot get consistent low speeds. I would like to use your circuit and the variable dc voltage supply. Would you mind providing any suggestions on a motor that might work well. I am going to modify to eliminmate the bi-directional and would like to lower the voltage to 9 volts to save space. Any advice is greatly appreciated, as I am a novice. Thanks Gdgolden

    1. The above circuit is just a control unit which is responsible for generating the varying PWM outputs, the actual power to the motor will depend on the transistor used at the output.
      Any DC motor can be used as per the need, the output transistor will need to be matched with it, that's the only criterion.
      If you are very new in the field then I wouldn't advise to build this circuit as it's relatively difficult to optimize and understand.

  6. hi i ma a student n wish to do ur dis as my project can u plz guide me with some imp steps….and can i know d ratings of the dc motor used so dat i can use according to my application..aishwarya

    1. bt m a engineeing student n not totally new. n sir can u plz explain y d ic is operated on 12v as in awl ics basically work on 5v so dis wont heat d ic up ?

  7. ohh thanx 🙂 i decided to use dis dc motor 4 sprinkle irrigation using pumb wich will b driven by the dc motor. can u suggest me d ratings of the dc motor 4 dis application n also d pump n sprinkler if u hav any idea…aishwarya

    1. okk thank you. can u please explain the how the T1, T2, T3 and T4 work and what does the diodes do? also T6 and T7 fuctioning.

    2. T1—T4 forms a bridge configuration to enable the motor rotate both ways, diodes are for cancelling the back emf from the motor and for safeguarding the transistors.
      T6 and T7 are for enabling reversing of the motor at any instant.

  8. Having built this circuit as shown and having it not work. The output of the first stage had a constant dc output, no oscillator.
    I went to the data sheets and formulas to see what's wrong. The configuration of the astable oscillator is correct but the resistor values are way out to lunch. The configuration is for a 50% duty cycle oscillator, not the standard astable cct. Therefore, for 100Hz, 50% duty cycle, C = 0.1E-6 uF,
    Ra=R3= 82Kohms and Rb=R4= 33Kohms.
    F=1.44 / ((Ra+2Rb)C)
    F= 97Hz

    The second stage looks right and the 150ohm resistor is not really necessary according to the LM555 datasheet. Check the "linear ramp" configuration, which is what the second stage is based on. I'm going to rewire and test again. I'll let you know how it goes.
    LG92 Bsc, EE

  9. Hi, I'm trying to control motor dc velocity through an IC L293d and PWM generated by arduino but when I vary the duty cycle of pwm for low velocity the motor loses its torque and can't raise a constant load however with a duty cycle which generates high velocity it can, what do you advice me for that problem.

    The motor source is diferent from arduino source and is enough to give high current


  10. But I know the pwm duty cycle, maximum duty cycle for high speeds and low duty cycle for low speeds, this pwm is generated with arduino trough its analogWrite function.

  11. Hi Swagatan, thanks for your advise.
    I tried with TIP35, just to on/off the motor at collector.
    I put the current meter at collector which show about 6Amp.
    But TIP35 become extremely hot although I use heat sink.
    It current rating at collector is 25Amp? Please advise me. Thanks

    1. Hi Ye,

      Did you connect a diode across the motor terminals for protecting the TIP35 from back emfs? The device may be getting hot because it may not be saturating fully, try reducing the base resistor value until the transistor becomes fully saturated and stops getting too hot.

  12. Hi Swagatam, just found your blog. Thank you for so many interesting circuits and ideas (many I remember from similar circuits from old magazines). Just one question…are the connections correct for T6 and T7 ( closed circuit between emitter to emitter), did I miss something here ?

    1. Hi Bracelectron,

      Thanks for pointing it out, yes the emitter junction needs to be connected to the negative(0) rail of the supply, by mistake it's not shown in the diagram.

  13. Hi

    I will use a 12v DC motor that draws around 250mA with this circuit. Do I need to modify the circuit for use with this motor. I don't care if the components or overkill. I just want to know if it'll work.

    Also, do I really need a powersupply? Can't I just as well use a pot and take the power from the same powersupply that powers the 556?

    1. yes the same circuit will work for your application.
      you can simply use a pot as a potential divider for getting a variable control from the existing power supply itself, connect the slider arm of the pot to pin#5 input and the other two leads to positive and negative respectively.

    2. Thanks

      I have some problems though.

      Firstly, the pot I use doesn't seem to work. I have a cermet variable resistor that I'm trying to use. I connect 12V to one of the outer pins and ground to the opposite outer pin. Then, I connect the middle pin to pin#11 on the 556. You said pin#5 but I guess you meant pin#11 right? I've tried pin#5 but that doesn't work either. I have measured the voltage between one of the outer pins and the middle pin of the pot and the voltage goes between 0V and approx. 8,7V when I turn its nob. Still the rpm of the motor isn't affected when I turn the nob of the pot. If I turn the pot all the way down, the motor stops but when I start to turn the nob, the motor reaches full rpm emediately. Do you have any idea what I'm doing wrong here?

      Also, the direction of rotation doesn't seem to work. It works only in one direction. I have set the circuit up, teared it down, and set it up again. Same results. I'm using the exact same components and component values as in you diagram on this page. I measure the current between 12VDC and the T1-T4 bridge and I get current when the switch is in one position but not when I switch to the other position. What could be the issue here? I'm not the best when it comes to electronics but I try to learn as I go. I try to do as much troubleshooting as possible but with this one, I really can't figure out what's wrong.

    3. Please try afresh and make the circuit which is shown at the bottom of the article, inside the magazine snippet.

      Use BC557 for the PNP transistor instead of BC547 which is wrongly printed.

      You can eliminate the lower portion of the design initially and test the working using the following format, once the basic format is confirmed you can proceed with the lower portion of the circuit.

      Make it in this format:

    4. Thanks. Working now.

      I'm just wondering one thing. Allthough the voltage across the middle and one of the outer pins on the pot is just below 9 V, the voltage across the motor is only about 3 V. Is that correct or is something wrong? Also, the speed increase is very choppy and not all that smooth. I know it can be, cause it was very smooth using another circuit with one 555 timer. Only problem with that circuit was that the torque was low and the motor didn't start without mechanical help when voltage was aplied if the pot wasn't turned all the way up.

    5. you can try adding a 1000uF/25V capacitor right across the motor terminals, this would hopefully arrest the stuttering.

      The voltage at the pot terminals is constant DC while across the motor it's chopped DC so naturally the meter will read an average lower value voltage across the motor, of course that will depend on the position of the pot.

    6. I have to reevaluate my last statement. The circuit does NOT work for me. I imagine it's intended to work like an rpm control right? It doesn't. The change in direction of rotation works great but the rpm control does not. I have followed all your tips. I have rebuilt the circuit many times now but it doesn't work for me with any small motor that I've tried with it. When power is applied, the rpm starts high and then it just gets marginally faster when pot is turned up. It doesn't go gradually from zero to full speed as pot is gradually turned up as I imagine it to work.

      Is this circuit any good? I'm starting to believe that it's something wrong with the design.

    7. The circuit shown in the second image is absolutely good, I have tested it myself and could reduce the motor RPM right upto zero without affecting the torque.
      Try applying the control voltage from an external variable power supply, I did it in that way for my prototype.

  14. Sir my application is to control dc motor which has a high capacity (truck wiper motor) with quick start & stop. I thick we can't use this circuit for same application.So please give any idea to control this motor & if there is possible of quick start stop control of dc motor with speed control please give circuit for same to me.sir please reply as soon as possible.

  15. Sir we see your above comment that use TIP35/36 pairs with BC547/557 Darlington base drives for high current supply application for 12v & appo. 7A but we don't this things so please email me circuits with this verification & as mention in above comment it is possible quick start & stop control of dc motor . then give circuit include quick start stop of dc motor & speed control. thank you..
    email id:

    1. Jignesh you can use the above circuit for controlling 24V motor also, but for quick start and stop we'll have to add an additional stage to it….if i get time i'll try to update the above article with your required design

  16. sir it is possible to use this circuit for high current application or require changes then please guide me.
    & as mention about my requirement for quick start stop application please email me as soon as possible sir integrated circuit for both speed control & quick start stop at above email id.because we require this circuit for our project application & sumission for it on 22 dec 2013. thank you..

    1. For high current operation you will have to upgrade the transistors appropriately using tip35/36 transistors.
      I am sorry due to high work load i won't be able to produce the modifications quickly.

  17. I am looking for a motor and a controller for a lathe. I am researching both AC VFD and DC PWM controllers. I need it to be able to provide good low speed torque, to be able to plug in directly to a 120 V single phase standard house electrical outlet, and to be able to handle 1 full HorsePower or 750 watts. The gear ratio on my lathe is right at 8.5 to 1. I need it to run with high torque at the lowest recommended spindle speed of 60rpm. That would make the min rpm for the motor right around 510rpm. The spindle speed can max out anywhere between 300rpm and 600rpm. That would make the motor to max out between 2550rpm and 5100rpm. My first question is: What speed rated DC Motor should I get?

  18. hi…… i have to design the same project,'' speed control with the rotation in both direction''. should i use exact same circuit connections using two ic555 with the same values as mentioned above in the diagram….???? why we are using PNP & NPN pairs. is it nt possible to use all four transistors (t1-t4) and bc 557 of NPN category. i am nt able to understand the working operation of PNP transistor in this circuit diagram.

    1. you'll have to d exactly as shown in the diagram, here PNPs are necessary for allowing motor reversal.
      the BC557 in between the 555 ICs make sure the IC generates constant PWMs even during input voltage flutuaions

  19. should i use the circuit shown in d magazine or the circuit modifie by you…? Can u plz explain me how PNPs will conduct. As think in the forward rotation of motor tip127 will not conduct bcoz the direction of flowing current in PNPs is from emitter to collector as shown in tha data sheet . I m vry cnfused about the working of PNPs in this circuit.

    1. make the one which is shown in the magazine.

      the transistors will conduct diagonally….these pairs can be alternately switched for achieving reverse actions.

  20. i dont know connection of 16 pin not gate ic4049. can u plz help me for the connection of ic 4049. and what will be the modification in circuit if forward and reverse breaking is also required.

  21. hi…above circuit meets my need exactly. Am going to use with high current. you suggested for TIP35/36, can you say the alternate since my source does have this transistors.
    thanks in advance.

    1. Vijayan, the diagram is correct and will work, however connecting the motor between the transistor collector and positive would provide better results, you can connect the emitter directly with ground.

  22. Hello sir,
    :What is the %age duty cycle of the above circuit by default & the question is how it can be change to a desired value in its range?
    :Can I use POT for variable 12v i/p? sir. Thank You.

    1. Hello Tanmay,

      the duty cycle can be expected to be from 0 to 100%.

      yes a pot variable power input from 0 to max may be employed for getting the above response

  23. Hello Swagatam, I succeeded in building this circuit and i used Mains AC to power it as you suggested. I made a transformer that generates 40vac but i don't know the amperage it produces since i don't have amp metre. it works on the 27v dc motor but the 50amp bridge diode and the transformer are always hot anytime the dc motor is loaded but if i remove the motor and use the device to charge 36v battery, it works very well only the transformer will be hot. What will i do to stop the transformer from being hot? Already, i have decided to change the bridge diode to 100amp type that has heatsink. will i go for a larger iron core transformer? and what are the copper coil sizes for primary and secondary to obtain a 25amp as you suggested. You suggested a 24v 25amp transformer for me. How many number of coils in parallel will i use on the secondary side? I wait for your response.

    1. Hello Afam,

      use a 24V transformer…40V is way too high and that's the obvious reason for all the heating up of the devices.

      you'll can easily buy a 0-24 transformer…the current rating will depend on how much the motor is rated to work with, I am not very sure about the winding detail of the transformer

  24. Hello Swagatam,
    I am thinking to make the above circuit to control my drill press. I dont want Bi-directional. so i will remove the transistor stage which connected to pin9 which u said in the first comment. The rating of the motor which I am using is 12v, 2Amps. Can I go with the above circuit? or do u want me to change any components values in the above circuit for my motor?

    1. Thanks.Am going to make the below circuit which already Mr.vijayan modified.
      And first u suggested Mr.Vijayan to connect the collector of T6 TIP122 to positive and motor to its emitter and ground. Then after he modified, you suggested him to connect the TIP collector to motor and emitter to negative to for better performance.
      Am confused. Kindly suggest me that which one will give better performance?
      My motor rating is 12v, 2Amp and I need to use 12,2Amp DC adapter. SO am placing TIP122 at T6 and what should be the resistor value for R8 if T6 is TIP122?. after that suggest me to connect with the motor. and do I need to change the T5 with any other higher value transistor because I changed T6 is TIP122?

    2. connecting the motor with the collector of TIP122 will produce better results…so connect the motor between positive and the collector of the TIP122, and connect its emitter directly with ground

  25. Hi Swagatam,
    I'm not sure if your still monitoring this page? If you are I would like to ask a couple questions about your schematic. Can you explain how the reversing circuit works? I read about there needing to be a ground but am having problems understanding it. Also I am using led's with resistors as a visual test point at the different sub circuits (pin 3 of ic1 and ic2, R1 and R2 locations). I am able to get one of the led's (red led at R1) to dim with the switch in one position. In the other switch position both led's (red-R1, green-R2) are not adjustable. I think both leds should respond identically regardless of switch position? Or maybe one led would be on and be able to dim while the other is off, and when the switch is switched the led's outputs would switch? But that wouldn't make sense.

    1. Hi David,
      which circuit did you try? There's no R1, R2 in the second circuit which would support LEDs??

      the first circuit can be a little inefficient with its switching stage since it uses transistors and it might require some fine tuning to get the reversal feature perfectly working.

      Rather I would recommend the second design where NOT gates are used for the intended flipping of the motor direction….as it will perform the action perfectly using well defined 0, 1 logic outputs.

      or you can integrate the NOT gate stage from the second design with the first 556 IC design in order to make the first design perfect.

  26. Hi Swagatam,
    I'm having problems understanding the switch section of the circuit. I saw the comment about grounding the emitter of T6 and T7, but something still doesn't seem right. Can you post an updated schematic that incorporates the corrections in the comments?

Leave a Reply

Your email address will not be published. Required fields are marked *