I'm toying with the design for a fail-safe wall clock controlled by multiple 32.768kHz crystal oscillators. I'm currently reading about compensation.
Compensator from literature
From what I read (e.g. this paper, Design Technique for Analog Temperature Compensation of Crystal Oscillators) crystal stability over temperature is cubic at best:
In that paper, Haney suggests the following compensation circuit:
It's interesting, but I have my misgivings. I'm comparing that to a "dumb" design based on microcontroller lookup table compensation. In my estimation, the comparison basically goes like this:
Analog compensation advantages
- Less reliance on digital circuitry
- Decreased cost of microcontroller
- Less noise generated by digital traces
- Analogue circuitry has infinite resolution, whereas LUT and ADC have limited resolution
- No ADC error introduced (quantisation, linearity, etc.)
- Less dependence on characterisation than LUT; LUT needs better sample size
- Analogue compensation is instant(ish); digital compensation has latency
LUT compensation advantages
- Analogue components have their own tolerances and temperature drift characteristics, and that effect snowballs with increased analogue circuit complexity; this approach has fewer analogue components
- Decreased cost from analogue components
- Decreased analogue circuit complexity means fewer potential points of failure
- Less dependence on analogue analysis
- Less analogue component cost
- 2D LUT can compensate for both temperature and supply voltage variation; circuit above would need additional complexity to compensate for supply voltage, esp. when battery-driven
- Are there any inaccuracies or gaps in the list above?
- Are there any simpler approaches to analogue crystal temperature compensation than the one presented by Haney? Would it be worth combining that with a LUT?
As a sidenote, it turns out that there are many integrated VCTCXO (voltage-compensating, temperature-compensating) devices out there, and this is probably what I'll end up using.