[sdiy] VCDO using PIC16C771

harrybissell at copper.net harrybissell at copper.net
Wed Feb 21 23:05:59 CET 2007


my $.02

The PLL approach will have a long settling time
at low frequencies.  One loop filter may not be
enough... maybe you can either change the loop
filter (switch values) for frequency or use some
voltage output to force the XR2206 to a near value and
trim from there.  Maybe you can get real close and the
final adjustments will not be audible.

You could run at a higher frequency and synthesize lower
frequencies with direct waveshaping. JH has a Korg VCO
clone (MS-20 ?) that illustrates the technique. This won't
work for the sine wave though...

H^) harry



>
>
>
>---- Original Message ----
>From: ebrombaugh at earthlink.net
>To: synth-diy at dropmix.xs4all.nl
>Subject: Re: [sdiy] VCDO using PIC16C771
>Date: Wed, 21 Feb 2007 14:15:55 -0700
>
>>jean-pierre.desrochers at ville.quebec.qc.ca wrote:
>>> To get rid of any temp problem on my new VCO design
>>> I'll use a Microchip PIC16C771 to control an Exar XR2206
>>> VCO's frequency.. The XR2206 has a VERY clean sine output
>>> and other waveform already available.
>>> 
>>> Here is the trick:
>>> CV voltage 0-5VDC going to the 12 bits Pic ADC,
>>> The Pic reads the AD value and goes to a serial EEPROM
>>> lookup table at that AD address to fetch a 16bits 'period value'.
>>> The XR2206 freq (square wave) is sent back to one of the PIC I/O
>pin.
>>> If the XR2206 freq is too low or too high according to the lookup
>data
>>> (at the specific CV input) the Pic send a PWM square wave
>>> filtered with a low pass to compensate the drift and bring
>>> back the CV/freq desired to the XR2206.
>>> Of course the low pass filter is fast enough to
>>> not create any portamento effect but enough eficient
>>> to have a nice DC feedback voltage.
>>> The serial EEPROM is a 4K X 16bits so it gives
>>> 32 steps between each semitones.
>>> 32steps X 12semitones X 8octaves = 3072 words (16bits)
>>
>>Neat idea! Basically you're making a Frequency-locked loop (FLL),
>with 
>>the PIC oscillator (hopefully crystal controlled!) as the reference.
>>
>>A few issues you might encounter:
>>
>>* PIC ADCs are a bit noisy in the LSBs. You may have to do some 
>>averaging to get accurate measurement of the frequency CV. If you're
>
>>sampling fast enough this may not be an issue.
>>
>>* Measuring the period of the square-wave from the 2206 is going to
>be a 
>>limiting factor. At low frequencies especially you'll have to wait a
>
>>while to get an answer and this will slow the convergence of the
>system.
>>
>>* I agree that the settling time of your PWM integrator will also
>slow 
>>the system response.
>>
>>* Designing a digital loop filter to average the period errors will 
>>require some careful consideration to avoid instability. Especially 
>>since it will have to compensate for the PWM integrator.
>>
>>Other than that it will be interesting to see how it works. For 
>>upper-range frequencies it might work well if you can control the
>loop 
>>response.
>>
>>Eric





More information about the Synth-diy mailing list