与传统的机械式按键相比,电容式触摸感应按键不仅美观而且耐用、寿命长,它颠覆了传统意义上的机械按键控制,只要轻轻碰触,就可以实现对按键的开关控制、量化调节甚至方向控制,现在电容式触摸感应按键己广泛用于手机、DVD、洗衣机等消费类产品中。本文从硬件方面讲述MSP30系列徽控制器实现电容式触摸感应按键的设计原理。
工作原理首先我们了解一下影响电容的主要几个参数,示意图如下图所示。
其中:两极板面积A=XxY,d为两平行板间的距离,&epSILon;0为空气中的电介质常数,εr为两电极板材料的电介质常数。
根据电容的电场形态和电容两极板间的关系,当电容的两极板平行时,电场被完全控制在两极板之间;当将两个电极板向相反方向弯曲,且弯曲到两个电极板完全平躺时,电场就显着向外透射开来,如下图所示。
电容式触摸感应的“按键”实际只是PCB上的一小块“覆铜焊盘”,如下图所示,
PCB板上中心的“覆钢焊盘”与四周“地信号”构成一个电容(感应电容),当手指触摸到PCB“覆铜焊盘”部分时,手指将会影响电容的电场,相当于在两个电容极板间增加了一部分介质,使电容值增大)电容式触摸感应按键原理即通过检测这个电容值的变化达到识别有无手指按下的目的。
触摸感应电容按键的焊盘大小通常选用φl0mm,与手指触摸时的接触面积相近,当没有手指触摸时,焊盘和地信号产生约5~1OpF的电容值,我们称之为“基准电容”,需要注意的一点是,如果手指触摸面积大于按键焊盘的面积时,那么在焊盘区域之外的接触部分对电容值的变化基本不起作用。
无触摸时的“基准电容”值设为Co,手指触摸后的电容值设为Cs,设计时应遵循一条原则:尽量将Cs-Co的差值最大化,即尽量增加“触摸”与“非触摸”丙种状态时焊盘的电容变化值。只有当焊盘面积增加后才能使接触后的电容值增大,同时“基准电容”也会相应增大,两者始终存在矛盾,所以具体设计时要选取一个适中点,作为基准。
硬件设计本文采用外接电阻对焊盘的感应电容进行充、放电,同时结合MCU的I/0口中断和定时器来检测感应电容的瞬时变化,达到检测有无手指按下的目的。
1.单个按键检测原理
单个按键电阻检测原理框图及感应电容的放电波形如下图所示,
感应电容Csensor一端接到MCU任意一个具有中断功能的I/0IIPxy,本文Csensor“基准电容”取1OpF,由于需严格测量Csensor通过R的放电时间,所以应将R电阻值取足够大,此处选5.1M,确保任意情况下均可测量电容放电时间,图4中Csensor从VCC放电到OV的时间约为250μs。
当Pxy设为输出高电平时,Csensor开始充电,充电到设定的时间后,将Pxy设为输入状态,此时Csensor则通过电阻R放电,因MSP430管脚漏电流值很小,仅50nA,故不会影响电容放电时间的测量。
本文的Pxy端口需要选择具有中断功能的I/0口,在MSP430系列MCU中P1和P2口均具有中断功能,将Pxy口的低电压阈值作为中断信号。当Csensor开始放电时,启动Timer_A定时器从Tstar开始计时,当Csensor放电电压达到该I/0口的低电压阈值时,Pxy产生中断信号,在I/0口中断程序中Timer-A定时器捕获电容放电结束时间Tend,(Tend-Tstar)即为Csensor的放电时间。
MCU内部DCO时钟模块作为系统时钟源,可根据不同型号选用8MHz或16MHz晶振,系统时钟越高时,定时器检测感应电容变化时的计数值越多,则判断按键的精度越高。系统将没有手指触摸时“基准电容”的平均放电时间作为放电参考时间Tsensor,MCU工作时不断检测Csensor放电时间T,并于Tsensor进行比较,若T>Tsensor,说明感应电容容量增加,即感应电容按键有手指接下,Timer-A定时器检测流程图如图a所示。
图b为Csensor放电电压与时间和Timer-A模块计时的曲线图,其中TAR即为Timer_A模块捕捉的放电时间Tsensor值,当Csensor开始放电和达到低电压阈值时唤醒MCU,进行中断处理,其它放电过程中MCU均处于LPMO低功耗模式。
2.连续按键检测原理
多个感应电容触摸按键的结构框图如下图所示,
与单个按键检测原理相似,感应电容连接到MCU的I/0口,不同的是电路优化为每两个感应电容之间连接一个放电电阻,通过两个I/0口软件配合完成充、放电检测。
检测多个按键时,系统上电后对每个按键焊盘进行多次预充、放电,把两次充、放电时间的平均值作为初始电容值,比较各个按键焊盘的初始电容值后设定一个阈值,然后以该阈值作为基准,当在程序执行中检测到某个按键焊盘的电容值大于该阈值,而且又是各个按键焊盘值中最大值时,表示此按键焊盘被按下。
以两个电容触摸按键为例,如下图所示,
具体充、放电的过程为:从左边的按键焊盘开始,先将P2.0设置为输出高电平,P1.0设置为输出低电平,此时对左边的按键焊盘进行充电,延时一段时间,充电完成,然后将P2.0设置为输入状态,同时设置为下降沿触发并使能中断,此时左边的按键焊盘通过电阻开始放电)进入中断时,记录放电时间,退出中断后将两个I/0口都输出低。对右边按键焊盘进行充电时,先将P1.0设置为输出高电平,延时一段时间后,将P2.0设置成输入状态,同时设置为上升沿触发并中断使能,此时P1.0口输出的高电平,通过电阻对该按键焊盘进行充电,进入中断时,记录充电的时间,最后将充电时间与放电时间取平均值作为改按键焊盘的一个初始阈值。
多个感应电容触摸按键一方面节省了大量的放电电阻,另一方面因采用两个I/0口互相配合,所以检测时可以通过从两个方向进行检测:(1)感应电容从OV充电到Vit+(I/0口高电平阈值电压)时的充电时间值;(2)感应电容从VCC放电到Vit-(I/0口低电平阈值电压)时的放电时间值)Timer_A分别捕捉相应的时间值,原理如下图所示。
只要系统采用统一算法,最终检测结果可以是两个方向Timer_A时间值相加或取平均值,不影响感应电容按键的检测,同时,从两个方向进行充、放电检测时,可以更好抵消如外界50/60Hz主频率的噪声。
3.系统功耗分析
利用MSP430设计的电容式触摸感应按键系统的平均功耗是非常低的,如下图所示,
分别以1MHz、8MHz、12MHz和16MHz四个充放电计数频率为例。
系统选5.1MHz作为充、放电电阻时,单个感应电容的充、放电检测时间一般为毫秒级,同时用于检测充、放电时间的频率越高,Timer_A定时器模块用于检测电容充、放电时间变化值
At越大,上图中,系统频率为1MHz频率时,计数值△t仅为1,不运用子多按键检测;当频率为16MHz时,计数值△t则增大到8左右,这样更能灵敏的感应出有无按键的临界状态。
4.Demo板及PCB板的设计四个感应电容按键Demo板原理图如上图所示,
MCU选用MSP430x2Oxx系列。
触摸按键感应的灵敏度主要由按键焊盘和地信号之间的间隙决定,设计中常采用0.5mm的间距;同时,PCB板的厚度也会影响电容感应的灵敏度,当PCB板太薄,比如使用柔性PCB板时,则使得地信号和按键焊盘耦合性变得更紧密,导致按键灵敏度降低,一般推荐标准的FR4PCB板,厚度大约为1~l.5mm。
通常我们在触摸按键焊盘的背面覆盖一层地信号,这样做有利于屏蔽和减小系统中其它电路对按键产生的电磁干扰,也有利于保持“基准电容”的稳定性,同时“基准电容"会受PCB板上一些寄生电容影响,当然还受环境影响,如工作温度、湿度等,工作时系统须不断检测和跟踪“基准电容”信号的变化,提高检测的可靠性和灵敏性。