In conventional triangular-wave oscillators, hysteresis from positive feedback in the Schmitt trigger determines the voltage levels and amplitude of the triangular waves. With this topology, it’s difficult to independently vary the voltage levels and amplitude of the output waveforms. To combat this limitation, a more versatile oscillator was designed (Fig. 1).

With this circuit, the voltage levels and amplitude of the triangle waves can be precisely and independently varied by changing the reference voltages V_{R1} and V_{R2}. After setting V_{R1} and V_{R2} using two potentiometers, the frequency can be adjusted using the variable resistance R1 without affecting the amplitude of the triangle waves. The beauty of the circuit lies in the fact that V_{R1} and V_{R2} can be fed from any external source and, if DACs are used, a digitally amplitude-controlled triangular-wave oscillator is created.

Assuming identical Zener diodes with breakdown voltages of VZ, the period of the oscillation is given by:

T = 2RC(V_{R2} − V_{R1})/(VZ + 0.7)

As can be seen from the equation above, the time period of the oscillations can be linearly varied with V_{R2} or V_{R1} by keeping R, C, and VZ constant. Thus, the same circuit also can generate square waves whose period can be varied linearly with V_{R2} or V_{R1}. The period of the oscillation can be increased by boosting V_{R2} and keeping V_{R1} constant, or decreased by increasing V_{R1} and keeping V_{R2} constant. The output of the versatile triangular-wave/square-wave oscillator is shown in Figure 2. Here, TR1A is the triangular waveform seen at point “a” in Figure 1. TR3A and TR4A are the voltage levels V_{R2} and V_{R1} set by two potentiometers. TR2A is the waveform as seen at point “b” of the circuit.