如何调整晶体振荡器以获得最佳频率精度

在我们之前的文章如何使用 Python 计算晶体负载电容器中,我们研究了如何使用 UliEngineering 为你的晶体振荡器计算合适的负载电容器。

一旦你制造了板,你应该更进一步并调整你的晶体振荡器。

注意在这篇文章中我们不是在谈论 TCXO、DCXO 或 OCXO 等专用补偿或加热晶体,而是关于你用来为 RTC、微控制器、以太网 PHY、ADC 等计时的普通晶体…

此外,这篇文章主要不是为希望获得低于 ±5ppm 精度的 ppm 猎手写的。虽然你当然需要非常仔细地应用这里概述的技术才能低于你的魔法 ppm 数字,但它们可能不够。

调整负载电容器

注意对于新 PCB,杂散 PCB 电容只是一个有根据的猜测 - 所以你的负载电容会略有偏差。

首先,你需要记住:负载电容太低会导致频率更高 - 负载电容太高会导致频率更低。

我不建议直接测量 PCB 电容,因为单个皮法拉的电容很难准确测量。此外,你不能在没有所有组件的备用板上测量它们(因为组件,例如晶体外壳,会影响杂散电容),但你也不能在完全组装的板上测量它,因为晶体本身会强烈影响你的测量。

相反,只需通过测量参考时钟输出来测量晶体振荡器的频率。最合适的仪器是具有足够稳定频率源的频率计数器。示波器通常没有测量低至 ppm 频率所需的分辨率。但如果你有具有足够稳定晶体的微控制器板。

**注意通过将探头连接到晶体,你将以探头的额外电容加载晶体,因此你不会准确测量其实际频率。**不要直接探测你的晶体,而是配置你的 RTC 使其在单独的引脚上生成时钟输出并测量它。

通常,你最初计算的负载电容器值将在最终值的 ±50% 范围内。因此,你应该购买该范围内大约 5-20 个标准值的电容器。如今,购买 10 个陶瓷电容器只需约 0.15€,所以只买一堆它们真的不值得考虑,你应该直接订购 - 或者订购一套电容器。注意标准电容器值如 10pF6.2pF 通常比非常特定的值便宜得多,所以选择你购买的值时要小心。

例如,如果你计算的负载电容器值为 7pF,你可以订购以下电容器:

你应该调整多准确?

我关于你应该调整多准确的建议取决于交换组件是你能做的唯一调整类型还是你的振荡器 IC 支持数字调整。由于如今数字调整比更换组件(由于容差等)更容易和可重现

如果你的 RTC/控制器支持数字调整: 我的建议是调整不超过晶体规定精度的 2.5 倍。所以如果你的晶体规定容差为 ±20ppm,在大多数应用中你应该调整到 ±50ppm 如果你的控制器支持数字调整但不支持自动调整: 我的建议是调整不超过晶体规定精度的 4 倍。所以如果你的晶体规定容差为 ±20ppm,在大多数应用中你应该调整到 ±80ppm 如果你的控制器支持数字自动调整: 我的建议是调整到 数字调整范围 / 1.5

在任何情况下,请记住这是你改进产品的时间与可能

数字调整频率

如今许多控制器和 RTC 具有使用例如 I2C 访问数字调整频率至亚 ppm 级别的电路。在内部,这通过偶尔省略或向内部时钟添加脉冲来工作,有效地降低或增加时钟的平均频率。

注意你不能使用数字调整无限调整,典型调整范围为 ±100ppm±500ppm

最原始的变体是只使用你输入频率应向上或向下调整多少 PPM 的寄存器,为你的原型做一次并希望你的生产运行不会有显著不同。在这种情况下,你别无选择只能拿你的频率计数器,测量频率。注意数字调整完全不改变晶体的频率,但通常参考输出是数字调整的。然而注意,调整可能只每几分钟发生一次(阅读你的 RTC 数据表或参考手册获取更多信息)。可靠检查更改是否有效的唯一方法是让板运行几天并观察它与参考时钟相比漂移了多少。

更高级但更难实现的变体是使用不同的(更精确的)参考时钟源,如精确振荡器甚至 OCXO,或从 USB(一些 STM32 微控制器可以做到)或电网(短时间内不太精确但长时间内非常精确)派生的时钟,在你的 MCU 中实现频率计数器并自动调整数字调整参数。此实现高度取决于你使用哪个 MCU,将超出本文的范围。


Check out similar posts by category: Electronics