本发明涉及触摸开关技术领域,尤其是一种触摸按键检测方法。
背景技术:
随着物联网技术的不断发展,传统电子设备越来越重视人机交互方式的革新,老式的机械开关逐渐被触摸式开关所替代,智能门锁、智能灯具等物联网设备已经将触摸按键作为主要的交互方式。
触摸按键根据物理学原理可分为电容式、电阻式、红外线感应式、声波式等等。其中电容式触摸按键应用范围广,由于其没有任何机械部件,不会产生磨损,因此寿命长,维护成本低。电容式触摸按键基本结构包含主控芯片、pcb(印制电路板)按键及外壳覆盖材料如玻璃、亚克力板等。出于成本考虑,通常在物联网设备中尚未采用较先进的贴合工艺,而是普遍采用胶水粘合方式将pcb按键与外壳覆盖材料相连接,因此按键在使用时间过长、遭受物理碰撞、进水等情况后容易出现按键与覆盖材料接触不良的情况,这会导致触摸按键失灵,影响设备正常功能。
电容式触摸按键发生接触不良,表现为按键电容值突然下降又恢复正常,这是由于覆盖材料本身具有一定的电容值,当其与pcb按键脱离时检测到电容下降,当其恢复后检测到电容上升,为避免出现接触不良而导致按键失效,需要一种触摸按键检测方法以适应该种噪声环境。
目前电容式按键检测可分为静态阈值判别方式和动态阈值判别方式。静态阈值判别方式即确定一个固定阈值,当传感器检测到电容高于该阈值后即认为触摸生效,这种判别方式简单,同时接触不良不会产生干扰,因为接触不良产生的是电容先下降,再上升,不会超过固定阈值,但静态阈值判别方式忽略了环境变化对电容的影响,例如温度、湿度等,当温湿度变化的情况下会出现不识别或误识别的现象。动态阈值判别方式需要依照算法,根据传感器采集到的电容值得到基线值,基线值是动态变化的,在基线值基础上设定相对阈值,因此该相对阈值也是动态变化的,采用动态阈值判别方式可以使触摸按键有效适应缓慢的环境变化,如温度、湿度在不同地区、不同季节的变化,而不受影响。但接触不良对动态阈值判别会产生影响,导致按键失效。
技术实现要素:
本发明的目的在于克服现有技术中存在的不足,提供一种触摸按键检测方法,针对触摸按键与覆盖材料接触不良的情况,实现动态阈值判别方式的触摸按键检测功能。本发明采用的技术方案是:
一种触摸按键检测方法,包括以下步骤:
步骤s10,进行初始化:包括设置按键灵敏度;设定基线值的初始值;根据灵敏度设置触摸阈值、噪声阈值,灵敏度越高,触摸阈值和噪声阈值越高,应满足触摸阈值>噪声阈值;
步骤s20,初始化结束后,读取传感器采集到的电容值;
步骤s30,判断采集到的电容值是否超过基线值+触摸阈值,若否则进入步骤s40,若是则判定为触摸;
步骤s40,判断电容值是否超过基线值+噪声阈值,若是则返回步骤s20进行下一次检测,若否进入步骤s50;
步骤s50,判断电容值是否低于基线值-1/n噪声阈值,若是则返回步骤s20进行下一次检测,若否则进入步骤s60;
步骤s60,根据水桶算法更新基线值;更新基线值后开启下一次检测。
进一步地,步骤s10中,基线值的初始值设定方法如下:按键没有触摸时采集多次传感器采集到的电容值,取最后一次采集到的电容值作为基线值的初始值。
进一步地,步骤s50中,n取3~4。
进一步地,步骤s60中,水桶算法具体包括:当本次传感器检测到的电容值低于当前基线值,那么基线值变更为本次传感器检测到的电容值;当本次传感器检测到的电容值高于当前基线值,那么计数器加1;如果计数器达到相应阈值,那么基线值增加一个单位值。
更进一步地,单位值是按键触摸时电容值的2‰~5‰。
本发明的优点:本发明实现了当出现触摸按键电容突然下降,又恢复正常的情况下,触摸按键检测功能;解决了pcb按键与覆盖材料接触不良情况下的触摸按键动态阈值检测问题。
附图说明
图1为本发明的检测方法流程图。
图2为本发明的初始化流程图。
图3为本发明的触摸按键检测中各参数变化示意图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
本发明提出的一种触摸按键检测方法,包括:
步骤s10,进行初始化:包括设置按键灵敏度;设定基线值的初始值;根据灵敏度设置触摸阈值、噪声阈值,灵敏度越高,触摸阈值和噪声阈值越高,应满足触摸阈值>噪声阈值;
本步骤包括三个子步骤,如图2所示,第一个子步骤是设置按键灵敏度;灵敏度设置为1~20中的一个整数,灵敏度反映了采用不同覆盖材料覆盖pcb按键情况下手指触摸后的电容变化,越厚的覆盖材料需要设置越低的灵敏度,同时灵敏度设置还和覆盖材料本身介电常数有关,例如玻璃的介电常数高于亚克力板的介电常数,因此选用玻璃材料作为覆盖材料,需要设置更高的灵敏度;
第二个子步骤是设定基线值的初始值,基线值的初始值设定方法如下:按键没有触摸时采集一定次数传感器采集到的电容值,取最后一次采集到的电容值作为基线值的初始值,目的是为了避免传感器刚刚工作采集到的数据异常,导致触摸按键检测失效;
第三个子步骤是根据灵敏度设置触摸阈值、噪声阈值,灵敏度越高,触摸阈值和噪声阈值越高,应满足触摸阈值>噪声阈值;
步骤s20,初始化结束后,读取传感器采集到的电容值;
通常通过传感器采集电容值;
步骤s30,判断采集到的电容值是否超过基线值+触摸阈值,若否则进入步骤s40,若是则判定为触摸;
如果有手指触摸了按键,那么电容值增加,此时检测到的电容值会超过基线值+触摸阈值,即判定为触摸,如果没有手指触摸按键,那么电容值不会增加,此时检测到的电容值不会超过基线值+触摸阈值,进入下一步s40;
步骤s40,判断电容值是否超过基线值+噪声阈值,若是则返回步骤s20进行下一次检测,若否进入步骤s50;
当外界环境存在干扰时,例如电磁干扰、电压波动、快速温湿度变化时,会导致触摸按键传感器检测到的电容波动,这种波动如果超过了噪声阈值范围,即传感器检测到的电容值超过了基线值+噪声阈值,可以认为数据异常,忽略本次数据,开启下一次检测;否则,进入下一步s50;
步骤s50,判断电容值是否低于基线值-1/n噪声阈值,若是则返回步骤s20进行下一次检测,若否则进入步骤s60;
n通常取3~4,本例中取4;如果存在pcb按键与覆盖材料接触不良的情况,那么电容会突然下降,再恢复正常,因此当传感器检测到的电容值低于基线值-1/4噪声阈值,可以认为发生了接触不良的情况,忽略本次数据,开启下一次检测。否则,进入下一步s60;
步骤s60,根据水桶算法更新基线值;更新基线值后开启下一次检测;
水桶算法是指:当本次传感器检测到的电容值低于当前基线值,那么基线值变更为本次传感器检测到的电容值;当本次传感器检测到的电容值高于当前基线值,那么计数器加1;如果计数器达到相应阈值,那么基线值增加一个单位值;一个单位值可以是按键触摸时电容值的2‰~5‰;
图3中,a线代表基线值+触摸阈值,b线代表基线值+噪声阈值,c线代表传感器实时检测到的电容值,d线代表基线值,e线代表基线值-1/4噪声阈值;
检测开始时,没有手指触摸,此时c线表示的传感器检测到的电容值不满足方案中的三个判断,因此依据水桶算法更新基线(d线);
根据图1中的判断逻辑,检测到的电容值只有在基线值-1/4噪声阈值与基线值+噪声阈值之间范围内,才会依据水桶算法更新基线值d;
当手指按下后,传感器检测到的电容值(c线)突然上升,表示电容增大,并超过了基线值+触摸阈值(a线),满足方案中第一个判断条件,此时判定为触摸生效,基线不更新;
当手指松开后,传感器检测到的电容值(c线)恢复正常,基线(d线)继续更新;
经过一段时间,通过移动覆盖材料模拟接触不良的情况,可以看到传感器检测到的电容值(c线)突然下降,此时满足方案中第三个判断条件,因此基线(d线)未更新,避免了动态阈值波动,保证了接触不良情况下不会发生按键检测失效。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。