[time-nuts] V standards

Poul-Henning Kamp phk at phk.freebsd.dk
Tue Dec 2 13:48:55 UTC 2008


In message <4934FA4B.6040707 at xtra.co.nz>, Bruce Griffiths writes:

>> Use only a single DAC and then PWM modulate its output, followed
>> by a low-pass filter.
>>   
>The trouble with this approach is the very long filter time constants
>with  24 bit PWM.

You don't want 24bit PWM, you want to combine a normal DAC with
PWM modulation.

The disadvantage is that the result is not linear.  But it is
monotonic and approximately the lower 4/5th of the distinct
combinations are practically useful.

Take the Analog Devices ADUC7026 ARM7 microcontroller as example:

It has a 12bit DAC of pretty decent quality and a 16 bit PWM running
at 42 MHz.

If you just use 10 PWM bits, that gives you a PWM frequency of 20kHz,
easily filtered to DC by simple means.

Modulate the DAC output with the PWM and you get 1,353,354 unique
settings of which about the first million is usable.

That's about 6 additional DAC bits with the added advantage, that
if you prioritize the PWM for the low bits, you will get better
step regularity than the DAC would give you.

(Didn't somebody say that Fluke used PWM methods in their voltage
calibrators ?  Would make a lot of sense if they did...)

If you use 14 bit PWM you get a 1281 Hz PWM frequency,
requiring more careful filtering, but giving you 20,384,526
distinct output combinations, with usable linearity up to about
for the first 16 million combinations, so that is approximately
a 24 bit DAC.

Full 16 bit PWM results in 321 Hz PWM frequency which means tricky
and likely impractical filtering, but you get 86,616,948 distinct
output combinations of which you can use approximately 65 million,
so that is around a 26bit dac.

Or 12-20 nanovolts between steps, if you prefer.

The _real_ trouble with this aproach, is that you get "interleaved
gears" like on a bike: you need either a (huge) table or a bit of
code to tell you what the neighboring codes are.

Fortunately, finding a neighboring code is pretty easy, as the
relevant searchspace is pretty limited, so for EFC control of
an OCXO this is not a practical problem.

Poul-Henning

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.




More information about the Time-nuts_lists.febo.com mailing list