A triangular waveform of amplitude less than or equal to the power-supply voltage can be generated using this circuit (see the figure). Op-amp U2A combined with R2 and C3 operates in two modes: integration (generating negative slope of the waveform as C3 charges) and reset (generating positive slope of the waveform as C3 discharges).
The 50% duty cycle, 256-cycle clock generated from U1 switches Q2 and Q3 alternately. The clock can be varied per application. A constant Io current, produced by U2B, Q4-5, and R8-11, is set to 0.988 mA. The Iin input current to U2A is 0.494 mA (12 V/R2), which turns out to be Io/2. With Iin = Io/2, U2A generates a symmetrical triangular waveform. Its amplitude is controlled by the clock's period.
The waveform's amplitude is defined as: during integration, Vout = -(Iin) × (T/2C3); during reset, Voutt = (Io - Iin) × (T/2C3), where T is the clock period. Because Iin = Io/2, the magnitude of Vout = (I0/4C3) × T.