原文地址:
https://www.paulvdiyblogs.net/2020/07/a-high-precision-10mhz-gps-disciplined.html

请注意,我将在一段时间内更改并添加到这篇文章中。请经常重温!
我还创建了一个只处理 GPSDO 的监控、测量和记录的新博客。
这个博客可以在这里找到。

很长一段时间以来,我一直对获得一个非常高精度和长期稳定的 10MHz 振荡器的项目很感兴趣。并不是说我真的非常需要一个,它只是引起了我的兴趣,我想学习如何构建一个。

当我升级我的 FY6600 函数发生器以及构建我的可分脉冲发生器时,引发了大部分兴趣。这两个项目都可以在这个博客上找到。

我一直在关注 John Sculley( 这里)在 YouTube 上的项目,他使用 GPS 模块设计了一个精确的脉冲发生器。该系列的第一个视频可以在这里找到: GPS 锁定 10MHZ 参考

不幸的是,约翰已经停止出版更多的作品,这是一个真正的遗憾。我希望他没事,还有其他事情要做。

无论如何,这引起了我的注意,当我开始在互联网上搜索更多此类项目时,我找到了一个正是我想要的。我寻找一个相当简单的设计,我可以构建和理解的东西,并且不需要特别特别高(time-nut)的品质。我决定进一步了解的项目是 Lars Wallenius 的项目。可以在这里找到: Lars 的 EEV 博客

不幸的是,拉斯在发表他的设计后不久就死于癌症。
在这里插入图片描述
上图:拉斯本人
(译者注:拉斯的作品成为了很多人的GPSDO参考作品,真心感谢他DIY做出的贡献,也祝愿他本人能在天堂继续享受快乐)

这是一个真正的损失,因为他是一个非常善良和知识渊博的人。此外,他的 GPSDO 宝贝引起了很大的兴趣,不幸的是,他没有活到足够长的时间来看到他的工作成果和得到的关注。

即使使用这个看似简单的电路,我也知道我必须学习很多东西,因为 GPS 模块、驯服 OCXO(OCXO 是一种加热器控制的 X-tal 振荡器)和测量结果都是我知之甚少或一无所知的主题。这对我来说是一个很大的挑战,但是,嘿,这就是我如此喜欢这个爱好的原因。好消息是,在这个特定的博客上,当我踉踉跄跄或跌倒时,有一些非常乐于助人和非常聪明的人帮助我。从 2019 年 10 月开始,我通过订购各种组件开始了这个项目。我们现在快要结束 2020 年了,这是我认为我从事过的最长的项目。我还远远没有满足我的好奇心或准备把它放在一边或休息。

我将继续在此处添加有关我所学和衡量的信息,以便其他人也可以从中受益。

第一个原型

作为第一步,我首先设计了一个原型,并首先尝试看看我是否可以真正构建它并了解更多关于它的信息。首先,我使用了一个原型板,结果证明它工作正常,但很快我就发现我需要清理那个装置并进行更永久的设置。那时我已经尝试了更多的 OCXO 类型,这就是我设计两个电路的原因。一个带有控制器,一个带有 OCXO 电路。下面是使用 CTI OCXO 的原型的图片。

在这里插入图片描述

单独的 OCXO 板允许我交换各种 OCXO。在图片的顶部,您还可以看到 Blileyt 和 TempTech OCXO。最初,我遇到了很多麻烦,得到了一个,它到了,并且工作了。从字面上看,我花了几个月的时间来收集一些我可以开始使用的东西。因为我不了解 OCXO,所以我最初收集了一些,与他们一起工作,发现了一些问题,然后又添加了一些。我现在有 5 个 OCXO 正在工作,并且我已添加到我的电路中。

我合作过的(二手)OCXO 是:

Oscilloquartz 8663-XS 12V DC sine wave out
Bliley NV47M1008 5V DC square wave out
Trimble 65256 5V DC sine wave out
IsoTemp 143-141 5V DC square wave out
CTI OC5SVC25 5V DC square wave out

通过这种设置,我能够测试对原始设计的一些更改,最值得注意的是一种不同的 TIC 电容器 (C1) 放电方法。然而,当我学习得越来越多时,是时候创建一个专用的 PCB 来展现我所学的所有的智慧和功能,将其放入一个好的外壳中然后开始使用他们。

设计PCB

我使用 DipTrace 设计的 PCB 包含了我当时所知道的一切,并被放在一起以容纳不同的 OCXO。不幸的是,我还没有 Oscilloquartz 和 Trimble 版本,所以我在 Oscilloquartz 的布局上犯了一个封装错误(我找不到带有封装的数据表),因为我最初没有订购 Trimble 的计划,我甚至没有考虑添加那个封装。

请注意,我在下面显示的图表是我在 PCB 的基础上进行的许多小改动的结果。这就是为什么我将原理图称为版本 2。这些原理图不再 100% 反映 PCB 原理图,尽管所有更改都可以在这些 PCB 上进行,就像我一样。我将在我的 Github 上发布与 GERBERS 一起使用的原始文件以及修改后的文件。

PCB的组件面:

在这里插入图片描述

PCB 的底部,带有 Oscilloquartz 封装所需的修改:

在这里插入图片描述

一些设计和布局决策

电源

我的设备由外部 12V 直流电源供电。最初,我使用了一个墙壁开关电源。因为我想消除可能出现的问题,所以我改用了一个在掉电时也能提供备用电源的电池。

电池供电的电源由一个 5V DC 组成,可为 OCXO 提供所需的预热电流。就我而言,我碰巧有一个 7A 版本,但这不是必需的。每个 GPSDO 使用 1.5 到 2A 就足够了。请记住,此时我必须提供三个版本。电源供应中的下一步是一个升压装置,它为从防盗系统中拿出来的封闭式铅酸电池提供 12.6V 直流电。我的电池是 YUASA NP7-12, 12V 7.0 Ah 版本。

出于安全原因,我使用了升压调节器。升压很可能无法达到较低的输入电压,降压单元可能无法达到较高的输入电压,从而损坏您的电子设备。

升压稳压器的 12.6V 输出电平将在市电存在时为电池充电。如果市电断电,电池将提供稳定的 12V DC。从电池中,我通过一个 1N5822 肖特基二极管来防止反向供电。从这里我直接到 3 对圆头连接器的 DC 引线,它们为三个 GPSDO 单元供电。

最初,我使用一个 15VDC 电源和一个额外的 LM7812 来为 Oscilloquartz OCXO 供电。在切换到上述设置后,我现在直接用 12V 直流电源为 Oscilloquartz 供电。

电力调配

为了避免各种组件之间的串扰或其他影响,我尽可能地分离电源。进入 GPSDO 的主电源是 12V DC。在 Oscilloquartz OCXO 的情况下,它直接提供给它。在其他版本中,12V 进入安装在机箱上的 LM7805。否则会变热。此 LM7805 专用于仅为 5V DC OCXO 供电。

这是原理图的那一部分:
在这里插入图片描述
12V DC 也进入 LM7808,它为所有其他电路供电,其中一些电路由他们自己的 78L05 稳压器供电。一个用于 UBLOX NEO 载体。这个载体实际上包含一个为 NEO 芯片供电的 3V3 稳压器。这个单元的问题是电流波动很大,更重要的是,1PPS脉冲非常强大,很难让“隆隆声”远离其他部分。

Arduino Nano 也由 LM7808 供电,并且它还具有自己的板载 5V 和 3V3 稳压器。我第一次使用这个板载 5V 稳压器也为其他一些部件供电,但我发现当控制回路解锁时,会有一个相当剧烈的功率变化,会影响环境温度几度。我断开了部件的连接,因此 Arduino 5V 和 3V3 电源不再连接任何东西。Nano 8V 和 5V 电源仅由电容缓冲。

由 LM7808 供电的下一个电路是 DAC 电路。它有自己的基于 5V REF02 电压参考的电源。根据 EEVBlog 成员 miti的建议,这样做是为了将(嘈杂的)Arduino PWM 信号与为 OCXO 提供控制电压的 DAC 电路隔离开来。更多详细信息可以在 EEEVBlog 上找到。

其他 5V 组件由另一个 78L05 (U13) 供电。

所有电源和组件都使用钽电容和 100nF 电容器进行旁路。

来自 NEO 或 OCXO 的一些信号具有快速上升时间,为了避免振铃和串扰问题,我使用串联的小电阻值来抑制转换。我对 NEO 和 Arduino Nano 的串行 Rx/Tx 线路做了同样的事情。

控制器电路

下面是 GPSDO 的控制器部分。它确实遵循了拉斯提出的设计。
在这里插入图片描述 有一些小的补充。
U7 是一个基于 PIC 的 10MHz 到 1PPS 分频器电路,我还没有使用过。我改用我自己的同步分频器。

为了避免在插入 mini-USB 电缆进行编程或监控时重置 Arduino 固件程序,我在复位引脚和接地之间添加了一个 10uF 电容器。请注意,当您需要重新编程固件时,您需要移除此电容器。我错误地将它放在 PCB 的底部,而它应该与跳线一起位于顶部。现在我只是在 Nano 电路板本身的引脚上焊接了一个小型 SMD 电容器。

振荡电路

在这里插入图片描述

在此图的底部,您可以看到驱动 OCXO 频率调整的 PWM/DAC 电路。该电路的元件由一个 5V 参考芯片供电。PCB 上有规定可以用实际的电阻器代替微调器,以减少温度对这个非常非常敏感的电路的影响。两个电感器用于阻止 10MHz 信号回射到其余电路中。PCB 还具有适应正弦波和方波输出 OCXO 以及 5V 和 12V 版本的规定。有关更多详细信息,请查看下面的示意图。

修整 OCXO 输出

当您使用您选择的 OCXO 为电路板加电时,在 R106 的位置使用 10K 微调器可使频率调整变得非常容易。您可以从 R104 和 R111 的 10K 电阻值开始,并希望将 OCXO 调整到精确的 10MHz 输出,微调器位于范围的中间。如果偏向任一端太多,您可以更改 R104 或 R111 的值,使其大致处于中间位置。我使用 DAC 设置为中档(h 32676)的运行程序来调整微调器,使 OCXO 接近 10MHZ。在调整微调器时,我查看了 diff_ns 列并调整了微调器,使我得到的平均值约为 0。最初,我使用频率计数器进行此调整,但这实际上要精确得多。

微调增益设置

完成中档调整后,您现在可以根据说明计算增益并设置并将其存储到 EEPROM 中。如果增益太低,您可以增加 R109 的值以获得至少 500 的增益。我建议您现在让 OCXO 在您的 GPSDO 中适应它的新生命,持续几天甚至几周。他们通常会通过非常粗暴的处理来拆除他们所在的设备,然后将它们从 PCB 上移除,此外还要在运送给您的途中进行处理和运输过程。这些 OCXO 是非常精密的设备。在我用 R105 和 R110 位置的固定电阻器替换微调器之前,我“老化”了一个月或更长时间。使用电阻器代替微调器将改善对非常敏感的调节电路的温度影响。

在原理图的表格中,您可以看到我用于各种 OCXO 的微调电阻的值。我发现虽然 Lars 建议增益约为 500,但我的最佳 OCXO 的增益值约为 1.000,我得到了更好的结果。这完全取决于 OCXO 的质量和控制回路调整它们的难度。如果 DAC 波动很大,尤其是在 +/- 50 ns 范围内,则可以降低增益和/或增加阻尼因子。

OCXO 电路

下面的电路图可用于确定如何为各种 OCXO 供电和调整。对于正弦波输出版本,您需要 EEVBlog 贡献者 miti提出的“平方”电路。使用显示的值,我不需要调整 C202,幅度足够大,可以让我非常接近理想的 50% 占空比。如果需要,您可以添加与 C202 平行的修剪器。平方器的诀窍是将正弦波放大到甚至超出接地和 VCC 电平。注意不要超过 74HC14 的最大输入电平或添加一个钳位二极管至 5V。一些正弦波 OCXO 需要终止其输出以减少失真。在这种情况下使用 R203。

如果您有一个方波输出 OCXO,您可以添加 C201 并将 R201 的值更改为 100 欧姆,以稍微抑制过渡。
在这里插入图片描述

GPS模块的重要性

由于对所需的 GPS 模块一无所知,我首先购买了两台 U-Blox NEO 6M 单元,后来又购买了 M8N 版本,并开始使用它们。在此过程中,我通过使用错误的串行接口电源电压炸毁了 6M 单元中的一个。电压是3V3!到那时我还了解到我所拥有的单位实际上是 U-Blox 版本的中国假货(它们没有闪存),并且我还了解了更多关于计时版本的信息。真正的 M8T 并不便宜,但我决定硬着头皮购买了真正的 M8T 芯片。我很高兴我做到了。我从载体上拆下损坏的 6M 芯片并将 M8T 焊接到位。一开始,我并不知道如何选择最优化的设置,但我得到了很多卫星,而且结果看起来不错,所以我就这样搁置了。这是错的!我犯的另一个错误是我没有将所有设置保存到 NEO EEPROM 中,因此在重启后我丢失了它们。因为我不再监控 NEO 输出,所以我没有意识到这一点。这些事情让我付出了沉重的代价,因为我花了很长时间追寻奇怪的事件,这实际上是我没有完全理解 GPS 单元的重要性的结果。

因为我住在多层公寓楼里,所以只能看到部分天空。有源“冰球”天线(我首先使用了三个,每个 GPSDO 一个)固定在建筑物本身视野外的窗台上。这个视野只能朝东,因为我上面还有另一间公寓,也是直上。经过数月与我的三个 GPSDO 的斗争、交换 OCXO 以及目睹我无法解释的奇怪事件后,我继续调整和更改硬件。在这个过程中,我发现了一些我可以做得更好的项目,我还更换了一些组件,但我对结果从来没有真正满意过。我也因缺乏理解和经验而受到阻碍。在搁置项目几个月后,并把我的注意力转向其他项目,试图让 OCXO 在 GPSDO 硬件中“老化”,我又把它捡起来了。然而,当事实证明衰老根本没有帮助,而且我仍然目睹了同样奇怪的结果和明显的不稳定时,我很快变得非常沮丧。

到那时,其中很多对我来说不再是高深的事(rocket-science),我对整个过程有了更多的了解。我被激怒了,我终于把注意力转向了 GPS 部分。在我的三个 GPSDO 中,我使用了 NEO 6M、M8N 和 M8T GPS 接收器。在使用 U-center 应用程序进行了一些更详细的测量和观察后,结果发现我的 NEO 版本没有接收到足够多的卫星和足够强的信号。

因为我的 GPSDO 不稳定在一天中出现,所以我也跟踪了 GPS 模块至少一天。然后我注意到在 24 小时内接收出现严重故障和中断,这一定是我在监控我的三个 GPSDO 时目睹的奇怪间歇故障的原因。我还了解到,我需要更新 M8N 和 M8T 的固件才能访问伽利略星座,以便添加更多卫星。6M 无法完全接收到伽利略星座,所以那个版本对我来说无法使用。

更新 NEO 固件并不容易,但我做到了。(该过程在 EEVBlog上有所描述)使用现在更新的 M8N 和 M8T,我开始尝试各种设置,并比较结果。事实证明,由于我的天空视野有限,只有在静止和定时模式设置下的 M8T 提供了稳定可靠的 1PPS 脉冲。我使用调查模式 24 小时来确定我的地理位置,并将它们编程到 NEO 中。GPSDO 的结果截然不同。所有奇怪的效果,除了一个(Bliley,见下文),都消失了。事实上,这也表明原始设计的硬件添加效果非常好,结果突然变得非常出色,我想。

因为我只有一个 M8T,所以我用 Bliley 将它安装到 GPSDO 中,因为最初显示出最稳定的结果。然后将 Bliley GPSDO 的 1PPS 输出信号用作 Trimble GPSDO 的输入,将信号馈入 PCB 上的空 NEO 连接器。然后将 Trimble 的 1PPS 输出用作 Oscilloquartz GPSDO 的输入,实际上将所有三个单元连接到同一个 M8T。这使我能够验证三个单元并真正比较结果。

这里要吸取的教训是,如果你没有一个好的 360 度天空视野,GPS 模块是最薄弱的环节,这真的会毁了你的一天。您将不得不优化 NEO 设置以获得最佳和最强的接收,在静止模式下使用它,过滤掉弱卫星,并且可能升级固件以访问伽利略星座并切换到使用计时版本,如果可以的话.

完成的 GPSDO

下图显示了使用 PCB 与 CTI OCXO 的 GPSDO。总而言之,我用不同的 OCXO 构建了三个工作的 GPSDO 单元,以便我可以比较它们。

图片右下方是GPS模块。我使用适配器电缆将板连接到背板上的 SMA 连接器。它允许快速可靠地连接到 GPS 天线。您在此处看到的前面板只是一个用于测试事物的快速而肮脏的原型。我还设计了一个用作前面板的 PCB,但是当我制作这张照片时,它还没有出现。

您在图片左上角看到的三根彩色电线是从前面板突出的三个引脚引出的引线,并连接到 Arduino Nano 的串行引脚 Rx、Tx 和 GND。他们进一步连接到运行小程序的 Raspberry Pi,该程序将所有活动记录在 USB 记忆棒上的单独文件中,该 USB 记忆棒连接到 RasPi 上的一个 USB 端口。RaspPi 还包含一个小电子邮件程序,每天结束时通过电子邮件将结果发送给我。它允许我通过在 Arduino 上运行的控制程序收集一整天的逐秒状态输出。该数据可以导入 Excel 电子表格并进行分析,或通过调用 TimeLab 的程序进行处理以进行分析。TimeLab 是一个特殊的程序,可以用来分析振荡器的稳定性。
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐