I finally got this thing working well. I am using a TL5001 PWM chip at 48 Khz to pulse width modulate analog switches in series with 10k resistors. The average resistance seen by the all pass filter circuits is proportional to the on time of the switches. For example is the switches are only on half the time, the average resistance is 20k instead of 10k. The advantages of this approach are that there are no critical adjustments, good dynamic range, and extremely linear resistance change in proportion to control voltage. The current draw is 25mA or so…not great but better than the 50mA I started with. The LFO is a DDS sine generator using a PIC micro controller. I will include a link to the code and a working hex file. I only use a sine wave output but the code can easily be modified to support numerous wave forms and frequency ranges. The code for this project has been modified in two ways from the DDS code described in my other blog entries. I lowered the internal clock frequency to 8 MHz from 32Mhz(saves current) and reduced the output swing of the sine wave so it did not drive the PWM chip beyond 90% duty cycle. Originally I just use the PWM directly from the PIC with no filtering but found this created noise artifacts, so I filter the output and drive a PWM chip. Typically, phaser circuits like this use high pass filter structures at the positive input, I chose to use low pass to help eliminate the switching noise from being introduced into the output. This worked well and eliminated the need for extensive filtering. The output is very clean
One thing that is very cool about this design is that it has variable sweep range instead of depth control. So the frequency range of sweep of the phasing notches can be adjusted starting at 100Hz or so all the way up to 5KHz.
Schematic:
Demo
Link to code: https://www.adrive.com/public/mWSkFb/PWM%20phaser.zip