使用 Python 和 UliEngineering 计算晶体负载电容
当你实现晶体振荡器电路时,一项既重要又经常被忽视的任务是如何计算晶体的负载电容。
提示: 在许多情况下,使用集成晶体振荡器更容易,你不必关心负载电容。晶体通常推荐用于低功耗应用和振荡器太昂贵的大批量制造。
在此示例中,我们将为 Abracon ABLS-16.000MHZ-B4-T(根据数据手册指定负载电容为 18 pF)计算负载电容。
至关重要的是要理解 18 pF 负载电容规格并不意味着你可以使用 18 pF 电容器或 2x 9 pF 电容器。你需要实际计算正确的值。
你需要以下信息:
- 晶体的负载电容,在晶体的数据手册中指定。
- 杂散电容的估计值,即从晶体到微控制器的 PCB 走线的电容。如果你不知道这个,我推荐使用
2 pF - 微控制器(或你想连接设备的任何设备)的引脚电容,如微控制器数据手册中指定。通常振荡器引脚的电容与其他引脚不同,因此单独指定。
3 pF是大多数现代 IC 的良好初步估计。该值必须按引脚指定!
现在我们可以使用以下代码计算正确的负载电容:
crystal_load_capacitors.py
from UliEngineering.EngineerIO import auto_print
from UliEngineering.Electronics.Crystal import *
# 打印负载电容:打印 "29.0 pF"
auto_print(load_capacitors, cload="18 pF", cpin="3 pF", cstray="2 pF")在这种情况下,你需要两个各 29.0 pF 的负载电容。
你应该使用最接近的可用负载电容值,但如果你有高时钟精度要求,请始终检查结果频率。
提示: 你可以向大多数 UliEngineering 函数传递数字(如 18e-12)或字符串(如 18 pF 或 0.018 nF)。SI 前缀如 p 和 n 会自动解码
如果你想以编程方式使用该值,直接调用 load_capacitors():
crystal_load_capacitors_value.py
from UliEngineering.EngineerIO import auto_print
from UliEngineering.Electronics.Crystal import *
# 计算负载电容值(对于两个负载电容):
load_caps = load_capacitors(cload="18 pF", cpin="3 pF", cstray="2 pF")
# load_caps = 2.9e-11Check out similar posts by category:
Electronics, Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow