2023-11-25 | [radiclock]
previous: Random Numbers
Hardware people love making clocks, for some reason. The focus is usually on variations of how you can display the time, but the source of the time is usually all the same phenomenon: oscillation. This can be in the form of a swinging pendulum, a vibrating quartz crystal, or even a specific radio frequency (in the case of an atomic clock).
One method that is not dependant on an oscillation is radioactive decay. An isolated atom's decay event is entirely random, but over a long enough time the overall rate of decay for many atoms can be measured. Radiometric dating relies on this property, but is a destructive process, where you physically need to take apart your sample and count the atoms of various isotopes. Also, you might need to wait a good portion of the half life for enough decayed atoms to build up to be measurable. But, when at atom decays, it will spew off some kind of particle, which you might be able to detect if you're lucky. That is what a geiger counter does. All you have to do is count up the clicks over time, and scale that to determine how much time has passed.
Like a lot of ideas you might think up, it turns out that it's been done before. Here's a couple resources I found while looking:
don't know how accurate this clock will end up, but that's what I hope to find out. My setup consists of a radioactive rock, possibly pitchblende. Having been a rock for millions or possibly billions of years, and yet still being radioactive after all this time, the rate of change in decay must be pretty much zero on any human timescale. So, the geiger counter should always click at about the same rate. This rock is placed inside a PVC tube, along with two sensors: this PIN diode based one and a classic SBM-20 Soviet GM tube with a driver based on my own design. These are both hooked into a Pi Pico which handles the counting and scaling.
I also generate random numbers with this same setup.
Here is the current status of the clock. Times should be close to UTC, compared against the onboard DS3232M RTC chip. This should update about once/minute.
start time (reference epoch): 2024-03-23T16:24:35 (202 days, 14:44:26 ago) time from DS3232M RTC chip : 2024-10-12T07:09:01 time from arduino's millis(): 2024-10-12T07:08:15 (-46 seconds, -0.227 s/day) time from geiger tube count : 2024-10-12T06:24:06 (-0:44:55, -13.301 s/day) time from diode counter : 2024-10-12T01:39:59 (-5:29:02, -97.436 s/day) count of geiger tube : 1291711771 count of diode (radiation) : 593383839 count of diode (noise) : 33333954 calibration of geiger tube : 5529557 seconds / 408074272 counts; 73.799 c/s calibration of diode (rad) : 5529557 seconds / 187643047 counts; 33.935 c/s