I have this astable circuit that generate square waves with independent control of frequency and duty cycle:

For this circuit:

  • $$t_H=0.759\,C\,(R_f+R_y)$$
  • $$t_L=0.759\,C\,R_x$$
  • $$period = 0.759\,C\,(R_f+R_d)$$
  • $$frequency = \frac{1}{period}=\frac{1.32}{C\,(R_f+R_d)}$$
  • $$duty\; cycle =\frac{t_H}{period}=\frac{R_f+R_y}{R_f+R_d}$$

I want the duty cycle to range -at least- from 25% to 75%, and the frequency to range -at least- from 1 kHz to 10 kHz.

For these given values:

  • Rd is a potentiometer whose whole resistance is 50 kOhm.
  • Rf is a variable resistor whose maximum value is 50 kOhm.
  • C = 10 nF.

, here are the possible ranges:

  • The maximum frequency possible: $$freqency_{max}=\frac{1.32}{C\,(R_{f,min}+R_d)}=\frac{1.32}{10^{-8}(50k+10)}=2.64\,kHz$$ where 10 Ohm is assumed as the minimum value that can be assigned to Rf, and 50 kOhm is Rd.

  • The minimum frequency possible: $$freqency_{min}=\frac{1.32}{C\,(R_{f,max}+R_d)}=\frac{1.32}{10^{-8}(50k+50k)}=1.32\,kHz$$

You can see that the frequency range is very narrow.

On the other hand, calculating duty cycle and assuming that Rf is set to 50 kOhm:

  • The maximum duty cycle possible: $$duty\; cycle =\frac{R_f+R_{y,max}}{R_f+R_d}=\frac{50k+50K}{50k+50k}=1$$

  • The minimum duty cycle possible: $$duty\; cycle =\frac{R_f+R_{y,min}}{R_f+R_d}=\frac{50k+10}{50k+50k}=0.5$$

The maximum duty cycle possible is great but the minimum one is bad.

I can reduce the maximum value of the variable resistor Rf to improve the range of duty cycle but the range of frequencies will not improve noticeably. For example, if Rf(max) = 5 kOhm, duty cycle will range from 10% to 100%. But the frequency will range from 2.4 kHz to 2.64 kHz which is unacceptable.

Or I can reduce the whole resistance of the potentiometer Rd to improve the range of frequencies but the range of duty cycle will not improve noticeably. For example, if Rd is reduced to 5 kOhm, the maximum frequency becomes 25.9 kHz and the minimum frequency becomes 2.4 kHz. But the duty cycle will range from 90% to 100% which is so bad.

Even if I reduce both of Rf and Rd or change the value of C, I can't get to my goal.

How can I achieve the required range of frequency and duty cycle?


3 Answers 3


How can I achieve the required range of frequency and duty cycle?

Don't make life hard, use an LTC6992: -

enter image description here

It's operating frequency can be varied between 3.81 hertz and 1 MHz. Duty cycle can be controlled (with a voltage or a potential divider) from zero to 100% with options to limit at 5% and 95%).

It works from supplies of 2.25V to 5.5V.

  • \$\begingroup\$ Thanks @Andy aka. It is interesting to know about the LTC6992, but I prefer finding a way to solve the problem without changing the whole circuit. I'm doing a university project, and I think it's better to do it in not a "easy" way. \$\endgroup\$
    – ammar
    Commented May 1, 2016 at 14:08
  • \$\begingroup\$ You won't find peace with the 555 - the charging cycle uses Rf but the discharging cycle doesn't. \$\endgroup\$
    – Andy aka
    Commented May 2, 2016 at 16:46

The classic 555 timer circuit cannot achieve less than 50% duty cycle, but 555 timer design is a game that has been played for decades.

The usual method to get low duty cycles is to have a single diode across the lower resistor (\$R_B\$ in the conventional circuit).

555 with low duty cycle

Now \$R_B\$ is only present during the discharge cycle and for ideal components, the timing equations are:

\$ T_{high} = C \cdot R_A \cdot ln_{(2)}\$

\$ T{low} = C \cdot R_B \cdot ln_{(2)}\$

The Duty cycle \$ D = \frac {R_A} {R_B} \$

The real components you will use will have an effect, but I think you should try and figure them out (the diode forward voltage is the primary effect to work out).


Try this : the output is used to charge and discharge the capacitor.

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.