电容触摸按键应该如何正确使用?
电容触摸按键是一种通过检测电容变化来感应触摸动作的输入设备,其原理基于人体手指与电极之间的电容效应,当手指靠近或接触电极时,会引起电容值的变化,从而触发相应的电路响应,以下是详细的使用方法和步骤:
一、电容触摸按键的原理
电容触摸按键的工作原理主要依赖于RC充放电电路,在没有手指触摸时,电路中只有一个杂散电容Cs,其充放电时间固定,当手指触摸到电极时,手指与地会形成一个附加的电容Cx,这个电容与Cs并联,使得总电容值增大,导致充电时间延长,系统通过检测充电时间的长短来判断是否有触摸动作。
二、硬件设计
1、PCB布局:在PCB上设计一个圆形或六角形的铜箔作为按键区域,中间引出一根导线连接到MCU(微控制单元),外围的铜箔与GND相连,以减少噪声干扰。
2、外接元件:在按键感应盘周围铺上接地的覆铜,推荐采用50%70%的网格覆铜,以提高抗干扰能力。
3、走线设计:感应盘到触摸芯片的连线应尽量短和细,避免跨越其他信号线,尤其是强干扰、高频的信号线。
三、程序设计
以下是电容触摸按键的程序设计思路和关键函数:
1. 初始化函数
u8 TPAD_Init(u8 psc) { u16 buf[10]; u16 temp; u8 j, i; TIM5_CH2_Cap_Init(TPAD_ARR_MAX_VAL, psc 1); // 以1MHz的频率计数 for (i = 0; i < 10; i++) { // 连续读取10次 buf[i] = TPAD_Get_Val(); // 得到定时器捕获值 delay_ms(10); // 等待放电结束 } for (i = 0; i < 9; i++) { // 排序 for (j = i + 1; j < 10; j++) { if (buf[i] > buf[j]) { temp = buf[i]; buf[i] = buf[j]; buf[j] = temp; } } } temp = 0; for (i = 2; i < 8; i++) temp += buf[i]; // 取中间的6个数据进行平均 tpad_default_val = temp / 6; printf("tpad_default_val:%d\r ", tpad_default_val); if (tpad_default_val > TPAD_ARR_MAX_VAL / 2) return 1; // 初始化遇到超过最大值的一半,不正常! return 0; }
2. 获取一次捕获值函数
u16 TPAD_Get_Val() { TPAD_Reset(); // 计数器归零 while (TIM_GetFlagStatus(TIM5, TIM_IT_CC2) == RESET) { // 等待捕获上升沿 if (TIM_GetCounter(TIM5) > TPAD_ARR_MAX_VAL 500) return TIM_GetCounter(TIM5); // 超时了直接返回计数器的值 }; return TIM_GetCapture2(TIM5); // 返回捕获值 }
3. 获取多次充电中的最大值函数
u16 TPAD_Get_MaxVal(u8 n) { u16 temp = 0; u16 res = 0; while (n) { temp = TPAD_Get_Val(); // 得到一次值 if (temp > res) res = temp; }; return res; }
4. 扫描触摸按键函数
u8 TPAD_Scan(u8 mode) { static u8 keyen = 0; // 0表示可以开始检测;非0表示还不能开始检测 u8 res = 0; u8 sample = 3; // 默认采样次数为3次 u16 rval; if (mode) { // 如果支持连续触发模式 sample = 6; // 设置采样次数为6次 keyen = 0; // 支持连按 } rval = TPAD_Get_MaxVal(sample); // 返回sample次读数中的最大值 if (rval > (tpad_default_val + TPAD_GATE_VAL)) { // 如果充电时长大于默认值加门限值,认为有触摸 if (keyen == 0) res = 1; // keyen==0支持连按,直接返回按键有效的变量res printf("r:%d\r ", rval); keyen = 3; // 未松手(按键一直被按下):keyen的值会在keyen初始值和keyen1之间循环 } if (keyen) keyen; // 松手之后: keyen递减,直到再次为0才能重新检测按键有效 return res; // 返回按键状态 }
四、常见问题及解决方法
1、误触问题:可以通过调整TPAD_GATE_VAL的值来增加触摸灵敏度,如果误触频繁,可以尝试增大TPAD_GATE_VAL的值。
2、灵敏度调节:灵敏度与外接的CIN电容大小成反比,与面板厚度成反比,与按键感应盘的大小成正比,CIN电容选择5PF至20PF之间。
3、抗干扰:在PCB设计时,感应盘到触摸芯片的连线要尽量短和细,避免跨越其他信号线,感应盘周围应铺上接地的覆铜,以降低噪声和外部环境的影响。
电容触摸按键作为一种现代电子技术,广泛应用于各种智能设备中,其工作原理简单但高效,通过检测电容变化来判断触摸动作,设计和实现电容触摸按键需要综合考虑硬件设计和软件编程,以确保其稳定性和可靠性。
作者:豆面本文地址:https://www.jerry.net.cn/articals/11292.html发布于 2025-01-05 04:28:27
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司