I work on a function generator project. It generates waveforms such as sine, triangle, rectangle with PWM regulation, saw. I would like to digitally adjust the signal output amplitude.
Input signals for different waveforms don't have the same amplitude, e.g.
Sine, triangle: 0.7V
Frequency: from 1 Hz to at least 1MHz
Input voltages never go negative.
I would like to regulate output amplitude in the range of ±12V.
The first approach was a digital potentiometer. First potentiometer was X9C102S. It’s not expensive, have a small capacity Cw, resistance of 1k and a lot of steps: 100. Unfortunately, it have a capacitive pump which distort the output waveforms.
Later, I tried with the AD840X series. For the 10k potentiometer, f3db = 600kHz. For 1k version the input current is only 2.1mA and will not tolerate 5V input voltages. Generally, I don't want to use digital potentiometers due to the low frequency response and the reduced range of regulation.
It works well. But it have disadvantage - you cannot go down with the output voltage to 0 due to the fact that the RDSon of the transistor is quite high (about 300R). Increasing R56 value make signal distortion. I tried to eliminate it with the following circuit:
With a potentiometer I tried to subtract the signal which is on the RDSon resistance of the JFET transistor. Unfortunately, there is probably a phase shift between inputs of the amplifier (capacitance?) and it does not work properly (e.g if i feed in triangle signal and try to compensate, on the output i get square wave, effect increases with frequency)
I would like ask for some hints about circuit that could regulate amplitude at the given parameters (maybe a modification of the circuit with a JFET transistor or something else), because I do not know what to do next.