Fork me on GitHub

Project Notes

#382 CD4046/VCO

Audio range voltage-controlled oscillator using the CD4046 PLL/VCO IC.



The 4046 includes a VCO sub-system in addition to phase comparators and other components.

As noted in the Art of Electronics (p291, Second Edition):

When shopping for VCO chips, don’t overlook the ICs known as phase-locked loops (PLL), which contain both a VCO and a phase detector. An example is the popular CMOS 4046 (and its faster cousin, the 74HC4046).

The VCO produces a square wave with 50% duty cycle, and a frequency range of approaching 0 Hz to over 1 MHz (1.3 MHz at 9V VDD). The VCO frequency is determined by the voltage at VCO IN (pin 9). Voltage-to-frequency linearity is about 1%.

The VCO can be used independently. This project is inspired by Ray Marston’s “CMOS Clock Circuits” article, and simply demonstrates using the VCO sub-system as a voltage-controlled signal source with a frequency range in the audio spectrum of about 20 Hz to 20 kHz.



The datasheet I have doesn’t include specific ratings for the VCO output, but seems to imply nothing greater than ~8mA. The device does not really appear to be desinged to drive any significant load.

For that reason, I’m using the output to switch a load via a MOSFET. While testing, I just had an LED indicator wired up. Since I’m aiming for an audible range, this could be a speaker output.

Determining Minimum and Maximum Frequency

External R/C components determine the minimum and maximum frequency of the VCO.

  • C1 - across pins 6 and 7. C1 ≥ 50 pF
  • R1 - connected to pin 11. R1 ≥ 10kΩ
  • R2 - connected to pin 12. R2 ≥ 10kΩ

Minimum frequency (Fmin) is determined by C1 and R2 time constant.

Maximum frequency (Fmax) is determined by C1 and the R1   R2 parallel resistance time constant.

Although not mentioned in the datasheet, a “rule of thumb” estimate is 2 x time constant:

fmin = 2/(C1R2)
fmax = 2/(C1(R1||R2))

With R1=10kΩ, R2=10MΩ, C1=10nF, these produce the following estimates:

These are reasonably close to the 30Hz - 22.4kHz range I’ve measured in practice.

Test Results

Measured for various combinations of R1, R2, C1:

R1 R2 C1 Fmin Fmax
10kΩ 1MΩ 100pF 16KHz 774kHz
10kΩ 1MΩ 100nF 20Hz 1.45kHz
10kΩ 10MΩ 100nF 1Hz 1.39kHz
10kΩ 10MΩ 100pF 1.5kHz 765kHz
10kΩ 10MΩ 10nF 30Hz 22.4kHz

Scope: R1=10kΩ, R2=10MΩ, C1=10nF

Measured minimum frequency:


Measured maximum frequency:






Credits and References

About LEAP#382 RCCD4046Oscillators
Project Source on GitHub Project Gallery Return to the LEAP Catalog

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

LEAP is my personal collection of electronics projects, usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting (IMHO!).

The projects are usually inspired by things found wild on the net, or ideas from the sources such as:

Feel free to borrow liberally, and if you spot any issues do let me know. See the individual projects for credits where due. There are even now a few projects contributed by others - send your own over in a pull request if you would also like to add to this collection.