In message <[EMAIL PROTECTED]>, 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 [EMAIL PROTECTED] | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. _______________________________________________ time-nuts mailing list -- [email protected] To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts and follow the instructions there.
