帮你了解晶振——自己实验一个低成本TXCO

发布者:Tiger8最新更新时间:2020-10-27 来源: Circuit Cellar关键字:晶振 手机看文章 扫描二维码
随时随地手机看文章



image.png

本文作者:Robert Lacoste


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


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


石英晶体


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


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


image.png

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


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


image.png

图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

图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

图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

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


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


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


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


image.png

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


固件


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


image.png

图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

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


有效吗?


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


image.png

图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

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


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


image.png

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


结束


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


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


关键字:晶振 引用地址:帮你了解晶振——自己实验一个低成本TXCO

上一篇:技术文章—BJT电流镜重要特性详解
下一篇:新一代硅芯片温度传感器让测量精度更高

推荐阅读最新更新时间:2024-11-13 05:30

如何在6M晶振下得到更高的波特率
在一些对电磁干扰要求严格的电路中尽量降低晶体的振荡频率是必要的,而如果又需要获得更高的串口通信频率,这时可以考虑使用8052中的T2作波特率发生器来解决问题,仅仅只有6M的晶振却可以得到38400b/s的波特率。 下面先来看看用T1做波特率发生器时的情况,晶振为6M: 若用T1作波特率发生器,它只能作为8位定时器使用,为得到更高的波特率,可以设置SMOD=1,则它的波特率公式为:BAUND=2*fOSC/(32*12*(256-X)),其中X为定时器T1的初值。若BAUND=4800,则X=249.5,取整为0xf9,或舍入为0xfa,发送10个s,在超级终端观察,得到一个字母k或空。在选择BAUND=9600,则X=252.7,
[单片机]
解读“产业之盐”——电子系统不可或缺的晶体器件
开门七件事:“柴米油盐酱醋茶”,盐是人们生活中的必需品,而在电子科技领域,晶体元器件则被称为“产业之盐”,可见晶体元器件在电子技术领域的重要性。然而,“玉不琢不成器”,石英晶体必须经过非常精密的加工才能为电路系统提供精准的时钟,而占据了世界晶体元器件市场超过1/5份额的精工EPSON(爱普生)公司无疑是雕刻石英晶体的能人巨匠。 从业界巨头看“产业之盐”现状 “就像比利时的钻石切工名扬四海一样,EPSON的石英晶体技术在全球也是处于领导者地位。EPSON拥有自己的晶棒工厂,而全球只有3家晶体元器件厂商 拥有自己的晶棒工厂,从最开始的人工晶棒培育,到切割,打磨……EPSON掌握了石英晶体加工的整个流程。此外,EPSON也是
[嵌入式]
解读“产业之盐”——电子系统不可或缺的晶体器件
STM32单片机外部晶振配置时钟设置
学习野火的固件库UART1串口案例时,用的是SIM9008模块应用板上的STM32103F103RB芯片,使用的外部晶振是12M。 串口读取的是乱码 默认的外部晶振是8M 由于STM32的库默认是外部晶振8M的情况下实现的,所以配置串口波特率的时候也是按8M,包括主频。 如果采用外部晶振8M或12M,配置时钟为72MHZ 。 1)在system32_stm32f10x.c文件中的void SetSysClockTo72(void)里这样改: 8M: RCC-》CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);//8*9=72 12M: RCC-》CFGR
[单片机]
STM32单片机外部<font color='red'>晶振</font>配置时钟设置
Atmega168 外部10M晶振熔丝位设置方法
本日志介绍 Atmega168外部10M晶振熔丝位设置方法。 图1:Boot Flash 1024;使能串行下载;看门狗使能 图2:电压低于2.7V复位 图3:外部晶振8M以上,启动速度最慢;没有Flash加密;没有Boot Loader
[单片机]
MSP430f149使用XT2的8M晶振输出PWM
由于需要将PWM保持在20khz来控制BUCK电路降压,同时又需要步进改动占空比,故需要TA利用8M晶振输出PWM,经测试,最大占空比频率可达4M,将频率定为20khz时,有200个步进点,BUCK输入电压为18V,每次改变占空比输出电压约变化0.1V可达到要求。 系统版XT2IN与XT2O直接连接高频晶振8M晶振,TI官方例程所给程序无使用XT2的程序(但是有开启HF XTAL的:BCSCTL1 |= XTS;)由于我们的板子8M晶振被接在了XT2IN和XT2O上,所以只能使用(BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器)来打开8M晶振,之后通过(BCSCTL2 |= SELM_2 + SELS;
[单片机]
简述判断数字电路中晶振和复位电压的经验
1.测晶振时钟:用数字万用表测晶振两端的电压,如果两端电压为电源电压一半或其中一端低于电源电压的一半(多见于频率较高的晶振),则晶振工作正常。如果,某一端高于电源工作电压一半,则晶振不正常;但判断其工作的频率是否符合标称值,可以用观察工作情况判定。例如,一台采用ES系列解码芯片的VCD,其27MHz晶振发生频偏时,就会出现无彩色或开机画面放大同时无彩色现象,VCD机伺服电路的16MHz不符,会发生碟片转而不读数现象,这时,可更换晶振试试。 2.复位电路的检测:这一项必须使用指针式万用表,因为用数字表无法看出瞬时的电压反应。测量时,万用表置于2.5V挡,用万用表的红表笔接电源的正极,黑表笔接复位脚,然后开机通电,这时若表针轻微摆动一
[测试测量]
AVR单片机ATmega8内部晶振使用
ATmega8在使用内部晶振的时候,需要进行烧写方式的选择,来选择不同内部晶振大小。 对应UART的波特率设置和使用外部晶振的方式是一样的。 但是一般情况下,不建议使用内部晶振,因为内部晶振的精度不高,会因为温度等外部环境的影响,使得不准确。
[单片机]
STM32中晶振的原理与作用
晶振在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率为串联谐振,较高的频率为并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反
[单片机]
STM32中<font color='red'>晶振</font>的原理与作用
小广播
最新模拟电子文章
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved