The VCO shown in the diagram above has a very good linearity, works reliably over 7 octaves and creates a triangle, a ramp and a square wave output signal. The duty cycle of the square wave signal can be set externally via front panel.
The control voltage coming from the exponential converter is fed into the integrator, built with IC1. After the output voltage of the integrator has reached a certain level, the input voltage is inverted via the trigger IC2 and the CMOS switch IC7a. By this a triangular signal is created and available at Pin 6 at IC1. Via IC6 b, the signal is buffered and in addition can be attenuated with potentiometer P6. With P1 the symmetry of the triangular signal must be set to 50 percent.
Creation of ramp signal
The circuit around IC3 is a copy of the circuit around IC1. The trigger IC4 in this case works different because it gets its input signals by IC1 and not, as expected, by IC3. This results in the fact that the integrator IC3 is synchronized by IC1. Both P3 and P4 must be set in a way that the Integrator works asymmetrical and creates a ramp signal instead a triangular signal.
There are VCOs which generate their ramp signal by changing the symmetry of the triangle generator via switch. This has the disadvantage that the frequency of the ramp signal doubles at the same keyboard voltage. It may be a matter of taste, but I prefer the given alternative. IC6 works as output buffer for the ramp signal.
The square wave signal is derived from the triangle signal by a trigger, build up with the good old 741 (IC5), which switches a little faster than an OP07. The pulsewidth can be changed by changing the reference voltage at the non-inverting input at IC5. IC6C works as mixer for both manual and modulation pulswidth control voltages. The pulsewidth modulation voltage is fed into the pin on the upper left margin (PWM Input). IC6D works as buffer for the square wave output.
Keep in mind that the CA3140 is mandatory for IC1 to IC4. If you use an OP07 or a 741 instead for example, the proper function of the oscillators can not be guaranteed.
The linearity of the VCO does not need to be adjusted. Nevertheless its recommendable to check if its really given. To do so, there is a simple and quick way. The only thing you need is a voltage divider which creates exactly 50 % of the voltage fed in and where you can change between the maximum and 50% voltage by a manual switch. Connect the output of the switch with the input of an OpAmp buffer (use the + input and connect the inverting input with its output) and connect the buffer output with a potentiometer (P_test) of about 100 k. Connect the wiper of the potentiometer with the VCO input.
Check the voltage at the VCO input with a precision DC-multimeter: No matter how the wiper of P-test is set: The voltage at the input at the VCO must always double when you switch between 100 and 50%.If this is not excatly the case, another buffer between the wiper of P_test and VCO input may help.Now the preconditions for the test are fulfilled.
Connect the triangular output of the VCO to an audio amplifier. Put P_test in a low position and change the switch permanently. The sound coming from the speaker must be an octave. Now try all positions of P_test and repeat the switching. No matter in which position P_test may be: You always will hear an octave when switching. If you are not sure that you can trust your ear, use a guitar or another keyboard as reference. This method for me was always the easiest and quickest way to check the linearity of a VCO.
1) Check the output of IC1 with an oscilloscope and connect it to an audio-amplifier (via a buffer or a serial 47-k-resistor). Change P1 until the triangle signal is absolutely symmetrical. If this is the case, the audio signal has the lowest rate of harmonics and sounds similar to a sine.
2) Change P6 until the triangle signal output at IC6B has a value of 4V top to top.
1) Connect Pext* with ground and plus 12 V. If you change Pext from 0 to positive, the pulsewidth at the output of IC6D must change from 50% to a lower value.
2) Now set P5 in a way that the pulsewidth is at its lowest (possible) value (around 10 %) if Pext is at its maximum.
The lowest pulsewidth-value is reached as soon as the amplitude of the pulse signal starts lowering and the pulsewidth starts shaking and getting unstable. In case the settings of P5 are not sufficient, you may put an additional resistor in series with Pext and find out its value by trial and error, correcting small differences with P5.
3) With P7, the amplitude of the pulse signal can be set to the same value as the amplitude of the triangular signal.
Setting the ramp parameters is a little more difficult.
1) First, set P4 in a way that you have small pulses (as small as possible) at the output of IC4 (Pin 6).
2) Then try all combinations of P2 and P3 to get a stable ramp with a falling slope as steep as possible and an amplitude as high as possible at pin 6 of IC3. Take care that the offset of the ramp signal doesn't change while changing the frequency of the VCO. To avoid this and bring the signal at a stable position, you risk to cut the tips of the ramp signal a little. But this will make no audible difference to the sound if you only cut a small piece. With a little patience, you will succeed.
3) Use P8 to set the amplitude of the ramp signal to the same value as the other signals.