历史上的今天
返回首页

历史上的今天

今天是:2024年10月27日(星期日)

正在发生

2020年10月27日 | 帮你了解晶振——自己实验一个低成本TXCO

2020-10-27 来源:Circuit Cellar



image.png?imageView2/2/w/550

本文作者:Robert Lacoste


在本专栏最早的第一篇文章中,我谈到了晶体振荡器,并解释了晶体振荡器非常稳定,但它们的输出频率仍然与温度有关。


这个月,我提议回到这个话题:讨论如何提高晶体振荡器(简称XO)的温度稳定性。我的具体目标是解释什么是TCXOs(温度补偿晶体振荡器),以及它们是如何构建的。我甚至会向您展示如何将一个经典的微控制器(MCU)晶振转换成TCXO,而成本不到2美元。


石英晶体


让我们从简短的回顾开始,由于压电效应,石英晶体的机械收缩或膨胀取决于其两面之间施加的电压。所以,如果你在它的引脚之间施加交流信号而不是持续的电压,晶体会以信号的频率振动。当信号频率恰好等于晶体的机械共振频率时,就会发生一些有趣的事情。它的电学行为改变了。更确切地说,它显示了阻抗的急剧变化。


这种特性使我们能够建立精确的振荡器,这些振荡器被锁定在这个机械共振频率上。这就是为什么水晶通常被用作无数电子设备的参考时钟。特别是,MCU包括一个所谓的皮尔斯CMOS振荡电路,用一个简单的逻辑反相器门构成。图1显示了这种振荡器的典型配置。作为一个设计师,你所要做的就是在MCU的两个专用引脚之间连接一个晶体,并在晶体引脚和地面之间添加两个小电容器(通常为20pF左右)。但是这些电容器是做什么用的?


image.png?imageView2/2/w/550

图1–围绕CMOS构建的基本晶体振荡器


要理解这一点,你必须知道晶振的等效电模型。在接近其谐振频率时,晶振表现为与电容并联的串联RLC网络。例如,典型的10MHz晶体的电气模型如图2(左上角)所示。这里我们有0.025H+0.01pF+640Ω,与2.5pF并联。这些组成很不寻常,但这就是晶体的模型。


image.png?imageView2/2/w/550

图2——晶体可以模型化为RLC串行网络。并联模式谐振的频率(阻抗越高,传输比越低)随外部电容器的增加而变化。


我的这个电路在QUCS(QUCS是一个好的电路模拟器…和免费!) 上添加了一个正弦源和一个负载电阻R2,然后单击“运行”。结果如图2(右上角)所示:共振频率不是一个而是两个。第一个是10.066MHz,显示了最小阻抗。第二个频率稍高,为10.085MHz,并显示出最大阻抗。这两个频率分别是串联谐振(低阻抗)和并联谐振(高阻抗)。因此,每个晶体都可以在这两种模式中的任何一种激发,这取决于围绕它的振荡器。这些共振频率很接近,但并不完全相同。这就是为什么晶体制造商销售“串联”和“平行”晶振。别搞糊涂了。它们都可以在任何一种模式下使用。但是如果你在没有指定的模式下使用它,会有一个小的频率偏移。


现在让我们关注一下并连模式,这是CMOS振荡器使用的模式。如果你在水晶的两条腿之间加一个外部的小电容器会怎么样?参考图2(底部),我添加了10pF并重新运行了模拟。串联谐振频率不变,但并联谐振更接近串联谐振,这里是10.007MHz。这是个问题,不是吗,因为XO的频率取决于任何外部寄生电容?考虑到这一点,晶体制造商为每一个“平行”晶体规定了在它的两个支脚之间必须加上什么样的外部电容才能得到写在设备上的准确频率。这个电容通常在10pF左右。


现在你知道了每个CMOS振荡器上的两个小的20pF电容器的用途,事实上,它们是通过地串行连接的,20pF+20pF串联在一起形成10pF。使用两个电容而不是一个也有助于稳定振荡。这就是为什么总是有两个电容靠近一个MCU晶振(图3)。


image.png?imageView2/2/w/550

图3–MikroE 24针PIC开发板上的8MHz晶体及其两个22pF电容器。


温度稳定


现在我们来看看温度稳定性。当温度变化时,晶体的尺寸和它的共振频率都会发生轻微的变化。假设您的设计必须在室外工作,温度为-20°C至+70°C。根据您的预算,您可能会发现10MHz晶体,在上述温度范围内,温度稳定度从±10ppm到±100ppm。够了吗?好吧,10ppm意味着百万分之十,所以最好的10MHz晶体的温度相关频率变化为10MHz×10/1000000=±100Hz。


变化很小,但这可能对您的项目来说太多了。如果你建造一个时钟,10ppm意味着每年误差±5分钟。如果你用的是868kHz的无线收发器,影响误差会是8.68kHz,如果是窄带无线,非常影响您的产品性能。如果使用低成本的晶体,这将是原来的10倍。


最后但并非最不重要的是,这些例子只与温度漂移有关。换句话说,晶体也会有初始频率误差,即使温度稳定(“老化”)也会随时间漂移。这些误差将增加与温度有关的漂移。


那么,如何提高XO的温度稳定性呢?首先,晶振制造商知道如何在给定的温度范围内减小这种变化。他们通过精确地切割晶体相对于其晶体轴的角度来实现。例如,通常用于低频晶体的标准AT-cut最大限度地提高了周围环境温度的稳定性。所以,一个水晶切割在正确的角度比其他的更稳定,这就是为什么它会更贵。


然而,另外两种技术可以显著提高温度稳定性。最好的方法是使用恒温晶体振荡器(OCXO)来避免所有的晶体温度变化。在这里,晶体被封闭在一个小的温控室中,并加热到稳定的温度。通常情况下,温度稳定性优于0.01ppm(10ppb),但代价是能耗增加。


第二种技术不太精确,但更节能。其原理是测量实际温度,然后根据该温度补偿振荡器的频率。这怎么可能?通过知道晶振的温度对频率的依赖性。这种振荡器被称为温度补偿晶体振荡器(TCXOs)。商用TCXO的温度稳定性为±0.1至±3ppm。这比OCXO糟糕得多,但比普通的XO要好得多。


TCXO


购买现成的TCXO可能是商业项目的最佳解决方案。但为什么不尝试从头开始构建一个呢?例如,如何利用尽可能少的外部部件来提高驱动PIC16F1788微控制器的8MHz晶体振荡器的温度稳定性?事实上,它可以用少于2美元或额外的零件完成。图4显示了我是如何做到的。虚线框中包含的所有模块都在PIC MCU内部。让我们看看这是怎么回事。


image.png?imageView2/2/w/550

图4——实验模型的完整示意图。虚线框中包含的所有块都位于PIC16F1788 MCU内部。


通常情况下,OSC的第一个标准配置是OSC 1的石英管脚,两个经典的加载电容C1和C2,但有一个技巧。一个额外的部件D1连接在C1和地面之间。这是示意图中唯一奇特的部分:一个可变电容二极管。这样的二极管,当用反向直流电压极化时,起到一个小电容器的作用。它的电容是直流电压的函数。


我采用了NXP的BB156,当电容器从18pf降低到6pf,电容器的电压从0V增加到5V。XO依赖的是电容。所以,在水晶的一条腿上加上一个可变电容可以让我们通过施加不同的直流电压来微调它的频率,这变成了压控晶体振荡器(VCXO)。可能的频率变化很小,但仍然可以构建TCXO,我稍后将解释。


回到图4所示的示意图,可以看到直流电压来自8位数模转换器(DAC),此DAC内置于PIC中。DAC输出电压通过一个感应器(L1)施加到D1,该感应器阻断8MHz信号。在PIC运算模块中内置了一个运算放大器。通过这种配置,只需改变DAC值,就可以从PIC上运行的固件微调晶体频率。


我还需要一种精确测量晶体温度的方法。德州仪器(U1)的精密LM35模拟温度传感器完成了这项工作。该传感器每摄氏度产生10毫伏的电压,因此从-0.2伏到+0.7伏,在-20摄氏度到+70摄氏度时,0.5摄氏度的精度就足够了。我想用PIC中提供的12位ADC来测量这个温度,但如何管理传感器输出电压可能是负的呢?可以采用一个小把戏。在U1和地面之间加了一个二极管(D2),增加了大约0.6V的电压降。因此,U1的输出相对于地总是正的。这个输出电压和D2上的电压都连接到两个ADC输入端。它们的差别是温度,D2上的电压降不影响测量。顺便说一句,PIC还有一个内部4.096V参考电压(FVR),它可以设置ADC的全量程。


最后,我想用实验室频率计测量实际的晶体振荡器频率,以检查设计是否可行。将频率计直接连接到晶体振荡器引脚是一个非常糟糕的主意。你知道为什么。仪表连接会引入寄生电容,从而改变振荡器的频率。幸运的是,这个PIC有另一个内置模块,时钟分配器模块(CLKREF)。它取时钟频率,除以一个给定的数字(在本例中为8),然后将得到的时钟路由到一个外部引脚上。正是我需要的!我加了一个47Ω的电阻(R1)来匹配频率计的50Ω输入,这就是所有的零部件。


原型


我没有设计定制的PCB,而是从MikroE订购了一块“Ready for PIC”28针开发板。我用PIC16F1788替换了所提供的MCU,并在原型区焊接了一些额外的组件(图5)。但这里必须特别小心。


image.png?imageView2/2/w/550

图5——我组装好的原型。


首先,为了获得好的结果,温度传感器必须测量晶振的温度,而不是环境空气。因此,我试图将LM35直接固定在晶体体上,如图5所示。好吧,这可能还不够完美。把晶振和石英粘在一起,甚至在这两种成分周围建立一个小的温度室,效果会好得多。


第二,组件必须尽可能地减少晶体周围以及二极管D1和直流偏置电感器L1之间的寄生电容。否则,由于寄生电容器将占主导地位,因此曲线的变化将远远小于计划。此外,XO可能根本无法运行。


图6显示了我是如何做到的。我把D1和C1焊接成一个“帐篷形状”直接接在原来的电容器垫上。然后我把它们连接到一个SMT电感器(L1),用一根细导线尽量远离地平面,以减少电容。小型的SMT元件是很有趣的,只要你有一个好的双目镜头并且稳稳地拿起烙铁。


image.png?imageView2/2/w/550

图6–SMD组件的特写视图。


固件


最后一项工作是为PIC开发一些固件,模拟TCXO补偿环。幸运的是,Microchip提供了非常有效的工具。我从下载开始Microchip.com公司MPLAB IDE和XC8编译器的最新版本。然后我启动了MCC(MPLAB代码配置器)插件,它允许我生成PIC内部模块所需的所有代码:ADC、DAC、CLKREF、FVR、OPA、EUSART等等。这一步不到10分钟(图7)。


image.png?imageView2/2/w/550

图7——这里显示的是Microchip的MPLAB代码配置器


我用C编写了实际的TCXO仿真程序。因为我只想验证这个概念,所以我实现了一个简单的UART驱动命令集:读取温度;手动将DAC设置为给定值;在RAM中下载温度补偿表;并运行补偿算法。这使我可以将笔记本电脑连接到板卡上,并使用终端仿真软件轻松完成所有实验。


C代码可以从Circuit Cellar的文章代码和文件网页免费下载,它更像是一个实际TCXO实现的起点。我没有将补偿表存储在非易失性内存中,但我想您自己也可以这样做!无论如何,我鼓励您阅读这个源代码,它只有两页长。主补偿循环如清单1所示,简单明了:DAC值是基于当前温度和补偿表中最接近的两个值进行线性插值的。图8显示了运行时的固件输出,包括我的补偿表值。


清单1

LISTING 1 – These lines of code are implementing the TCXO main loop, including linear regression.

case 'R':
printf("nn RUN - any key to stopnr");
while(!EUSART_is_rx_ready())
{
v=AvgAdc();
printf("ADC=%d -> ",v);

// linear regression
if (vvout=tabdac[0];
else
{
for(i=1;i{
if(v{
vout=tabdac[i-1]+
(tabdac[i]-tabdac[i-1])*
(v-tabadc[i-1])/
(tabadc[i]-tabadc[i-1]);
i=NBPOINTSMAX;
}
if (tabadc[i]==0)
{
vout=tabdac[i-1];
i=NBPOINTSMAX;
}
}
}
printf("DAC=%dnr",vout);
DAC1_SetOutput(vout);
__delay_ms(1000);
}


image.png?imageView2/2/w/550

图8–当循环激活时固件输出的示例,显示在加热测试期间。


有效吗?


下一步,是时候测试这个概念是否有效,并确定可以实现什么样的稳定性改进。我周围没有合适的温度测试室,所以我征用了厨房冰箱和烤箱(图9)足以在0到100°C之间进行测试。我将电路板置于不同的温度下,让其稳定下来,并手动更改DAC设置,直到频率达到我想要的频率。


image.png?imageView2/2/w/550

图9–无需昂贵的温度箱即可完成测试。事实上,你只需要一台电脑,一个频率计和一个厨房。


对于频率测量,我使用了一个很好的安捷伦(现在是Keysight)53230A频率计。这个测试给了我校准表所需的值。然后,我启动了补偿回路程序,在测量时钟频率的同时,轻轻加热电路板,使其在整个温度范围内加热。结果如图10所示。Y轴是输出频率(8MHz时钟除以REFCLK块的8),X轴是与温度成比例的ADC值(1000=0°C,2000=100°C)。虚线显示了XO在各种DAC设置下的测量稳定性,无需温度补偿程序。我测量了100°C温差下20Hz(20ppm)左右的变化。未断线表明,温度补偿运行后,稳定性提高到4Hz(4ppm)左右。


image.png?imageView2/2/w/550

图10–虚线显示了五个DAC设置下振荡器频率与温度(6°C至60°C)的关系。当TCXO固件运行时,普通线显示振荡器的稳定性。


因为Keysight 53230A频率计有一个很好的图形特性,所以当电路板快速加热时,可以直观地看到输出频率的变化(图11)。图中显示了TCXO的行为。输出频率随时间线性增加,当固件减少DAC值时,输出频率跳下,试图补偿这种变化。


image.png?imageView2/2/w/550

图11——加热试验期间输出频率随时间变化的近景图。小的垂直步长是当固件循环检测到温度变化时,DAC值变化的结果。


结束


当然,4ppm的稳定性不如现成的精密TCXO好,但是这个实验向你展示了如何在一个标准的低成本晶体周围实现温度补偿。我没有试图优化设计,因为我的唯一目标是向你展示概念。我怀疑这个实验中剩余频率误差的第一个原因是晶体和温度传感器之间的低质量热接触。在我的测试中,这是显而易见的,因为当温度上升或下降时,频率误差是相反的。两种成分中的一种可能有不同的热潜伏期。


不管怎样,我希望这能给你下一个项目一些想法。像往常一样,不要犹豫,自己试试吧。如果你成功地建立了一个超精密的TCXO,那就写下你是怎么做到的,然后把你的文章送到Circuit Cellar发表!


推荐阅读

史海拾趣

迈翔科技(COILMX)公司的发展小趣事

迈翔科技深知品质对于企业的重要性。为了确保产品质量,公司引进了ISO9001管理体系,并严格按照该体系进行生产和管理。此外,公司还建立了完善的质量检测体系,对每一批产品进行严格的质量检测和控制,确保产品出厂合格率达到了行业领先水平。

Alliance Fiber Optics Products Inc公司的发展小趣事

随着技术的不断进步,AFOP在光纤元件领域取得了重大突破。公司成功研发出一系列高品质的光纤元件和集成模块,如波分复用光电二极管、光衰减器等,这些产品在光网通信领域具有广泛的应用。同时,AFOP还注重产品升级和迭代,根据市场需求和客户反馈,不断优化产品性能和质量,赢得了客户的广泛认可。

百佳(BAIJIA)公司的发展小趣事

百佳公司深知技术创新是企业发展的核心动力。因此,他们不断加大研发投入,引进先进技术和设备,推动产品的升级换代。通过不断创新,百佳公司成功开发出了一系列具有自主知识产权的电子产品,不仅提升了企业的核心竞争力,也为行业的发展做出了重要贡献。

帝特(DTECH)公司的发展小趣事

2007年,帝特成功获得迪士尼形象授权(泰国),这一里程碑事件标志着帝特品牌在国际市场上的认可度和影响力得到了显著提升。随后,帝特又获得了国内悠嘻猴授权,进一步丰富了其产品线。2008年,帝特荣获“守合同、重信用企业”荣誉称号,这一荣誉不仅是对帝特过去努力的肯定,也为公司的未来发展奠定了坚实基础。

华宇创公司的发展小趣事

随着市场的不断发展,华宇创意识到单一产品无法满足日益增长的市场需求。于是,公司加大了对研发的投入,积极引进高端人才,与国内外知名科研机构建立合作关系。经过不懈努力,华宇创成功研发出一系列智能电子设备,包括智能手表、智能眼镜、智能家居控制器等。这些新产品的推出不仅丰富了公司的产品线,也进一步提升了华宇创的市场竞争力。

ERP Power公司的发展小趣事

在这个故事中,我们将看到ERP Power如何与HANA技术相结合,为一家电子企业提供了强大的数据支持和分析能力。通过实施基于HANA的ERP Power系统,该企业成功实现了数字化转型,提高了生产效率和产品质量。

问答坊 | AI 解惑

开关电源设计入门

开关电源设计入门…

查看全部问答>

MBR分区表问题

03 0B 01 00 21 72 20 00 60 01 00 00 00 CD 00 00 01 73 01 00 0B EB 20 00 60 CE 00 00 20 2F 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA 我有这样的一段分区表。。 ...…

查看全部问答>

OV511驱动

从网上找的OV511驱动的源码,在2440下加载之后,读到的图像通常是模糊的,也就是图像断行,还是灰度图,怀疑输出的YUV420数据,只得到了Y分量。但是初始化中明明将寄存器设置的是YUV420 OUTPUT. 我读了程序,觉得寄存器设置的有问题,设置的SnapSh ...…

查看全部问答>

wince可以使用两个不连续内存吗???

比如一个0x50000000 ~ 0x58000000,另一个0x30000000~0x38000000,各128M,共256M,怎么使用他们?config.bib中RAM好像必须是物理连续的吧? xiexie…

查看全部问答>

请大家浅谈一下各系列单片机的特点及适用范围

MCS-51系列单片机,PIC系列单片机,MSP430系列单片机,MC68HC11系列单片机,AT89系列单片机,各种ARM芯片的特点和适用范围,请大家浅谈一下…

查看全部问答>

背景问题

我用vs2005写wince5.0的程序,怎么把窗口的背景设为一副图片,不使用颜色,且在这副图片的基础上,其它的控件都对于窗口透明啊?谢谢!…

查看全部问答>

跪求Windows Mobile 5.0的SDK文档下载!

我在MSDN的网站上虽然能够看到SDK的帮助文档,但是不知道为什么里面的SAMPLE没有的下载? 请问同志们知道那里有完整的Windows Mobile 5.0的SDK下载吗? …

查看全部问答>

求助高手 做一个锁相环电路

本帖最后由 dontium 于 2015-1-23 13:29 编辑 新手求救,一个锁相环电路,中心频率40M,输出DC--3M,不知道如何做,求大侠指点一下 [ 本帖最后由 yanghuiguang 于 2011-8-3 10:27 编辑 ] …

查看全部问答>