logo

 

Voltage Controlled Oscillator

At some point during the design of the ROV, I needed a straightforward and reliable way to have a square wave whose frequency I would be able to change without affecting its peak-to-peak value or its duty cycle. While this is generally done with a 555 timer, when I tried it it would also change other characteristics besides the frequency. Actually we were working in an environment that seemed to have a lot of static and interference making some of the circuits to behave erratically at times, so I often needed to give new solutions to old problems in order to circumvent these issues.

The circuit below is what came of my efforts to make such a circuit. These are called voltage controlled oscillators and they come in many flavors. Mine is based on using op-amps as rectifiers and switches (or schmitt triggers, however you prefer). The good thing about this design is that its base frequency depends solely on the RC pair at the output op-amp, making it easy to change the operational frequency range. It is controlled by a DC voltage applied at its input stage, thus being independent in operation besides a steady control voltage.

voltage controlled oscillator circuit

circuit simulator

Import data for Circuit Simulator

Import data for Circuit Simulator with starter block

Higher resolution image

All the op-amps are TL082s. The input voltage is meant to be provided by a microcontroller, through a DAC circuit (the one I made is on the circuits page) though it can be anything, as long as it is a steady DC voltage from 0 to around 6V, which is the top voltage I designed it for. The output stage's voltage is rectified and the two input op-amps create voltages who's level depends on the control voltage. Those voltages are subsequently subtracted from each other, thus producing a square wave that is 180 degrees out of phase with the output and which drives the RC pair through the op-amp, in order to create the oscillation. The smaller the peak-to-peak range of the pre-output stage's square wave, the faster the oscillation. With the addition of different RC pairs, switched through transistors or other means, a microcontroller can have access to a very wide range of frequencies, with good precision, making this a very useful circuit. Again, while there are certainly better ways to do this, this particular solution provides simplicity, low cost and small size, for a hand-made circuit.

However, the way it is designed above has a problem. In order to function, the circuit has to be in either of two states (positive voltage, or negative voltage at the output for instance) that force the other. When started, without any starting conditions it will stay that way, thus it won't oscillate. In the second text file of import data, I added a block that ensures that it will operate, no matter what it's starting state is. Theoretically it isn't necessary if you're running a simulator that can set initial conditions and you know what values to input, but that's too much a hassle. The second design also has an on-off input, which ofcourse is very handy :P