[sdiy] Saw DCO
Magnus Danielson
cfmd at bredband.net
Wed Oct 6 19:42:53 CEST 2004
From: "Fredrik Carlqvist" <ifrc at iar.se>
Subject: [sdiy] Saw DCO
Date: Wed, 6 Oct 2004 10:34:23 +0200
Message-ID: <200410060834.KAA10408 at pjakkur.iar.se>
> Hi all!
Fredrik,
> I have had great luck implementing a saw DCO and I thought I should tell you
> about it. Only one problem remains. The story is this: I like DCOs. No
> tempcos, no octave drift, no trimming. I had a perfectly good square/pulse
> DCO but I found it lacked a nice edge. I needed a saw output. Since the DCO
> had the timing right, I thought I should implement it using a simple ramp
> generator that the DCO would reset. You can find a schematic here:
> http://www.minod.com/saw_generator.gif. I also like simple circuits. It has
> a trim to adjust the amplitude.
>
> The hard thing then is to apply a proper control voltage so that the ramp
> gets the same amplitude regardless of the DCO frequency. I already had a
> 16-bit DAC hooked up to the MCU, I just added another channel to it. I
> measured a couple of slopes and had some luck in finding an interpolation
> polynome that was cheap to compute (about 150 cycles or 15us on my MCU). It
> worked well above my expectations. The amplitude is within 2% from 20Hz to
> 5kHz (which is as high as the DCO goes) at room temperature.
Actually, what I would do is set up another OTA and maybe an op-amp to create
a separate control loop for the amplitude.
The basic idea is this:
* Average the waveform
* Compare with a suitable voltage reference
* Control the gain in the CA3080
* Use the DAC channel and other OTA to control the time constant of the
averaging to basically what octave or whatever you are playing. It's fairly
rought constant anyway.
When the frequency gets higher, the average level of the signal (clipped at
middle or average directly) will decrease and then the Iabc current needs to be
increased in order to increase the gain in the OTA. Since this is a linear
system it will make continous adjustments. Now, in order to avoid waveform
distorsion must the averaging constant be such that the bandwidth of the filter
is low compared to the frequency of the waveform. It thus needs a hint of the
frequency and this is what the DAC channel is used for.
The amplitude will be traceable to the comparision voltage reference except
for a fraction which is loss due to the non-infinit loop-gain of the amplitude
control-loop.
Also, since it is a control-loop it will track the amplitude changes due to
temperature. The DAC and comparision voltage reference will be an issue, but
toss in a REF-10 or something and you should be fine.
Cheers,
Magnus
More information about the Synth-diy
mailing list