这个电路的反馈系数F等于C2/C3, 电压放大倍数A = β*RL’/rbe,其中RL’ = Rc//(Ri/F^2)。
我们是正弦波要能够起振,是不是 AF的值要大于1呀。如果我们通过调整C2/C3的值,就会出现一个相悖的结论,调大了F,结果A却小了。那么A和F的乘积变化的趋势反而不明朗了。实际实验中,C2/C3的值既不能太大,也不能太小,具体指只能靠测试来设定。电容三点式震荡电路,相对来说它的缺点也在于此,通过调节电容去调节频率的话,会影响起振条件,但是通过调节电感办法来调节震荡频率,实现上又会比较困难。
通过LC谐振点的公式来看,如果我们要想提高震荡的频率,只能是不断减小C2、C3以及电感L。但是C2和C3减小到一定程度的时候,比如和电路的杂散电容一个级别的时候,我们就很难确定震荡的频率了,因为杂散电容的电容值几乎很难确定。那么我们有没有其他办法来解决这个问题呢?如果我们把C2、C3电容的容值设定在远大于杂散电容,那么杂散电容对电路的影响是不是就可以忽略掉了,电路的震荡频率是不是就会相对来说非常稳定。那么问题来了,震荡的频率如何提高呢?具体的措施,就是在电感上串联一个小电容C,同时C<<C2, C<<C3, 这样震荡频率只和这个C有关,f = 1/(2πsqrt(LC))。电容C2和C3这里只是起到分压作用而已。整体的设计,如下图所示。
分析完了电容三点式震荡电路,那么我们看一下晶振怎么参与进来。因为我们前面已经提到了,我们单片机电路的晶振模块本质上也是电容三点式震荡电路。要看清楚这个问题,我们必须要了解晶振的高频模型,看看晶振的物理特性到底是什么。
实际上,晶振的高频等效模型如上图所示。这里的L,可以等效为晶振的惯性,这个值大概是几mH到几十mH。电容C等效为晶振的弹性,这个电容比较小,容值大概在0.01pF到0.1pF。R等效为晶振的摩擦损耗,这个值大概在100R,当然理想情况下这个值是零。电容C0等效为晶振的静态电容,它的大小和晶振的几何尺寸和极间面积有关,一般是几到几十个pF。那么实际上,晶振是惯性和弹性的结合体。结合我们前面提到的电容三点式振荡电路,我们更希望利用的其实是晶振的惯性部分,也就是电感部分对吧。在晶振组成的震荡电路中,震荡的稳定性主要是靠晶振本身的高Q值来稳定的,不是靠我们上面提到的那个思路,而且我们也不需要在外部震荡处那么高的频率,比如100Mhz的震荡。一般情况下,我们使用的是12Mhz的无源晶振,单片机内部的更高频次的震荡信号,是通过分频器和锁相环来实现的。
既然,我们使用的是晶振的惯性部分,那么我们就来分析一下,在什么频率下晶振会更多的呈现惯性,也就是感性。
当晶振的LCR电路发生谐振的时候,这个回路呈现纯阻性,等效电阻为R。谐振频率fs=1/(2πsqrt(LC))。当f低于fs的时候,C0这里起到主导作用,晶振呈现容性。当f大于fs的时候,LCR这条支路呈现感性。LCR这条支路将和C0发生并联谐振,谐振的频率fp = fs*sqrt(1+C/C0),这个具体的公式大家可以下去推导一下,我们这里就不再做更深入的介绍了。大家可以看一下,因为C远远小于C0,所以fs和fp是不是无限接近呀。那么也就是说晶振只有在很窄的频率范围内,才会呈现感性。
回到我们前面提到的电容三点式震荡电路,晶振只在一个很窄的范围内呈现感性,而且受温度的影响比较小。那么是不是说用晶振组成的三点式震荡电路,它的频率会非常稳定呀。具体电路设计如下图所示。那这样,我们使用晶振搭建的电容三点式震荡电路就算完成了。
那么下一个任务就要回答,单片机中的晶振电路一般是如何实现的呢?我们以80C51来距离,它震荡电路的框图大概是下面这个样子。
我们大体可以把这个反相器等效成一个三极管,外部晶振和电容组成的单元完成了选频和信号的相移。反相器输入端的信号是流经R1的电压信号和流经R2的信号的叠加,R1和R2这里可以看成一个是正反馈电阻和一个正反馈电阻,这两个电阻在这里应该是起到限幅的作用的。有了正反馈,有了选频网络,有了限幅模块,那么我们的晶振电路是不是就可以输出正弦波信号了呀。
上面我们花了较大篇幅讲解了晶振的起振原理,那么了解这些东西对我们设计晶振模块有什么指导意义呢?
比如有时候,我们这两个电容不焊接,晶振也能起振。那这是为什么呢?通过我们前面的分析,晶振起振必须要有这两个电容的参与是吧,要不然无法实现选频和信号反向。但是这里究竟是为什么呢?主要的原因就是因为其实对于C1和C2来说,本身这两个电容就很小,比如我们常用的一般是12pF,15pF等等。有时候,杂散电容就会接近这个级别。那么这个时候,晶振也会起振。但是大家注意呀,这种情况下,晶振起振只是特殊情况呀。我们不能通过这种方式去节省成本。
电容C1两端的电压对反相器的输入起到比较重要的作用。如果C1过大,同样的电流加在C1上的电压信号是不成就变小了,这是不是相当于反馈信号变弱了?其实这个对晶振起振是相当不利的。反过来说,如果C1过小,它本身存储的能量也就小,也就更容易受到外界的干扰。C2的作用和C1正好相反。那么在布板的时候,如果是双面板,而且比较厚的话,分布电容影响还不大。如果是高密度多层板,那么就需要考虑分布电容的影响了。因此对于环境相对比较复杂的工控类的项目,建议最好不用使用无源晶体振荡器,选择有源的晶振就可以了。