Electronic – How to make a linearly tunable 50% duty astable multivibrator

555duty cyclefrequencymultivibrator

I want to make an astable multivibrator with a 50% duty cycle that can be tuned with a potentiometer for generating sound, so accuracy is desired.

My first thought was to build the standard one with transistors, but that requires 2 resistors that control the mark and space separately.

enter image description here

Second thought was to use a 555 timer. I made the below circuit with a pot for R3. The circuit claims to have a 50% duty cycle and a frequency of 1.4/RC. Except it satisfies neither of those claims.

555 circuit

It only has 50% when Vout=Vcc, which is not the case. This thing does not go rail-to-rail. It's also not linear. If I halve the resistance, the frequency is less than doubled.

So the question is if there is such a circuit that truly has a 50% duty cycle and where the frequency is linearly dependant on the RC time? where frequency closely matches \$f=\frac{k}{RC}\$

[edit] To clarify what I meant by linear. Any sort of sensible/relevant/simple relation between resistance and frequency will do. But I was thinking of something that actually does \$f=\frac{1}{RC}\$.

The point is that I want to connect multiple potmeters with buttons to make sort of a keyboard. Now if you press 2 buttons you get parallel resistance. I'm hoping that those parallel resistances will turn out to be nice harmonics. This is why I mentioned that 2 buttons of the same resistance don't quite make an octave(double frequency) with the 555 circuit.

[edit2] I'll put some values for the relaxation oscillator here, which is expected to do \$f=\frac{k}{RC}\$, but just like the above 555 circuit this does not seem to be the case. \$C=10^{-6}\$

  • R=4.01k, f=136
  • R=3.13k, f=191
  • R=2.05k, f=290
  • R=1.30k, f=452
  • R=0.95k, f=602
  • R=0.56k, f=915
  • R=0.26k, f=1547

[edit3]
The Schmitt trigger + integrator circuit proposed by Andy Aka displays similar behaviour to all the others, where 2 resistances tuned to 400Hz in parallel only give 754Hz, two times 200Hz gives 392Hz. this was the main issue with the 555 circuit

Best Answer

The OP says this regarding his 555 circuit: -

If I halve the resistance, the frequency is less than doubled.

I take this to mean that the frequency the OP wants is proportional to the inverse of resistance. Furthermore I'm assuming that when the OP talks about a potentiometer, he wants in fact to use it as a rheostat i.e. wiper and one end of the pot aka "a variable resistor".

The use of the term "linear" in the question is possibly misleading.

So, consider using an integrator and a schmitt trigger like this: -

enter image description here

Basically it relies on the integrator capacitor being charged and then discharged from the output of the schmitt trigger. Because it's an integrator you will have a very linear ramp-up and ramp-down due to the current in and out of the capacitor being set by the square wave amplitude and R3.

There are plenty of designs based on this type of circuit and here's another one: -

enter image description here

Here's the article that describes it in more detail. For tuning it you can turn R3 into a pot like the one below: -

enter image description here

Or you can use a pot in series with the positive feedback resistor on the schmitt trigger. You can even put the pot in place of R2.

There are variations of this circuit that allow pulse width modulation i.e. you can make the triangle wave more saw-like.


NEW SECTION about choice of op-amp.

The biggest problem area in this design is the comparator. Ideally you want it to switch its output from positive to negative in zero time but that won't happen. For instance the 741 is a bad choise because it has a large delay in dragging its output transistors out of saturation. This will likely be tens of microseconds added to the more normal propagation delay of about a micro second.

Then the 741 is slew rate limited on its output to 0.5 volts per micro second. If you have a +/-15V supply the typical output voltage levels will be at +/-14V (loaded with a 10k resistor). To change the output all the way from +14 volts to -14 volts takes 56 micro seconds and it needs to do this twice per oscillation cycle - that's 112 micro seconds. For most of the time while it's doing this, the integrator isn't really moving its triangle wave output but I reckon you could bank on at least 60 microseconds added to the oscillation cycle.

Also when you load the output the p-p voltage level drops - the data sheet says the 741 output level will drop from +/-14V with a 10k load to +/-13V with a 2k load.

So what does 60 us mean in this design? The op says that he halved the resistance and expected 800 Hz but only got 756 Hz. The time difference between one cycle of 800 Hz and one cycle of 756 Hz is 73 us i.e. probably everything can be put down to slew rate limiting.

To improve this get a much better op-amp circa 10V/us slew rate. Then run it from +/- 5V rails. A typical op-amp of this type might produce +/-4V output i.e. a delta of 8V and, due to the improvement in slew rate the "delay" would be about 0.8 us but what does this mean? Compare this to a 1Hz error in 800 Hz - this is a time delay per cycle of 1.6 us so now, using a 10V/us slew rate op-amp, gives a 1 Hz error at 1600 Hz.

To avoid the extra propagation delay (common to a lot of op-amps) when their outputs saturate, negative feedback can be used to limit the comparator output to maybe +/-2.5V. Use of series back-to-back precision shunt zeners may be able to do this but, as always, the devil is in the data sheet's details so I'm not going to propose anything hard and fast for this feature - I'd just look for an op-amp that is quick at coming out of saturation or go for a fast comparator with push-pull output.