按键是仪器仪表中普遍采用的人机输入接口电路。在按键电路中必须考虑对按键的抖动进行软件消抖和硬件消抖。软件消抖具有使用硬件数量少的优点,但也具有以下两个缺点:
(1)在仪器键盘电路中,多个按键安装在仪器面板上,键盘的输出通过排线连接到主控板上,此时键盘导线寄生电感和寄生电容的存在,寄生电感寄生电容和排线电阻将组成二阶振荡系统,二阶振荡将形成负电平脉冲,而负电平脉冲很容易超出数字芯片的输入最大允许电平范围,导致数字芯片容易损坏。
(2)按键闭合和断开时,电压信号下降沿非常陡峭,剧烈变化的电压信号将通过互容传递到相邻导线上。
硬件消抖电路的设计主要是要考虑以下三个因素:
(1)消除信号的抖动,确保按键电路输出信号的平整;
(2)消除信号的下冲,因为下冲电平超出了后续数字芯片的最大输入电平范围;
(3)降低信号变化的速度,避免在邻线上引起容性串扰;
(4)不影响按键电路的正常功能。
常见的硬件消抖电路包括电容滤波消抖和触发器消抖。电容滤波消抖采用电阻和电容组成低通滤波器,具有电路结构简单可靠的优点,因此本文将重点阐述该消抖电路。
1按键消抖电路结构与电路模型
图1为某仪器按键电路原理图,按键安装在仪器面板上,通过导线连接到主控板上,按键的一端接上拉电阻并连接后续电路,按键的另一端接地,当按键没有按下时,按键输出高电平,当按键按下时,按键输出低电平。图2为加上滤波电容后的按键电路。
图1某仪器按键电路
图2按键消抖电路
图3为按键消抖电路的电路模型。图中R0为连接按键导线的电阻,L为导线电感,C0为导线对地电容,Cf为滤波电容,Cp为按键后续电路的输入电容,Ri为按键后续电路的输入阻抗,R为上拉电阻,VCC为电源电压,U为按键消抖电路的输出电压。
图3按键消抖电路的电路模型
当按键闭合时,其等效电路模型如图4所示。当按键断开时,其等效电路模型如图5所示。
2按键消抖电路数学模型
设某一时刻按键合上,在此之前按键断开,整个电路处于稳态,即各个电容和电感上没有电流流动。此时输出电压U=u0=VCC×R(R+Ri)。则根据图4整个电路可列出以下微分方程:
图4按键闭合时等效电路模型
图5按键断开时等效电路模型
式中:i0为L所在支路的电流;C为C0,Cf和Cp的等效电容,C为三者之和。对式(1)、式(2)进行拉普拉斯变换后可得:
将上式运用留数定理分解可得:
设某一时刻按键断开,在此之前按键闭合,整个电路处于稳态,即各个电容和电感上没有电流流动。此时输出电压U=u0=VCC×RiR0(RRi+R0Ri+RR0)。根据图5可列出以下微分方程:
3按键电路瞬态分析
对式(5)进行拉普拉斯反变换便可得到按键断开电路处于稳态时按键闭合的输出电压u(t)的时域响应。
根据拉普拉斯变换的初值定理和终值定理,可得到:
对式(6)进行拉普拉斯反变换便可得到按键闭合电路处于稳态时按键断开的输出电压u(t)的时域响应。对式(6)进行拉普拉斯反变换便可得到按键闭合电路处于稳态时按键断开的输出电压u(t)的时域响应。
式(6)的时域响应为电容充电的时域响应,其响应过程为单调上升,其上升时间为2.2T,充电时间常数T等于ReC,Re为Ri和R的并联。
T越大上升时间越大,上升时间过大将影响按键的正常使用。按键按下一次的持续时间约为0.01~0.1s,因此消抖电路将上升时间调整到500μs以内比较适合。
现测得已连接到单片机输入引脚的按键电路其导线电阻R0为1.6Ω,导线电感L为25nH,导线对地电容Ci+Cp为9.6pF,在电路中使用的上拉电阻R为10kΩ,单片机输入引脚输入阻抗Re为2MΩ,使用电源电压VCC为3.3V,则不加滤波电容时,按键闭合和断开的瞬态响应分别如图6和图7所示,由图6可见下冲峰值接近2V,而使用单片机引脚的最大输入电压范围为-0.3V~(VCC+0.3V),该下冲电压远远超出该电平范围。
图6实测按键闭合瞬间的时域响应
4按键消抖电路设计
按键消抖电路的设计主要是利用电容的平滑功能,将毛刺平滑掉,滤波电容越大,信号越平滑。但是电容的增大会导致上升时间过大,电容太小则无法消除毛刺。现针对一单片机按键电路为例进行阐述。图8为该电路未进行硬件消抖时使用衰减探头在示波器上观察到的毛刺。
图7实测按键断开瞬间时域响应
图8按键电路毛刺
现测得该单片机按键电路寄生电感L为30nH,寄生电容C0+Cp为35pF,导线直流电阻R0为0.2Ω。查阅单片机数据手册,计算得到其输入引脚输入阻抗为2MΩ,上拉电阻R为10kΩ。根据式(6)和式(7)可计算出未加滤波电容的按键电路在按键闭合时其二阶系统的ξ为0.004887,振荡频率为155.319MHz。图6为在示波器上观察到的按键闭合瞬间的时域响应。由图可见最大的下冲幅度达到了-1.66V,该电平远超出单片机的电压范围。
根据式(9)可计算得到按键断开时充电时间常数为348.2587ns,信号上升时间为766.17ns。图7为在示波器上观察到的按键断开瞬间时域响应。为消除按键抖动,滤波电容越大越好,但电容增大将增大信号的上升时间。为不影响按键电路的正常功能,需将上升时间控制。在0.5ms以内。为此可得到当上拉电阻为10kΩ时滤波电容的最大值为22.85nF,上拉电阻为1kΩ时滤波电容的最大值为227.38nF。
当滤波电容为227.38nF时,ξ值为0.2759,ξ值小于1,当按键闭合时依然会有衰减振荡,此时的衰减振荡频率为1.8498MHz,下冲峰值约为-1.34V,下冲持续时间约为271ns,R=1kΩ,Cf=227.38nF。
由于下冲持续时间较长,危害性也将增大。图9为R=1kΩ,滤波电容为227.38nF时的按键闭合瞬间时域响应波形。图10为R=1kΩ,滤波电容为220nF时在示波器上观察到的按键闭合瞬间时域响应波形。
图9按键闭合瞬间仿真波形
图10按键闭合瞬间实测波形
因此,单靠增加电容来进行滤波的方法是行不通的,由式(7)可知,增大R0可以显著增加ξ,为此可以在按键导线上串接电阻。在最终的按键消抖电路设计中,串接电阻选为100Ω,滤波电容为8.2nF。此时ξ为26.1177,彻底消除了振荡,此时的充电时间常数T为81.94μs,上升时间为180.268μs。图11为整个按键消抖电路的按键闭合和按键断开瞬间的时域响应波形仿真。图12为整个按键消抖电路的按键闭合和按键断开瞬间的实测时域响应波形。图13为一次按键按下实测完整波形。图14为最终的按键消抖电路。由图12可见,按键闭合时没有过冲,按键断开时上升时间小于0.5ms。由图13可见,在按键按下和松开之间的过程中,抖动已被消除,而且完全不影响按键电路的正常功能。
图11消抖电路按键闭合和断开瞬间的时域响应波形仿真
图12消抖电路按键闭合和断开瞬间实测时域响应波形
图13一次按键按下实测完整波形
5结语
本文分析了软件消抖电路中存在的不足,指出了软件消抖存在输出信号下冲电平超出后续数字芯片输入电平范围容易危害数字芯片,提出了按键闭合时信号下降速度过快易引起容性串扰。针对软件消抖电路的不足,本文分析了硬件消抖电路,建立了数学模型,仿真并实测了按键消抖电路的时域响应。针对硬件消抖电路中仅使用滤波电容消除按键抖动的方法,通过仿真和实测阐述了该方法反而会导致下冲持续时间更长,对后续电路危害性大。
图14按键消抖电路图
针对该问题,本文分析计算了在按键导线中串接电阻以消除下冲,仿真并实测了整个硬件消抖电路的瞬时响应,实测了硬件消抖电路按键按下和释放整个过程的时域波形,消除了按键抖动和下冲。