前面已经介绍了一些关于电容器的基本知识,这些知识对于大多数电容器电路的应用与理解已然足够,从本章开始我们将探索电容器在实际电路中的应用。
首先来观察一下电容器最基本的储能特性,这个特性也是电容器大多数应用电路的基础,我们的观察电路及其实际参数如图8.1所示。
图8.1 电容器储能特性观察电路
当开关S 1 闭合时,电源电压U S 通过电阻R 1 施加在电容器C 1 两端,我们使用示波器测量电阻R 1 左侧(输入)与右侧(输出)的电压波形。
假定初始状态下,电容器C 1 中没有电荷(其两端的电压U C 为0V)。当开关S 1 闭合时,相关的输入输出波形如图8.2所示。
图8.2 输入输出波形
可以看到,当开关S 1 闭合后,电源电压U S 通过电阻R 1 对电容器C 1 进行充电,C 1 两端的电压U C 以指数形式开始上升,经过一段时间t后,C 1 充满电(相当于开路),此时C 1 两端的电压等于电源电压U S ,这就是电容器C 1 充电储能的整个过程(电路理论称为“阶跃响应”或“零状态响应”)。
这个电路也称为RC积分电路(Integrating Circuit),我们可以用一个数学表达式来概括一下电容器充电的整个过程,如下式所示:
其中,τ(念tao,我对你的钦佩之情犹如滔滔江水连绵不绝)是积分电路的充电时间常数(Time Constant),其值为阻值R与容值C的乘积,如果均使用国际单位(阻值为欧姆,容值为法拉),则时间常数的单位为秒,在本电路中,充电时间常数τ=1kΩ×10μF=10ms。
无论输入电压U S 有多大,电容器两端的电压都是从初始值开始慢慢变化(此例为充电上升)的,这就是我们常说的“电容器两端的电压不能突变”,因为电荷量的累积过程不可能是瞬间完成的。
从数学理论上来讲,电容器两端电压U C 表达式中的指数函数部分只有在时间t为无穷大的时候才会为1(无限接近1)。换言之,电容器最终完成充电电压为U S (充满)时所需要的时间为无穷大,但是经过3~5倍的充电时间常数后,电容器两端的电压已经达到输入电压U S 的98%。因此,我们可以认为电容器的充电过程已经结束,如表8.1所示。
表8.1 输出电压与输入电压的比值
充电时间常数决定电容器充电速度的快慢。时间常数越大,则充电时间越长,反之则越短。我们将图8.1所示电路中电阻R 1 修改为100Ω与10kΩ重新仿真一下,其波形分别如图8.3与图8.4所示。
图8.3 R 1 =100Ω相关波形
图8.4 R 1 =10kΩ相关波形
看起来两个仿真波形是差不多的。这是必然的,因为都是以指数形式上升的。但是,输出电压的上升速度却不一样,当电阻值为100Ω时,输出电压上升到4.9V时需要3.9ms;而当电阻值为10kΩ的时候,输出电压上升到相同值却需要约391ms。
RC电路在实际应用中非常广泛,最典型的应用就是时间延迟或定时,如STM32单片机的复位电路(Reset Circuit,不要联想为RC,此RC非彼RC),如图8.5所示。
图8.5 单片机复位电路
复位电路的作用就是把单片机(或其他具有时序控制需求的芯片)恢复到起始状态,正如同计算器的清零按钮一样。对于单片机而言,就是将内部所有寄存器全部设置为初始状态(可能是全1、全0或其他值,取决于具体单片机型号)。例如,程序计数器(Program Counter,PC)也是一个寄存器(Register),它存放的就是单片机需要执行指令的地址,当PC复位清零后,单片机内部程序就可以从头开始运行,而不是乱跑(程序跑飞)。
单片机内部复位电路示意图如图8.6所示。
图8.6中的逻辑非门用来对外部信号进行整形,而寄存器为单片机内部所有寄存器的简化图,当CLR为高电平时全部复位为0(即Q=0),RST#表示复位信号节点(符号“#”表示低有效)。
当电路系统刚刚上电时,电源VCC通过上拉电阻R对电容器C进行充电。由于电容器两端的电压不能突变,此时节点RST#的电位比较低,经过逻辑非门后为高电平,所以寄存器进入复位状态,然后电容器开始进行充电,当电容器两端的电压升高到一定值时,逻辑非门的输出翻转为高电平,内部寄存器退出复位状态,单片机可以正常工作。
图8.6 单片机内部复位电路示意图
那复位时间该如何计算呢?根据芯片供电电压的不同,常用的CMOS单片机有5V与3.3V两种,它们的电平标准分别如图8.7所示。
图8.7 CMOS与LVCMOS电平标准
其中,V IH (High-Level input voltage)表示输入高电平;V OH (High-Level output voltage)表示输出高电平;V T 表示数字电路勉强完成翻转动作时的阈值电平,它是一个介于V IL 和V IH 之间的电压值,CMOS电路的阈值电压大约是供电电源电压的一半。要保证CMOS数字逻辑认为外部给它输入的电平为“高”,则这个输入电平(也就是前级的高电平输出)的最小值V OHmin 必须大于输入电平要求的最小值V IHmin ,如图8.8所示。
图8.8 V OHmin 与V IHmin
同样,V IL (Low-Level input voltage)表示输入低电平,而 V OL (Low-Level output voltage)表示输出低电平。要保证CMOS数字逻辑认为外部给它输入的电平为“低”,则这个输入电平(也就是前级的低电平输出)的最大值V OLmax 必须小于输入电平的最大值V ILmax ,如图8.9所示。
图8.9 V OLmax 与V ILmax
这让我想起了马太效应:凡是有的,还要给它更多;没有的,连仅有的也要被夺走!逻辑电路要求输入高电平时至少为V IHmin ,那实际给它的电平V OHmin 应该比需要的V IHmin 更大;而要求输入低电平时至多为V ILmax ,那实际给它的电平V OLmin 只能比V ILmax 更小。
图8.7就是数字逻辑电平的噪声容限图,那么它跟复位时间有什么关系呢?也就是说,对于5V(3.3V同理)供电的CMOS非门电路而言,当复位输入信号RST#的电位低于3.5V(0.7×VCC)时,CMOS逻辑非门认为输入是低而输出高电平。只有RST#的电位高于3.5V时,逻辑非门才会输出高电平。这里的逻辑非门就相当于一个比较器,它将RST#的电位与CMOS逻辑电路翻转需要的阈值电平进行比较,只不过比较的阈值电平并非总是相同的(更像是施密特触发器),如图8.10所示。
图8.10 CMOS逻辑非门输入与输出
例如,为5V供电的单片机设计一个复位时间为10ms(一般数据手册都会给出这个参数的最小值)的复位电路,最终需要确定的参数就是阻值与容值。我们可以假定电阻为10kΩ(也可以假定其他阻值,或先假定电容值,以参数值最常用为选取原则)。
根据电容器两端电压的充电表达式,则有:
变换一下,则有:
我们可以选取常用电容器的电容值为1μF,因为复位时间长一点没有影响。
当然,以上我们只是针对典型的CMOS逻辑电路进行计算的。换言之,不同型号单片机的输入高电平V IH 与供电电压VCC都有可能是不一样的。因此,我们应该从数据手册的直流参数(DC Characteristics)部分找到相关的值再进行计算(有些数据手册会对复位引脚单独描述),如表8.2所示为某单片机的复位引脚的电平标准。
表8.2 复位引脚的电平标准
若无其他注明,本表所示数值对以下条件有效:环境温度为-40~105℃,供电电压为2.0~3.6V。
当然,有些单片机的内部也有一些辅助电路,它们也会影响实际的复位时间,此时应参考相应的数据手册。
虽然现在很多芯片已经将复位电路集成到了芯片里面,外部电路不再需要单独的RC电路,但是其原理仍然是不会变的。
有人说:说那么多废话“做甚”?一般单片机都有典型的应用电路,只要照抄就行了,没必要搞那么复杂!我就是不会这个计算公式,也不需要知道这个知识,但我的水平依然还是那么厉害。
其实,这就是普通工程师与优秀工程师之间的区别!有太多的东西实际应用起来差别并不大,但优秀工程师总会比普通工程师要懂得多一些,就如晶体与匹配电容,51、AVR、STC、PIC、STM32等单片机典型应用电路一大堆,照着画原理图就是了,无论是“大牛”还是“菜鸟”,使用起来大家都一样!
但事实是:1%的那部分知识就能够决定你的技术层次,而其他99%的知识,大多数“地球人”都知道,这与二八法则有多么相似。大多数人的工作内容都是很相似的,然而能解决其他人所不能解决问题的人才是公司最需要的。换言之,从面试单位的角度判断,如果你理解某个“看似很偏”的技术问题,从概率上来讲,你的水平比那些不理解的工程师要高很多(当然,我没有说是绝对,也许你走“狗屎运”恰好知道这个知识点,而其他类似知识点都不知道)。
总之,我想表达的意思是:你赢了!