Electronic – DIY rubidium clock construction

microcontroller

I recently found my way onto a Datum x72 rubidium standard and had half a mind to turn it into a homebrew atomic clock, since I'm not exactly using it for a garage-based satellite business.

It seems there are plentiful examples of building atomic clocks using AVRs and PICs online, but most of these appear to feed one of the source-derived inputs (for example, the 1pps signal) into a timer that counts. On the interrupt, there is software action that drives the clock.

I suppose the main question is – is there a better, more direct way to do this? I haven't found any RTC modules that would accept a 10MHz signal (seeing as that would drive power draw up, voiding the concept of an RTC), but is there any sort of clocking device or IC out there that could reference the rubidium signal?

The software clock-timer system tends to feel like a bit of a hack to me, so if someone could break the components of this project down for me a little better it'd be much appreciated.

Best Answer

If the input is down to a 1PPS, then one method of keeping the time calculation at ISR deterministic (neither fast, nor slow, but consistent) would be to actually calculate time one second into the future elsewhere, then use the ISR to update time to the "one second ahead" time. In this case, even relatively slow periodic code could:

  1. Keep a previous time and see the ISR advance the time
  2. Use the change of time to calculate the "next second's time" to prepare it for the ISR.

If the timing of the interrupt is faster than 1PPS, that simply means less time to detect and calculate the 1/x time into the future somewhere else.