Real-time clock and Crystal precision

I want to use a crystal as the base clock for a watch. Most reference designs I could find use a 32.768 kHz crystal at 20 ppm (parts per million) precision. According to my calculations, this leads to an error of max 52 seconds in a month. After 6 months, that 5 minutes. I would like something better!

There are some solutions I could think of (better crystal, or compensate in SW), but I am surprised not to find any reference online.

Surely I am not the first person to try and address this problem. Do you have any suggestion as to how to deal with this, and possibly reference design?

• Try googling temperature compensated crystals (TCXO) and ovenned crystals (OCXO). Dec 13, 2010 at 9:23
• @Gauthier: (temperature) compensation compensates for variations, but don't improve basic accuracy. The latter are usually much worse than variations due to temperature changes, and you can often adjust for it with a trimmer capacitor. Dec 13, 2010 at 10:42
• Wrist watch crystals have some kind of temperature compensation due to the temperature of your skin. I'm often surprised at the precision of (even cheap) wrist watches. I once had a Casio LCD watch which was less than 5 seconds off per year, that's better than 1 ppm! Dec 13, 2010 at 10:46
• The main reason why they are so accurate is that the watch is in close contact to the skin most of the time, and is therefore at a constant temperature. If you leave it in a cold room for a few days you will probably see a large error. Dec 13, 2010 at 14:22
• I don't mean that they are temperature accurate. I mean that they seem to have a good basic accuracy (from a crystal to another, at the same temperature). See stevenvh's comment above. Dec 13, 2010 at 14:37

A better crystal is one way to solve it, but it's going to cost. And even then you get maybe 10ppm, good (or bad) for 5 minutes after 1 year.

Temperature compensated crystals are good to get a predictable stability, but they don't solve the tolerance problem; if you have a 20ppm deviation from nominal frequency, you're sure you'll always have this deviation. BTW, this is also more expensive, and I haven't seen it for 32kHz crystals.

Software compensation is a cheap solution, and I've used it a few times. For production runs you'll have to measure the frequency and program the compensation value on a test jig.

You can also use a trimmer capacitor for the oscillator's load capacitor.

What I find the nicest solution, however, is to add an atomic clock receiver module (WWVB for North-America, DCF77 for Europe), and resync once a day or so. The picture shows an miniature DCF77 module from Conrad.

• The possible solutions so far are a 5 ppm crystal (the clock is meant to be used indoors, so temperature dependency is not critical), and the other solution a SW tuning matched to an OCXO. I am happy to read that you have seen the SW tuning before, I am a bit worryied not to find anything on it... Dec 13, 2010 at 10:38
• I used software tuning on a clock based on a timer of the microcontroller. So instead of using a timer prescaler of 1000000, I'd use for instance 1000005 if the clock is 5ppm fast. If you're using a RTC IC you'd have to set the RTC by one second every so many seconds. In this case your clock can be 0.5 second off, in the first case every second is exact (inasmuch as you can calibrate it). Dec 13, 2010 at 11:05
• You cold also add a cheap GPS module or TCP/IP sync. against a timer server.
– Tom
Dec 13, 2010 at 11:57
• Once you have recalibrated your clock a few times with a reference you can add automatic recalibration to compensate for crystal frequency error "offline", in your widget. Dec 13, 2010 at 13:22
• How well can such WWVB modules receive a signal during the day? My experience with a lot of self-setting clocks is that it's often necessary to wait hours to get a signal. It shouldn't be difficult to have cell equipment everywhere broadcast signals which would let a receiver power up and in less than a second know the time within a few microseconds, but I'm unaware of any efforts to establish a standard for that. Jun 12, 2014 at 17:26