I needed a circuit that would take as input a linear voltage and output an exponential voltage. Typical uses would be linear tuning for radios, also musical instruments or audio generators where each octave is double the frequency of the previous. The idea is for all frequencies to be evenly spaced on the dial.
The traditional way of generating this kind of voltage is to use the base-emitter junction of a transistor, which is complicated and temperature dependent. Of course such a curve could be produced digitally with an EEPROM or PIC, but where's the fun in that?
I wondered if the exponential charging characteristics of a capacitor could be used to generate an exponential voltage, controlled by a linear pot or linear control voltage. It can.
First some review: A capacitor charged through a resistor charges at a gradually slowing rate as the source voltage and current through the resistor drops. The resulting charge curve is similar to the green line on the graph below.
However, if the capacitor is charged by a constant current source, the voltage rise is linear, as with the red line. Note that on the linear line, when the charge time is half done, the capacitor is half charged. Not so with the exponential line.
On the green line, the cap is charge to 8 volts within the first 2.5 seconds. The next 2.5 seconds, it's charged another 4 volts, then the next 2.5 seconds another 2 volts, then 1 volt. So in this particular example, every 2.5 seconds, the voltage halves. The goal is to grab the voltage you want when you need it.
I figured out two ways to to this, describing the more complicated first. According to the diagram below, a 555 timer is used as a clock to feed a flip flop that alternately charges and discharges a pair of capacitors. One capacitor is charged through a resistor, the other with constant current source. Each is charged for the same amount of time, the first yielding an exponential curve, the other a linear ramp wave. When the CV input to the comparator is fed, say 4 volts, the comparator compares this voltage to what's on the ramp wave. At the precise moment the ramp wave exceeds 4 volts, it tells the sample and hold to sample the voltage on the exponential capacitor and hold it there. This voltage is held until another cycle starts and is the output voltage.
The waveforms are shown synchronized in the diagram. Obviously, for this to be practical the charge times need to be much shorter than I've described in the graph. I've been running my clock at about 300 Hz.
Here are pictures of the actual waveforms:
Interesting that the blooming of the trace indicates the speed at which the trace is drawn. The exponential trace is thin at the bottom and thick at the top where it slows down, while the ramp wave has uniform thickness as the voltage rises.
I've had success with a simpler version, which does away with the ramp wave and sample and hold, instead simply connecting one input of the comparator to the exponential capacitor and the other to the desired control voltage. The comparator's output is variable duty cycle square wave, proportional to the exponential waveform. It can be filtered directly by a small capacitor, and the resulting exponential voltage taken off that.
While experimenting, I also came up an even simpler circuit employing the same principle and using just one 555 timer. It's range is somewhat limited, but it works ok. The 555 timer is connected in astable mode with 50% duty cycle, with two modifications. First, pins 5 and 8 are shorted by a 100 ohm resistor, which causes the internal comparator to delay tripping until a much higher charge voltage is reached. This allows the timing capacitor to be charged higher, increasing the available range of exponential voltage. Second, pin 6 is normally connected to Vcc through Ra. In this case, Ra is fed not with Vcc, but with the control voltage. The resulting waveform is a variable duty cycle square wave that varies according to how much the timing capacitor is charged. Because the capacitor is charged through a resistor, Ra, the charge time is exponential, and so the output duty cycle is exponentially correlated. As in the second circuit above, this can be filtered and taken off as a DC voltage.