**Must Read:**

# Clock accuracy in ppm

Crystal Clock accuracy is defined in terms of ppm or parts per million and it gives a convenient way of comparing accuracies of different crystal specifications.

Note:

- ppm parts per million.
- ppb parts per billion.

The following headings give practical calculations showing the typical errors you will encounter when using a clock of a specific type with a specific accuracy.

## How good is a 1% accurate clock ?

If you look at a day’s worth of timekeeping then you have 24 x 60 x 60 = 86400 seconds in a day. So the maximum error after a day has passed is 1% of 86400 = 864 seconds = 14.4 minutes!

Error: 14.4 minutes error per day.

## How good is a typical crystal ?

A typical crystal has an error of 100ppm (ish) this translates as 100/1e6 or (1e-4) So the total error on a day is 86400 x 1e-4= 8.64 seconds per day. In a month you would loose 30×8.64 = 259 seconds or 4.32 minutes per month.

Error: 8.64 seconds per day

## How good is a watch crystal ?

A watch crystal has an error of 20ppm (ish), but you have to design the board layout well, this translates as 20/1e6 (2e-5) which gives an error over a day of 86400 * 2e-5 = 1.73 seconds per day so in a month it looses 30×1.72 = 51 seconds or 1 minute a month (approx).

Error: 1.73 seconds per day.

One of the other factors in a wrist watch is that you wear it on your wrist – and the human body is at a constant temperature. Crystals have a temperature coefficient graph meaning that another source of error is temperature (This is why you can buy an OCXO or Oven Controlled Crystal Oscillator – that generates heat and keeps a constant temperature). The watch crystal will be better because you keep it at a constant temperature!

## How good is an oven controller crystal oscillator OCXO ?

A typical spec might be ±1 x 10^{-9} (1ppb) so the error after a day would be 86.4us and after a month 2.6ms (2.6e-3 seconds or 2.6 thousandths of a second!). They are not quoted in ppm as it becomes inconvenient to write e.g. this OCXO has a ppm value of 0.001 ppm or 1ppb.

Error: 84.6us per day.

Note: there are many types designed for many different applications and

all costing different amounts!

## How good is a rubidium oscillator ?

This is also known as an atomic clock.

A rubidium clock has an accuracy of about ±1 x 10^{-12} so the error after a day would be 86.4ns (84e-9 seconds 84 billionths of a second!) so the error after a month would be 2.6us. Again using ppm is also inconvenient for writing : 0.000001ppm or 0.001ppb

Error: 86.4ns per day.

Error: 2.6us per month.

## How good is a cesium oscillator ?

This is also known as an atomic clock.

Cesium beam atomic clocks are stable to 1 x 10^{-13} (8.64ns/day 8 billionths of a second!) or 259ns (259e-9 seconds) a month (ppm is 0.0000001ppm ! or 0.0001ppb).

Error: 8.46ns per day.

Error: 0.259us per month.

Note: A Cesium fountain is stable to 1 x 10^{-15}.

## Comparison of oscailltor’s accuracy

Type | Accuracy (ppm/ppb) | Accuracy | Aging / 10 Year |
Aging / 10 Year |

Crystal | 10ppm-100ppm | 10^{-5} – 10^{-4} |
10-20ppm | 10×10^{-6} |

TCXO | 1ppm | 10^{-6} |
3ppm | 3×10^{-6} |

OCXO 5-10Mhz | 0.02ppm (20ppb) |
2×10^{-8} |
~0.2ppm (200bpp) | 0.2×10^{-6} |

OCXO 15-100MHz |
0.5ppm (500ppb) |
5×10^{-7} |
~10ppb | 1×10^{-8} |

Rubidium Atomic | 1×10^{-6}ppm (0.001ppb) |
10^{-12} |
0.005ppm (5ppb) | 5×10^{-9} |

## Some TCL code for looking at ppm

# Calculate the ppm given a nominal frequency and actual frequency.

# ppm? 20e6 19998485 Returns 75.75 ppm

proc ppm? { nomf f } {

return [expr (abs($f-$nomf)/$nomf)*1e6 ]

}

# given ppm return decimal e.g. ppm 200 is 0.0002

proc ppm { ppmv } { return [expr $ppmv/1e6] }

# given ppm return decimal e.g. ppb 10 is 1e-8

proc ppb { ppbv } { return [expr $ppbv/1e9] }

# ppm range show max and min of freq:nomf and ppm value

proc ppm_r { nomf ppmv } {

puts [expr $nomf+([ppm $ppmv]*$nomf) ]

puts [expr $nomf-([ppm $ppmv]*$nomf) ]

}

Download TCL from Active state (free) and download tkcon. Double click tkcon to start it and paste the above procedures into tkcon, then use the them by typing in commands at the tkcon command prompt (Turn on calculator mode in preferences):

e.g. ppm? 20e6 19999391

results in 30.450000000000003

i.e. It shows you the ppm value: 30ppm for given nominal frequnecy and actual measured frequency..

# What’s All This PPM Stuff?

More times than not when talking to a customer about clock accuracy and I mention a spec in units of parts per million (PPM) the response is, “Huh? What’s PPM?” Fair enough, but first some background:

Behind every great clock there’s a crystal, a piezoelectric device that vibrates at a precise and known frequency. There are other ways to generate frequencies (a resistor and capacitor combination is one of them), but none are more accurate.

Many of our data logger products provide a built-in date and time clock that the instrument uses to time and date stamp recorded data. If you record temperature and humidity, for example, you’ll be able to determine the date and time of occurrence to a precision that is determined by the accuracy of crystal that drives the date-and-time chip that’s embedded in the instrument.

For reasons known only to crystal manufacturers, crystal accuracy is speced in units of PPM. Lower PPM crystals cost more than higher PPM, and manufacturers like us who use crystals in our products make a price/performance judgement call and then simply spec time-and-date clock accuracy at whatever PPM number is associated with the choice. So how do you use PPM to put the figure into the context of your application? I’ll answer that with an example.

The de facto standard in the industry for crystal inaccuracy is 20 PPM, which is always interpreted as a plus or minus number (±20 PPM). In a general sense, for this inaccuracy figure we can state that after 1 million actual parts, the registered number may be 999,980 to 1,000,020. In the context of a date and time clock, “parts” can be anything that you want it to be: days, hours, minutes, but most likely seconds since it doesn’t make sense to spec inaccuracy over 1 million days (270+ centuries). So, after 11 days, 13 hours, 46 minutes, and 40 seconds (i.e. 1,000,000 seconds) the date-and-time chip driven by the ±20 PPM crystal will register an actual time of this value, ±20 seconds.

You can also express PPM as a percentage: ±20/1,000,000 = ±0.002%. So after 30 days (2,592,000 seconds) we can expect the clock to drift about ±52 seconds; after 60 days about ±104 seconds, and so on.