今天想把 10MHz 的恒温晶振调校一下, 但没有频标, 只有 GPS 1PPS 讯号, 於是快速搭了以下简单电路, 效果还不错, 可非常容易达到0.01ppm或更好。
恒温晶振 10MHz OCXO 的输出是正弦波, 弄成方波作为 M48 时钟, 而 GPS 的 1PPS 用作为 ICP1 触发之用。
M48 的 Timer1 时钟设定使用最高速, 即10MHz。Timer1 溢出中断再用来递增一个16位元的变量, 所以 Timer1 等效长度是 32-Bit。Timer1 一直计数, 并不停止, 所以不久这32位便满溢并从零再开始。
每次输入捕获後都把捕获得到的值(32位), 和目标值(32位)相比较, 得出误差值, 在LCD显示, 然後把目标埴增大 10,000,000, 等待下次输入捕获出现。
不难明白, 如果恒温晶振输出是 10,000,001 或 9,999,999Hz 时, 误差值便每秒增加或减小一, 当然因为捕获与时钟相位问题, 当中会有+1 或 -1出现, 但趋势是非常明显的。
把恒温晶振 OCXO 的可变电阻调一下, 便可令误差值停留一段时间才改变, 如超过 10 秒才跳变一次, 即频率为 10,000,000.1Hz 或 9,999,999.9Hz, 也就是 0.01ppm。
我用的恒温晶振外接20圈的可变电阻, 可以调校到1圈内+/-45度, 令误差在多於一分钟後才增加或减小1。
(原文件名:GPSDSO_M48_1.jpg)
(原文件名:GPSDSO_M48_2.jpg) |