第15章 电容触摸按键实验

合集下载

电容触摸按键报告

电容触摸按键报告

电容触摸按键报告摘要本报告旨在介绍电容触摸按键的原理、应用领域、优势以及市场前景。

通过对电容触摸按键的研究,我们可以更好地理解这一技术的工作原理和优势,并在相应的应用领域中发挥其最大的潜力。

引言随着科技的不断发展,触摸技术已经成为了电子设备领域的重要组成部分。

电容触摸按键技术作为触摸技术的一种,以其高灵敏度、良好的响应速度和无需机械按键等特点,逐渐受到市场的广泛关注。

本报告将重点介绍电容触摸按键的原理、应用领域、优势以及市场前景。

一、电容触摸按键的工作原理电容触摸按键的工作原理是基于电容传感技术。

在触摸按键上方的感应区域,布置有一组导电材料(例如金属电极)形成一个电容结构。

当人的手指接触到触摸按键时,会产生电容变化。

触摸按键芯片通过检测电容的变化来判断用户是否触摸了按键,从而实现按键的触摸检测功能。

二、电容触摸按键的应用领域电容触摸按键由于其优越的技术特点,在许多领域得到了广泛应用。

以下是几个主要的应用领域:1. 智能手机和平板电脑智能手机和平板电脑作为目前最为普及的电子设备之一,电容触摸按键的应用正越来越广泛。

这些设备通常会使用电容触摸按键来替代机械按键,提供简洁、方便的操作体验。

2. 家电控制面板电容触摸按键具有触摸灵敏、易于清洁的特点,因此在家电控制面板上得到了广泛的应用。

用户可以通过触摸控制面板来轻松地控制家电的开关、模式选择等功能。

3. 汽车内部控制电容触摸按键在汽车内部控制系统中也得到了广泛的应用。

例如,驾驶员可以通过触摸按键来控制空调、音频设备、导航系统等,提供更便捷的操作体验。

4. 工控设备在工业领域中,电容触摸按键的应用也非常常见。

工控设备通常需要耐用性和可靠性,电容触摸按键的无机械运动结构满足了这一需求。

此外,电容触摸按键可以提供更好的密封性能,以避免灰尘和液体进入设备。

三、电容触摸按键的优势相比传统的机械按键,电容触摸按键具有以下几个明显的优势:1.灵敏度高:电容触摸按键可以通过检测微小的电容变化来感知用户的触摸操作,具有非常高的灵敏度。

一种简单的电容式触摸按键实现方法

一种简单的电容式触摸按键实现方法

一种简单的电容式触摸按键实现方法柴智,贾卫华(厦门芯阳科技股份有限公司)摘要:本文介绍了一种基于检测电容充电时间长度的触摸按键实现方法。

该方法通过采用触摸时产生的电容影响充电电量的方法改变了对充电电流的依赖。

通过将充电过程直接与计数周期结合的方法,降低了对计数频率稳定性的要求。

该方法结构简单,设计方便,调整灵活,适合替代各种常规按键使用。

关键字:触摸按键;充电电量;降低依赖A Simple Realization Method of Capacitive Touch KeyCHAI Zhi,JIA Wei-hua(Xiamen CHISPUN Science and Technology Co.,Ltd.)Abstract:This paper introduces a touch button implementation method based on detecting the charging time of ca-pacitor.This method changes the dependence on the charging current by using the method that the capacitance gen-erated when touching affects the charging quantity.By combining the charging process with counting period directly, the requirement of counting frequency stability is reduced.The method has the advantages of simple structure,conve-nient design,flexible adjustment and is suitable for replacing various conventional buttons.Key words:Touch key;Charging capacity;Reduce dependence引言随着电子产品的交互体验的更新迭代,电容触摸按键正扮演着重要的角色,尤其是在家用电器领域,诸如遥控器、开关、电磁炉、电饭锅、洗衣机等电器设备。

电容触摸按键的原理

电容触摸按键的原理

电容触摸按键的原理
电容触摸按键是一种利用电容效应实现的触摸感应技术。

它使用电容传感器来检测被触摸物体的电容变化,从而实现按键的触摸和操作。

电容触摸按键的原理是基于电容效应。

在一个电容触摸按键系统中,包含一个电容传感器和一个被触摸的物体(通常是触摸屏幕或触摸按键)。

当没有触摸时,该系统的电容值是固定的。

然而,当有物体靠近或触摸时,物体的电容会改变整个系统的总电容。

电容值的改变是通过测量电容传感器电极之间的电容变化来实现的。

电容传感器通常由两个电极组成,分别称为发射电极和接收电极。

它们之间通过绝缘介质隔开,形成一个电容。

当没有物体接近或触摸时,电容的值相对稳定。

然而,当有物体接近或触摸时,物体的电容会与传感器的电容相互作用,从而改变整个系统的总电容。

通过测量电容传感器两个电极之间的电容变化,电容触摸按键系统可以确定是否有物体接近或触摸。

当电容值超过设定的阈值时,系统会检测到触摸操作,并触发相应的反应。

这可以实现按键的触摸和操作,例如在触摸屏幕上进行滑动、点击或拖动。

总之,电容触摸按键利用电容效应来检测物体的电容变化,以实现按键的触摸和操作。

它是一种灵敏且可靠的触摸感应技术,在许多电子设备中广泛应用。

电容式触摸感应按键技术原理及应用

电容式触摸感应按键技术原理及应用

电容式触摸感应按键技术原理及应用电容式触摸感应按键技术原理及应用2010-05-26 12:45:02| 分类:维修| 标签:|字号大中小订阅市场上的消费电子产品已经开始逐步采用触摸感应按键,以取代传统的机械式按键。

针对此趋势,Silicon Labs公司推出了内置微控制器(MCU)功能的电容式触摸感应按键(Capacitive Touch Sense)方案。

电容式触摸感应按键开关,内部是一个以电容器为基础的开关。

以传导性物体(例如手指)触摸电容器可改变电容,此改变会被內置于微控制器内的电路所侦测。

电容式触摸感应按键的基本原理◆Silicon Labs 现提供一种可侦测因触摸而改变的电容的方法电容式触摸感应按键的基本原理就是一个不断地充电和放电的张弛振荡器。

如果不触摸开关,张弛振荡器有一个固定的充电放电周期,频率是可以测量的。

如果我们用手指或者触摸笔接触开关,就会增加电容器的介电常数,充电放电周期就变长,频率就会相应减少。

所以,我们测量周期的变化,就可以侦测触摸动作。

具体测量的方式有二种:(一)可以测量频率,计算固定时间内张弛振荡器的周期数。

如果在固定时间内测到的周期数较原先校准的为少,则此开关便被视作为被按压。

(二)也可以测量周期,即在固定次数的张弛周期间计算系统时钟周期的总数。

如果开关被按压,则张弛振荡器的频率会减少,则在相同次数周期会测量到更多的系统时钟周期。

Silicon Labs推出的C8051F9xx微控制器(MCU)系列,可通过使用芯片上比较器和定时器实现触摸感应按键功能,连接最多23个感应按键。

而且无须外部器件,通过PCB走线/开关作为电容部分,由内部触摸感应按键电路进行测量以得知电容值的变化。

◆以Silicon Labs的MCU实现触摸感应按键利用Silicon Labs其它MCU系列,仅需搭配无源器件,即可实现电容式触摸感应按键方案。

与C8051F93x-F92x方案相比,唯一所需的外部器件是(3+N)电阻器,其中N是开关的数目,以及3个提供反馈的额外端口接点。

单片机 电容触摸按键 报告

单片机 电容触摸按键 报告

任务:MSP-EXP430G2 板上P1.0 上接了一个LED,而在配套的LaunchPad 扩展板上,将MSP430G2553 的P2.0 和P2.5 引出作为电容触摸按键。

要求按下P2.0 后LED 亮,按下P2.5 后LED 灭,程序运行过程中不阻塞CPU,并且实现低功耗运行。

硬件连接:如图所示程序代码:TouchIN.c:#include "MSP430G2553.h"#define KEY_NUM 2 /*触摸按键数目,根据需要修改*/ //=============具体触摸按键IO宏定义,根据需要添加代码===============#define KEY0_INIT P2DIR &= ~BIT0; P2SEL &= ~ BIT0; P2SEL2 |= BIT0 /*按键1开启振荡*/ #define KEY1_INIT P2DIR &= ~BIT5; P2SEL &= ~ BIT5; P2SEL2 |= BIT5 /*按键2开启振荡*/ #define ALL_OSC_OFF P2SEL2 &= ~(BIT0 + BIT5) /*关闭全部触摸振荡*/ /*门限频率的取值取决于定时扫描的时长,3300对应的是1.9ms定时情况,实际定时可取1ms~20ms*/const unsigned int FREQ_THRESHOLD[KEY_NUM]={3300,3300}; /*参考值,需用仿真器查看后调整*///-----静态局部变量----static unsigned int Freq[KEY_NUM]={0}; //当前测频值static unsigned char Key_Buff[KEY_NUM][4]={0}; // 软件FIFOstatic unsigned char Key_Num=0; //按键编号//-----全局变量,复杂程序中可以移植到Global.h统一管理-----unsigned char TouchIN=0; //相当于PxIN寄存器作用,支持8个触摸按键void Key_Measure_Freq(){Freq[Key_Num]=TAR; //当前编号按键的频率被测得ALL_OSC_OFF; //关闭所有振荡IOKey_Num++; //切换下一振荡IOif (Key_Num>=KEY_NUM) Key_Num=0; //各触摸按键循环交替switch (Key_Num){case 0 : KEY0_INIT; break; //振荡IO初始化case 1 : KEY1_INIT; break;default: break;}TA0CTL = TASSEL_3+MC_2+TACLR; //增计数清0,并开始计数}void Key_FIFO() //存储连续4次测量数据{Key_Buff[Key_Num][0]=Key_Buff[Key_Num][1];Key_Buff[Key_Num][1]=Key_Buff[Key_Num][2];Key_Buff[Key_Num][2]=Key_Buff[Key_Num][3];if( Freq[Key_Num]<FREQ_THRESHOLD[Key_Num]) //判断是否识别为按键Key_Buff[Key_Num][3]=1;elseKey_Buff[Key_Num][3]=0;}void Key_Judge() //按键仲裁,只有连续4次测量结果一致,才算数{if( (Key_Buff[Key_Num][0]==0)&&(Key_Buff[Key_Num][1]==0)&&(Key_Buff[Key_Num][2]==0)&&(Key_Buff[Key_Num][3]==0) )// TouchIN=0<<Key_Num; //按键松开(错误代码)TouchIN &=~(1<<Key_Num); //按键松开(正确代码)if( (Key_Buff[Key_Num][0]==1)&&(Key_Buff[Key_Num][1]==1)&&(Key_Buff[Key_Num][2]==1)&&(Key_Buff[Key_Num][3]==1) )// TouchIN =1<<Key_Num; //按键按下(错误代码)TouchIN |=1<<Key_Num; //按键按下}void TouchIN_Dect() //触摸输入检测{Key_Measure_Freq(); //测频Key_FIFO(); //软件FIFO缓存最近4次测量数据Key_Judge(); //仲裁按键是否按下或松开}TouchIN.h:/***** TouchIN.h******/#ifndef TOUCHIN_H_#define TOUCHIN_H_extern void TouchIN_Dect() ; //WDT中断事件extern unsigned char TouchIN; // 相当于PxIN寄存器作用,支持8个触摸按键#endif /* TOUCHIN_H_ */main.c:#include "MSP430G2553.h"#include "TouchIN.h" /*触摸按键检测库函数*/void WDT_Ontime(void);//-----对硬件相关代码进行宏定义处理-----#define LED_ON P1OUT |= BIT0 /*宏定义LED所在IO*/#define LED_OFF P1OUT &= ~BIT0 /*宏定义LED所在IO*/void main(void) {WDTCTL = WDTPW+WDTHOLD; //关狗//-----初始化GPIO-----P1DIR |= BIT0; //LED所连IO口P1.0设为输出P1OUT &= ~BIT0;//-----初始化WDT定时中断为16ms-----WDTCTL = WDT_ADLY_16; // “超级”宏定义IE1 |= WDTIE; //使能WDT中断_EINT(); // 使能总中断__bis_SR_register(LPM3_bits); //等同LPM3}#pragma vector=WDT_VECTOR // Watch dog Timer interrupt service routine__interrupt void WDT_ISR(void){WDT_Ontime();}void WDT_Ontime(void){ //-----首先必须定时扫描触摸按键检测函数-----TouchIN_Dect();if(TouchIN & BIT0) LED_ON;if(TouchIN & BIT1) LED_OFF;}调试情况:第一次调试:TouchIN_Dect函数重复定义第二次调试:正常调试结果:按下P2.0 后LED 亮,按下P2.5 后LED 灭,任务达成。

单片机电容触摸按键实践

单片机电容触摸按键实践

触摸按键实践(二)前一段时间,做了一个使用 HT45R35 芯片的触摸按键项目,属于是芯片自带专门应用于触摸键功能的"专用芯片".近日,再次对触摸按键进行实践----使用 AD 转换方式.这样,就不要专门功能的芯片了.同时,调试更加简单方便,也没有了许多限制.下图是一个该实践的原理图,每一个按键包含了 10P,104 电容器,一只贴片封装的双二极管, 3 个电阻.项目里使用的按键数量没有限制.完全可以根据需要来决定.但是,需要单片机具有相同数量的 AD 输入接口.(----或者使用多路模拟开关反而成本上升,电路复杂,尽量不要这么干.)不管是哪一种测量方式,都需要有一个参考量.电容量→定时/计数方式的参考值是通过检测没有触摸按键时的计数值来实时得到,而 AD 方式的参考值就是基准电压,它无需任何手段就是天然存在的.无需追求 AD 的位数,可以使用仅仅 8 位的 AD 转换就足够了.电路工作原理是: 一个由单片机输出的 PWM 信号(没有 PWM 输出的芯片可以使用一个普通 I/O ,只要能够输出满足要求的频率就可以了.)这个信号频率与 10P 电容器有关系.频率低了,10P 电容器的容抗就会增大,造成后级二极管整流的电流下降,影响速度.加大电容量是受到人手触摸电容量的限制,这个 10P 电容量必须与人手触摸电容器有一个合适的配置.尽量让人手的触摸电容量与这个 10P 电容器的容量相同是最理想的.(可以更换 10P 电容器的大小来达到.)例如:如果使用 1K 对 1K 的电阻去分压一个 1V 的电压,这是最理想的.而如果使用一个 1Ω的电阻与一个 10MΩ的电阻去分压,那么,这个分压效果就很差很差了.由此可以知道:首先是从人手的触摸电容量出发,去决定 10P 电容器的电容量,而后,是根据这些电容量去决定信号频率的高低.这就是为什么不能直接使用 50HZ 交流电频率的原因.通常,AD 转换有一个基准电压,可以使用与系统供电相同的 +5V 作为基准电压.有些芯片的 AD 还可以改变基准电压的,则可以使用 2.5V 作为基准电压,灵敏度更高一些.不管是电容量→计数器方式还是电容量→电压方式,都要有一个参考标准,前者是实时测量得到参考值,后者就有一个天然的标准参考--基准电压.这就是使用 AD 方式的好处之一!对较高频率的信号来说,10P 电容器的容抗约为 30KΩ~50KΩ左右(取决于信号频率与电容量大小),它经过双二极管 A7 构成的倍压整流之后,可以得到约 2.2~3.5V 的直流电压.这就是没有触摸按键时的输出电压.由于有 AD 基准的约束,每只按键的读数是大致固定的.以基准=5V为例,读数就是 7FH 左右.这个电压可以比较随便的在印刷板上布线,不像电容量→计数器方式的一样麻烦,这是使用 AD 方式的第二大好处!倍压整流后由一只 104 的电容器进行滤波,得到较为平滑的直流电压.这个直流电压显然可以非常方便的传送.几乎没有什么顾忌.(电容量→定时/计数方式的则不允许乱布线).这里,需要提及与 104 电容器并联的 3M 电阻,这个电阻是给电容器放电使用的,可以根据对按键的反应速度调整其大小.(具体还得看看实际使用芯片的 AD 输入端口的阻抗大小).当不用这个电阻时(=无穷大),反应速度最慢.而且,如果取值较少,电压就会上不去.----中间如果插入一个运放跟随器就好了!还要提及的是 AD 转换的速率,尽量使用较快的速率,较高的系统时钟,因为相对于机械式按键来说,处理触摸式按键是比较麻烦的,耗费的指令也多得多.现在,关键的问题就是进行触摸调试了.试着用手触摸一个按键,使用直流电压表看看它的直流输出电压是否有变化?变化多少?时间快慢?根据实际测试,在触摸着按键时,输出电压会下降到没有触摸时的 50% 以下,但是时间会达到 2~3S .此时,可以细心调整 3M 电阻或者 104 电容器的大小.一般的,如果能够在 0.25S 之内,电压下降到原来数值的 80%~90% 就差不多了.判断哪一个按键被触摸了是很容易的事情了,就看看 AD 读数吧.它是有方向的,不用理会≥参考值,仅仅看看<参考值多少就是了.根据这个"多少"界线,还可以调整触摸灵敏度呢.灵敏度太高,测量值的波动会引起按键还没有触摸就有效了,灵敏度太小,就是摸了半天也没有反应.带 AD 的单片机现在已经很多了,例如 SN8P27XXX 系列, HT46XXXX,HT45XXX 系列,都有许多带 AD 的单片机,其中, HT45R54 自带 24 路 AD ,HT46R343 自带 16 路 AD .还有 Flash 的 HT46F25* ,自带 12 路 AD 而且可以反反复复烧写/擦除,做试验是最好的了!现在市场上有许多专门供货触摸按键芯片的,也有许多技术文章,总之,各师各法,实际处理触摸按键就像电压比较器一样,不需要知道其值的具体大小,仅仅判断有"高"电平还是"低"电平就足够了.----应该属于临界判断.根据上面所说,接下来,我会使用普通单片机来实践做触摸按键.既不使用专用芯片(电容量→定时/计数),也不使用自带 AD 芯片(电容量→电压→AD 转换),就直接使用普通单片机的端口+电压比较器来做.这样是否会让电路多放置一只比较器芯片?不!就使用自带运算放大器或者自带比较器的芯片.同样简单容易.-----也可能失败啊!欢迎各位指导!正是有了许许多多的自带 AD 的单片机,因此,那种使用外挂多路模拟开关的方法就不好用了.(多路 AD 实际芯片内部就有了多路模拟开关).在盛扬半导体(上海)的中文网站上,就有使用 HT46R47 做触摸按键的示例.需要了解更多此触摸按键的其它应用信息,欢迎浏览: .下图是我的 AD 方式试验板,只有 4 个触摸键, 3 只发光管以二进制编码指示按键号码,哪一个按键被触摸了,哪一个对应发光管就点亮 0.5S 时间.使用上,似乎比专用芯片的毫不狲色!----还有待实际应用来检验.我想:既然可以处理测量 0.1℃的温度,0.1mV 的电压,那么,不可能不能处理这种"界限"式的触摸关系.使用 AD 测量的电容触摸按键电路触摸按键实践(3)电容式感应按键以其无机械磨损、寿命长、防水防污、易清洁和时尚的特点, 近几年应用领域和数量迅速增加. 因此, 结合电容感应按键的特点, 设计了一种用A/D 口搭配简单的电路实现电容感应按键的方法. 经测试, 电路的稳定性较高, 在低成本的电路中适用性较强.触摸控制技术又可分为触摸屏(Touch Screen) 技术和触摸按键(Touch Key)技术. 在触摸按键技术方面, 目前主要可分为电阻式触摸按键与电容式感应按键. 由于电阻式的触摸按键需要在设备表面贴一张触摸电阻薄膜, 其耐用性较低, 而电容感应按键技术具有在非金属操作面板上无须开孔处理、防水防污、易清洁、无机械开关磨损而寿命长等优点. 近几年随着苹果公司将电容触摸感应技术从笔记本电脑引用到iPod 后, 电容触摸感应热浪正席卷几乎所有电子产品, 从笔记本电脑、智能电话、PDA、游戏机等手持设备, 到LCD TV、 DVD 等消费电子产品, 再到洗衣机、空调、冰箱、热水器、电磁炉以及咖啡壶等大小家电, 无不以加入电容触摸感应为新的卖点.目前, 世界知名电子元件供应商均加大了对电容触摸按键的应用研究, 并推出众多的专业芯片, 有专用电容感应按键类的全ASIC, 也有众多基于MCU集成类的IC. 但这些芯片价格较高, 在一些按键数量少、成本要求低的电路中很难得到运用. 另外, 使用这些集成类 IC, 很难做到所选资源恰好等于使用的情况, 存在资源的浪费情况. 而且对于升级成熟产品的机械式按键, 还存在变更原MCU 代码的风险. 同时, 目前, 对于电容式触摸按键的介绍大多也停留在基于电容量测量的原理上. 结合电容感应按键的原理, 设计了一种用MCU 的A/D 口实现电容触摸按键的低成本电路.1 电容式感应按键原理平行板电容器具有 2 个极板, 其间隔着1 层介质, 电容器中的大部分能量直接聚集在2 个极板之间, 1 个极板电荷数量的变化将引起另外极板电荷的增减, 从而在电容内部形成电流. 电容式感应按键的原理如图1 所示, 感应按键的金属电极, 放置于非金属面板内, 并连接交变的电信号. 如果在非金属面板另一侧与金属电极对应处放置另外1 块金属板(图2), 那么, 2 个极板就组成了平行板电容器, 非金属面板成为此平行板电容器的介质. 由于电场被封闭在2 个金属极板之间, 所以大部分能量均集中在非金属面板内. 如果在非金属面板外隔着金属, 手指触摸对其能量损失的影响就很小.图1 电容感应按键示意图图2 封闭电场示意图去除外侧的金属板, 电场的能量就会穿过非金属的密集区, 向外传播(图3).图3 电容感应电极的电力线当导体靠近操作面(即非金属面板表面)后, 电磁场即在导电介质中传播. 由于导体中存在自由电子, 这些自由电子在电场作用下就会形成传导电流, 进而产生焦耳热从而引起电磁波能量损耗. 由于人体组织中充满了传导电解质(一种有损电介质), 当手指靠近时同样会引起电磁能量损耗. 因此只要检测流经感应电极的电能变化, 就可以判断是否有手指靠近非金属操作面板.2 电容感应按键取样电路分析图 4 为电容感应按键取样电路图, 电路由5 个分离元件组成. 其脉冲信号频率为300 kHz, 幅度 12 V, 占空比为50%. 通过读取电容 C1上的电压值判别是否有手指靠近操作区域. 其原理分析如下: 二极管1N4148 正向导通电压为d V , 在脉冲信号跳变为高电平(12 V)时, 假定电容 C1上电压为 U0, 电容的充电回路根据 C1电压大小出现如下2 种情况:(1) 若, 则充电回路为图5(a), 充电时间常数电容C1的充电电压:(2) 若则充电回路为图5(b), 充电时间常数电容 C1的充电电压为:在振荡脉冲跳变为低电平时, 根据电容 C1电压大小, 出现以下2 种放电回路:(1) 当0 2 d U > V 时, 放电回路为图5(c), 放电电路的其放电时的电容电压为:图4 电容感应按键取样电路(2) 当U0≤2Vd 时, 放电回路为图5(d), 放电电路的其电容电压为:.由于电路中脉冲占空比为50%, 充放电时间在该电路中, 充放电电阻大, 流过的充放电电流小, 二极管1N4148 的导通电压也较小, 若以充电电路为图5(a)、放电电路为图5(c)来计算, 充电时间常数τ = 放电时间常数= 0.1 s, 而充放电时间为假定二极管电压在微弱电流下按0.2 V 计算根据(1)式和(2)式, 运用迭代可计算出电容电压最后稳定在5.9 V, 而以上计算不考虑由手指触摸等任何情况引起的能量损耗.电容 C1充放电如图6 所示. 在实际的充放电电路中, 电路对金属极板的充放电始终在进行. 当手指靠近金属极板时, 感应电极处存在的微弱电磁场被传导至人手指内电解质中, 同时消耗了部分能量, 电容 C1补充的电荷将减少, 因此电容 C 的电压将下降(图7). 当ΔV 变化量达到最小检测精度要求时, 系统即可通过计算识别出是否有手指或其他导电物体靠近操作区.图6 电容充电时间与电压的关系图7 手指触摸时的电平变化A/D 法电容感应按键、读键流程:将电容电压引入 MCU 通用A/D 口, 即可将电容 C1上的电压值转换为数字量并通过MCU计算出电容 C1两端电压的变化大小, 从而判断出是否有手指或其他导电物体靠近或离开触摸按键, 实现电容感应按键的识别. 软件流程如图8 所示.电路参数对感应灵敏度的影响输入脉冲影响输入脉冲的幅值决定了 C1上稳态电压, 如果脉冲幅值不稳定, 就会导致 C1上的电压波动. 如果该幅值变化引起的电容电压变化量ΔV 超过了检测的最小检测精度, 即使没有手指靠近, 也会造成读键的误判, 所以脉冲电压幅度要稳定. 此外, 输入脉冲的频率同样也会影响到 C1电容的工作状态, 如果输入脉冲的频率过低, 则 C1电压纹波会加大, 感应灵敏度下降; 反之, 输入脉冲的频率过高, 则线路损耗加大, 而且触摸容易受到干扰.充放电电阻值的影响如果同时改变 R1,R2 的阻值, 例如将阻值改为 100KΩ, 充放电时间常数减少10 倍, 因虽然 C1上电压变化不大, 但此时 C1上的充放电电流却显著增强, 使得手指触摸的灵敏度下降. 所以, 电路中 R1,R2 的阻值一定要选取恰当. 二极管的影响由于上述电容式感应按键电路工作频率高, 且流经电流小, 所以应当选择结电容小、开关速度快、正向导通电压低的二极管. 另外, 二极管的工作可靠性一定要好, D1,D2任一短路、断路都会破坏充放电回路, 从而使触摸电路失效.电容感应电极的形式电容式感应按键的感应电极有很多种, 常用的感应电极有PCB 板上的电极及弹簧金属片式电极. 电极形式可以根据外观进行任意设计, 如圆形、方形、三角形等. 但无论电极以哪种形式出现其周围都应尽量远离地: PCB 双面板电极对应的另一面铜箔应当刻蚀去除, 弹簧电极周围的PCB 铜箔也要刻蚀去除. 否则, 感应电极与金属之间将形成感应电流, 削弱了手指或外界导电物靠近电极时电路的灵敏度.同时, 电极应当与非金属面板紧贴, 如果中间有空隙, 相当于增加了感应距离, 使感应灵敏度降低. 感应电极的面积和非金属面板的厚度影响了感应的灵敏度. 实际应用中, 目前厚8mm 以下的钢化玻璃, 其圆形金属感应电极直径不小于12 mm.这种用分离元件组成触摸感应按键用的低成本电路, 在按键数量不多的情况下应用, 可根据按键数量多少进行自由组合感应电极数量和最简电路数量, 充分利用资源. 同时, 对于升级原成熟产品, 仅需选择原MCU 系列中带A/D 端口的产品, 编写读取触摸按键的程序, 可以很顺利地完成程序替换. 该电路目前成功运用于油烟机、消毒柜、微波炉、蒸箱、烤箱等一系列产品上, 顺利通过 EMC 标准的测试要求, 市场质量表现稳定可靠.。

电容式触摸按键的设计与实现(软件部分)

电容式触摸按键的设计与实现(软件部分)

学校代码: 11059学号: 0805070076Hefei University毕业论文(设计 B A CH ELO R D IS S ERTATIO N论文题目:电容式触摸按键的设计与实现(软件部分学位类别:工学学士学科专业:自动化作者姓名:贾克慎导师姓名:储忠完成时间: 2012-5-24电容式触摸按键的设计与实现(软件部分中文摘要当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,在便携式媒体播放器和移动手持终端等大容量、高可视性产品的应用中,触摸式按键作为一种接口技术已被广泛采用。

由于具有方便易用,时尚和低成本的优势,越来越多的电子产品开始从传统的机械按键转向触摸式按键。

在触摸按键技术方面,目前主要可分为电阻式触摸按键与电容式感应按键。

由于电阻式的触摸按键需要在设备表面贴一张触摸电阻薄膜, 其耐用性较低;而电容感应按键技术具有在非金属操作面板上无须开孔处理、防水防污、易清洁、无机械开关磨损而寿命长等优点。

本论文通过分析电容式触摸感应技术,研究人体触摸算法,设计出基于PIC单片机的电容式触摸按键系统。

根据系统的要求完成了整体方案设计,在所设计的控制方案里对控制系统的软、硬件设计作了详细论述。

本论文主要介绍软件部分,并将系统软件分为:系统初始化模块、按键识别模块、LCD显示模块、高优先级和低优先级中断服务程序模块。

首先将各个模块进行分析研究,然后进行软硬件联合调试,最后完成该毕业设计所要求的内容。

关键词:电容式触摸感应;模块化;调试;PIC16F1937Design and implementation of capacitive touch keysAbstractNowadays,automatic control systems have been widely used and developed in Every aspect of life,the applicatio n of portable media players and mobile handsets, such as large-capacity, high-visib ility products, the touch buttons as an interface techno logy has been widely adopted. Easy to use, stylish and low-cost advantage, more and more electronic products began to shift fro m the traditio nal mechanical b uttons with to uch button.Touch-button techno logy can be divided into resistive touch butto ns and capacitive sensing buttons. Resistive touch keys touch the surface of the device is attached a resistive film, the lower its d urability; Capacitive sensing key technolo gies has a hand le on the panel o f no n-metallic operating without opening, watering pollution, easy to cleaning, non-mechanical switches wear long life advantages.In this paper, by analyzing capacitive touch sensing techno logy and studying human touch algorithm, we finish the design of capacitive touch b utton system ba sed on PIC microcontroller. According to the requirements of the system we complete the overall design of the control system,in which hardware and software design are discussed in detail. This paper mainly introduces the software part, which is divided into four modules: the system initialization module, the key recognition module, LCD display module, a high priority and low priority interrupt service routine module. First do analysis and stud y on every module. Then co mb ine hardware with so ftware and debug. Finally comp lete the g raduatio n design’s requiremen ts.KEY WORD:Capacitive touch sensing;Modular design;Debugging; PIC16F1937目录第一章前言 (11.1 系统简介 (11.2 课题的研究背景 (11.3 课题研究现状与发展趋势 (1 1.4 课题研究的内容 (21.5 本章小结 (2第二章系统设计 (32.1 设计任务 (32.1.1 电容触摸感应技术的分析 (3 2.1.2人体触摸检测算法的研究 (5 2.2 总体方案分析 (52.2.1中央处理模块 (62.2.2电源转换电路 (62.2.3信息显示模块 (62.3 系统功能结构及组成 (62.3.1 系统功能结构 (62.3.2 系统组成 (72.4 本章小结 (7第三章系统软件设计 (83.1 软件设计思想 (83.1.1按键检测思想 (83.1.2 各个显示模块设计思想 (10 3.2 主处理程序设计 (103.3 按键设计模块 (143.3.1 按键识别 (143.3.2 按键的程序框图 (153.4 显示模块程序设计 (183.4.3 LCD显示模块 (183.5 软件开发环境介绍 (193.5.1 工程文件的建立 (193.5.2 源程序的加载 (213.5.3 源程序编译、下载 (223.6 本章小结 (23第四章硬件设计 (244.1 硬件设计原则 (244.2 电容式触摸式按键的设计 (24 4.2.1 PCB常规设计 (244.2.2电极与元件的设计 (264.2.3覆盖物 (284.2.4触摸式按键的原理 (284.3 显示模块的设计 (304.4 段式液晶驱动HT1621 (304.5 本章小结 (32第五章系统测试 (33第六章总结 (37参考文献 (38致谢 (40附录A系统原理图 (41附录B 系统PCB布线图 (42附录C 实物图片 (43附录D 程序代码 (44第一章前言在便携式媒体播放器和移动手持终端等大容量、高可视性产品的应用中,触摸式按键作为一种接口技术已被广泛采用[1]。

29. 电容触摸按键实验

29. 电容触摸按键实验

容充放电公式:Vc=V0*(1-e^(-t/RC))
普中STM32开发板带您进入ARM世界
我们使用TIM5的通道2(PA1)来检测触摸按键是否按下,每次检测前 ,我们需要先将电容Cs(或 Cs+Cx)放电,即配置PA1引脚为推挽输出模 式,输出一个低电平,才能使电容放电。然后配置PA1 为浮空输入模式 ,利用外部上拉电阻给电容 Cs(Cs+Cx)充电,同时开启TIM5_CH2的输入 捕获,配置极性为上升沿,当检测到上升沿的时候,就认为电容充电完 成了,完成一次捕获检测。
普中STM32开发板带您进入ARM世界
电容触摸按键实验
普中STM32开发板带您进入ARM世界
本讲主要内容
1.电容触摸按键介绍 2.硬件电路 3.编写电容触摸按键控制程序
普中STM32开发板带您进入ARM世界
1.电容触摸按键介绍
触摸按键与传统的机械按键相比,不仅美观而且耐用、寿命长,它颠 覆了传统意义上的机械按键控制,只要轻轻触摸,就可以实现按键开关 的控制、量化调节甚至方向控制。触摸按键已广泛应用于手机、DVD、洗 衣机等消费类电子产品中。本章我们就介绍一种简单的触摸按键:电容 式触摸按键。
我们PZ6806D开发板上的电容触摸按键其实就是一小块覆铜区域,也 称之为触摸感应区。
通常我们会将四周的铜片与电路板地信号连通,触摸感应区设计成方 便手指触摸大小,并将其连接在输入捕获通道上。
普中STM32开发板带您进入ARM世界
触摸感应区与四周的铜片区域就形成了一个电容,通过检测电容充放 电时间即可判断是否有触摸。实现原理:
普中STM32开发板带您进入ቤተ መጻሕፍቲ ባይዱRM世界
普中STM32开发板带您进入ARM世界
3.编写电容触摸按键控制程序

29. 电容触摸按键实验

29. 电容触摸按键实验

普中STM32开发板带您进入ARM世界
普中STM32开发板带您进入ARM世界
3.编写电容触摸按键控制程序
本章所要实现的功能是:通过TIM5的通道2(PA1)捕获电容触摸按键 输入信号的高电平脉宽,根据捕获到高电平时间大小控制D2指示灯开关 ,同时D1指示灯不断闪烁表示系统正常运行。程序框架如下: (1)初始化PA1管脚为TIM5通道2输入捕获功能,设置上升沿捕获等 (2)读取一次捕获高电平的值 (3)电容触摸按键初始化 (4)检测电容触摸按键是否按下 (5)编写主函数
普中STM32开发板带您进入ARM世界
电容触摸按键实验
普中STM32开发板带您进入ARM世界
本讲主要内容
1.电容触摸按键介绍 2.硬件电路 3.编写电容触摸按键控制程序普Βιβλιοθήκη STM32开发板带您进入ARM世界
1.电容触摸按键介绍
触摸按键与传统的机械按键相比,不仅美观而且耐用、寿命长,它颠 覆了传统意义上的机械按键控制,只要轻轻触摸,就可以实现按键开关 的控制、量化调节甚至方向控制。触摸按键已广泛应用于手机、DVD、洗 衣机等消费类电子产品中。本章我们就介绍一种简单的触摸按键:电容 式触摸按键。
我们PZ6806D开发板上的电容触摸按键其实就是一小块覆铜区域,也 称之为触摸感应区。
通常我们会将四周的铜片与电路板地信号连通,触摸感应区设计成方 便手指触摸大小,并将其连接在输入捕获通道上。
普中STM32开发板带您进入ARM世界
触摸感应区与四周的铜片区域就形成了一个电容,通过检测电容充放 电时间即可判断是否有触摸。实现原理:
容充放电公式:Vc=V0*(1-e^(-t/RC))
普中STM32开发板带您进入ARM世界
我们使用TIM5的通道2(PA1)来检测触摸按键是否按下,每次检测前 ,我们需要先将电容Cs(或 Cs+Cx)放电,即配置PA1引脚为推挽输出模 式,输出一个低电平,才能使电容放电。然后配置PA1 为浮空输入模式 ,利用外部上拉电阻给电容 Cs(Cs+Cx)充电,同时开启TIM5_CH2的输入 捕获,配置极性为上升沿,当检测到上升沿的时候,就认为电容充电完 成了,完成一次捕获检测。

电容式触摸感应按键技术原理及应用

电容式触摸感应按键技术原理及应用

电容式触摸感应按键技术原理及应用2010-05-26 12:45:02| 分类:维修 | 标签: |字号大中小订阅市场上的消费电子产品已经开始逐步采用触摸感应按键,以取代传统的机械式按键。

针对此趋势,Silicon Labs公司推出了内置微控制器(MCU)功能的电容式触摸感应按键(Capacitive Touch Sense)方案。

电容式触摸感应按键开关,内部是一个以电容器为基础的开关。

以传导性物体(例如手指)触摸电容器可改变电容,此改变会被內置于微控制器内的电路所侦测。

电容式触摸感应按键的基本原理◆Silicon Labs 现提供一种可侦测因触摸而改变的电容的方法电容式触摸感应按键的基本原理就是一个不断地充电和放电的张弛振荡器。

如果不触摸开关,张弛振荡器有一个固定的充电放电周期,频率是可以测量的。

如果我们用手指或者触摸笔接触开关,就会增加电容器的介电常数,充电放电周期就变长,频率就会相应减少。

所以,我们测量周期的变化,就可以侦测触摸动作。

具体测量的方式有二种:(一)可以测量频率,计算固定时间内张弛振荡器的周期数。

如果在固定时间内测到的周期数较原先校准的为少,则此开关便被视作为被按压。

(二)也可以测量周期,即在固定次数的张弛周期间计算系统时钟周期的总数。

如果开关被按压,则张弛振荡器的频率会减少,则在相同次数周期会测量到更多的系统时钟周期。

Silicon Labs推出的C8051F9xx微控制器(MCU)系列,可通过使用芯片上比较器和定时器实现触摸感应按键功能,连接最多23个感应按键。

而且无须外部器件,通过PCB走线/开关作为电容部分,由内部触摸感应按键电路进行测量以得知电容值的变化。

◆以Silicon Labs的MCU实现触摸感应按键利用Silicon Labs其它MCU系列,仅需搭配无源器件,即可实现电容式触摸感应按键方案。

与C8051F93x-F92x方案相比,唯一所需的外部器件是(3+N)电阻器,其中N是开关的数目,以及3个提供反馈的额外端口接点。

电容触摸按键原理

电容触摸按键原理

电容触摸按键原理电容触摸按键是一种常见的电子产品输入方式,它利用电容的原理来实现触摸操作。

在现代智能手机、平板电脑、智能家居设备等产品中广泛应用,为用户提供了便捷的操作体验。

那么,电容触摸按键是如何实现的呢?接下来,我们将深入探讨电容触摸按键的原理。

首先,我们需要了解电容的基本原理。

电容是指两个导体之间由于存在电场而能够储存电荷的能力。

在电容触摸按键中,通常会使用一层导电材料作为触摸面,另一层导电材料作为感应面。

当用户触摸触摸面时,人体会成为一个电容器的一部分,改变了电容器的电容量,从而产生了电场变化。

其次,电容触摸按键利用电容变化来实现触摸操作的原理。

当用户触摸触摸面时,电容的变化会被传感器检测到,并转换成电信号。

这个电信号会被传输到控制电路中,控制电路会对电信号进行处理,并根据预设的触摸操作来执行相应的功能,比如触发按键、调节亮度、切换界面等。

另外,电容触摸按键的原理还涉及到电容传感器的工作原理。

电容传感器是通过测量电容的变化来检测触摸操作的一种传感器。

它通常由驱动电路和传感电路组成,驱动电路用来提供激励信号,传感电路用来检测电容的变化,并将其转换成电信号。

通过精密的信号处理和算法,电容传感器可以实现高灵敏度、高稳定性的触摸检测,从而保证了电容触摸按键的准确性和可靠性。

最后,电容触摸按键的原理还与材料选择、结构设计、信号处理等多个方面密切相关。

在材料选择方面,需要选择具有良好导电性和透明性的材料,以保证触摸面的灵敏度和透光性。

在结构设计方面,需要考虑电容传感器的布局、电路连接等因素,以确保传感器的稳定性和可靠性。

在信号处理方面,需要采用高性能的处理器和算法,以实现精准的触摸检测和快速的响应速度。

综上所述,电容触摸按键是利用电容的原理来实现触摸操作的一种技术。

它通过测量电容的变化来检测用户的触摸操作,并将其转换成电信号,从而实现了便捷的操作体验。

在未来,随着技术的不断进步,电容触摸按键将会更加智能化、灵活化,为人们的生活带来更多的便利和乐趣。

第15章 电容触摸按键实验

第15章 电容触摸按键实验

//初始化 GPIOA.1 //PA.1 输出 0,放电 //延时 5ms //归 0 //清除中断标志
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //GPIOA.1 浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
185
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); //使能 TIM5 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能 PA 时钟
//设置 GPIOA.1 为浮空输入
tpad_default_val=temp/6;
printf("tpad_default_val:%d\r\n",tpad_default_val); //初始化遇到超过 TPAD_ARR_MAX_VAL/2 的数值,不正常!
if(tpad_default_val>TPAD_ARR_MAX_VAL/2)return 1; return 0;
}
//定时器 2 通道 2 输入捕获配置
void TIM5_CH2_Cap_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM5_ICInitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

电容触摸按键实验心得体会

电容触摸按键实验心得体会

电容触摸按键实验心得体会电容触摸按键是一种基于电容触摸技术的按键设备,其原理是基于物体与电容板之间的电容变化来实现按键的检测。

在进行实验过程中,我对电容触摸按键的工作原理、实验步骤和目标有了更深入的了解,同时也获得了实际操作的经验和实验过程中的心得体会。

首先,我对电容触摸按键的工作原理进行了了解。

电容触摸按键的原理是根据电容的变化来判断按键的触摸与否。

当手指接触到电容板时,会改变电容板的电容值,通过检测电容值的变化来识别按键是否被触摸。

与传统的机械按键相比,电容触摸按键具有更高的灵敏度和可靠性。

在实验过程中,我首先准备了所需的材料,包括电容触摸按键模块、Arduino开发板和连接线等。

然后,我按照实验指导书上的步骤进行了实验。

首先,我将电容触摸按键模块连接到Arduino开发板上,然后通过编程来实现按键的检测和响应。

在编程的过程中,我学会了使用Arduino语言和相关函数,了解了电容触摸按键的工作原理。

通过实验,我进一步认识到了电容触摸按键的优点。

首先,电容触摸按键具有高灵敏度和高响应速度,可以实现更快捷、更精准的按键操作。

其次,电容触摸按键没有机械结构,不会出现按键损坏和按键失灵的问题,具有更长的使用寿命和更可靠的性能。

此外,电容触摸按键还具有较小的尺寸和较简洁的外观,更适合于一些小型化和美观性要求较高的应用场景。

在实验过程中,我还遇到了一些问题和困难。

首先,连接线的插拔不稳定导致电容触摸按键模块无法正常工作,我通过重新插拔连接线来解决这个问题。

其次,在编程的过程中,我遇到了一些语法错误和逻辑错误,导致按键无法正常检测和响应,我通过查找资料和调试程序来解决这些问题。

通过解决这些问题,我提高了自己的动手操作能力和问题解决能力。

总的来说,这次电容触摸按键实验让我对电容触摸技术有了更深入的了解,提高了我对按键设备工作原理和使用方法的认知。

同时,通过实际操作和问题解决,我提高了自己的动手能力和实验技巧。

电容型触摸按键算法

电容型触摸按键算法
Microchip 的容性触摸模拟工具的设计目的在于能够模 拟出与传感器运行时输出的的实际值相类似的结果。下 面图 1 显示了一幅空白的传感器数据图,其还没有使用 软件所提供的功能。它的初始值已设置为 7000。
图 1:
空白的传感器数据图
温漂
在设置窗口的底部是一个输入区域,其允许用户定义系 统的温漂值。该值将作为所生成的传感器数据曲线图的 斜率。例如,温漂值 “-5” 意味着每生成一个新数据, 传感器数据就会减少 5,如下面的图 2 所示。
AN1254
电容式触摸算法模拟
作者: Burke Davison Microchip Technology Inc.
引言
本应用笔记介绍如何根据一个项目的特定要求,利用 Microchip 的容性触摸模拟工具来确定传感算法。此外, 该模拟工具还可以根据系统的预测环境来确定所需算法 的复杂程度。这需要用户具备有关容性触摸传感的基础 知识以及能够对软件处理过程有一个基本的了解。有关 这两个方面的更多信息可从应用笔记 AN1101,《 电容 触摸传感简介》和 AN1103,《电容触摸传感的软件处 理》中找到。
DS01254A_CN 第 3 页
AN1254
在该例中,我们要创造由噪声引起的1%左右的总波动, 来模拟一个正常的噪声系统。为此,在 Noise 这一栏上 输入 70。
图 8:
噪声的设置值
图 11:
算法运行结果 (初始设置)
最后,该例将传导噪声设置为相对极端的情形。选择 150,其等于按下数值的 42.9%。该值采用公式 2 来计 算。
Conducted Noise(传导噪声)部分的作用效果与 Noise 部分的作用效果非常相似,只是前者仅在模拟按钮按下 时才在原始数据终值上注入随机噪声。此外,传导噪声 是唯一一种通过串扰来传播的噪声。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//根据参数初始化 TIMx
//初始化 TIM5 通道 2
u8 j,i; //以 1Mhz 的频率计数
TIM5_CH2_Cap_Init(TPAD_ARR_MAX_VAL,SystemCoreClock/1000000-1);
183
for(i=0;i<10;i++){
//连续读取 10 次
buf[i]=TPAD_Get_Val();delay_ms(10);
};
return res;
}
//扫描触摸按键
//mode:0,不支持连续触发(按下一次必须松开才能按下一次);1,支持连续触发(可以一直按)
//返回值:0,没有按下;1,有按下;
#define TPAD_GATE_VAL 80 //触摸的门限值,也就是必须大于
//tpad_default_val+TPAD_GATE_VAL,才认为是有效触摸.
图 15.2.1 TPAD 与 STM32 连接原理图 硬件设置(用跳线帽短接多功能端口的 ADC 和 TPAD 即可)好之后,下面我们开始软件设计。
15.3 软件设计
前面讲解过,触摸按键我们是通过输入捕获实现的,所以使用的库函数依然是分布在 stm32f10x_tim.c 和 stm32f10x_tim.h 中。同时我们在 HARDWARE 组下面增加了 tpad.c 和 tpad.h 文件用来存放我们的触摸按键驱动代码。
//支持连按
}
rval=TPAD_Get_MaxVal(sample);
if(rval>(tpad_default_val+TPAD_GATE_VAL))//大于
//tpad_default_val+TPAD_GATE_VAL,有效
{ rval=TPAD_Get_MaxVal(sample);
if((keyen==0)&&(rval>(tpad_default_val+TPAD_GATE_VAL)))//大于
}
//复位一次
void TPAD_Reset(void)
{
GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能 PA 时钟
//设置 GPIOA.1 为推挽使出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
//初始化 GPIOA.1
//初始化 TIM5
TIM_TimeBaseStructure.TIM_Period = arr;
//设定计数器自动重装值
TIM_TimeBaseStructure.TIM_Prescaler =psc;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
//PA1 端口配置
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//速度 50MHz
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
//tpad_default_val+TPAD_GATE_VAL,有效
{ res=1;
}
keyen=5;
//至少要再过 5 次之后才能按键有效
}else if(keyen>2)keyen=2; //如果检测到按键松开,则直接将次数将为 2,以提高响应速度
if(keyen)keyen--;
return res;
//PA1 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_ResetBits(GPIOA,GPIO_Pin_1); delay_ms(5); TIM_SetCounter(TIM5,0); TIM_ClearITPendingBit(TIM5, TIM_IT_CC2|TIM_IT_Update);
第十五章 电容触摸按键实验
上一章,我们介绍了 STM32 的输入捕获功能及其使用。这一章,我们将向大家介绍如何 通过输入捕获功能,来做一个电容触摸按键。在本章中,我们将用 TIM5 的通道 2(PA1)来做 输入捕获,并实现一个简单的电容触摸按键,通过该按键控制 DS1 的亮灭。
15.1 电容触摸按键简介
//预分频器
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
//初始化 GPIOA.1 //PA.1 输出 0,放电 //延时 5ms //归 0 //清除中断标志
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; //GPIOA.1 浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
打开 tpad.c 可以看到,我们在 tpad.c 里输入了如下代码: #define TPAD_ARR_MAX_VAL 0XFFFF //最大的 ARR 值 vu16 tpad_default_val=0;//空载的时候(没有手按下),计数器需要的时间 //初始化触摸按键 //获得空载的时候触摸按键的取值. //返回值:0,初始化成功;1,初始化失败 u8 TPAD_Init() { u16 buf[10] , temp;
tpad_default_val=temp/6;
printf("tpad_default_val:%d\r\n",tpad_default_val); //初始化遇到超过 TPAD_ARR_MAX_VAL/2 的数值,不正常!
if(tpad_default_val>TPAD_ARR_MAX_VAL/2)return 1; return 0;
185
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); //使能 TIM5 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABL浮空输入
182
在 MCU 每次复位重启的时候,我们执行一次捕获检测(可以认为没触摸),记录此时的值, 记为 tpad_default_val,作为判断的依据。在后续的捕获检测,我们就通过与 tpad_default_val 的 对比,来判断是不是有触摸发生。
关于输入捕获的配置,在上一章我们已经有详细介绍了,这里我们就不再介绍。至此,电 容触摸按键的原理介绍完毕。
};
184
return TIM_GetCapture2(TIM5);
}
//读取 n 次,取最大值
u16 TPAD_Get_MaxVal(u8 n)
{ u16 temp=0, res=0;
while(n--){
temp=TPAD_Get_Val(); //得到一次值
if(temp>res)res=temp;
触摸按键相对于传统的机械按键有寿命长、占用空间少、易于操作等诸多优点。大家看看 如今的手机,触摸屏、触摸按键大行其道,而传统的机械按键,正在逐步从手机上面消失。本 章,我们将给大家介绍一种简单的触摸按键:电容式触摸按键。
我们将利用战舰 STM32 开发板上的触摸按键(TPAD),来实现对 DS1 的亮灭控制。这里 TPAD 其实就是战舰 STM32 开发板上的一小块覆铜区域,实现原理如图 15.1.1 所示:
u8 TPAD_Scan(u8 mode)
{ static u8 keyen=0;
//0,可以开始检测;>0,还不能开始检测
u8 res=0, sample=3;
//默认采样次数为 3 次
u16 rval;
if(mode){
sample=6;
//支持连按的时候,设置采样次数为 6 次
keyen=0;
15.2 硬件设计
本实验用到的硬件资源有: 1) 指示灯 DS0 和 DS1 2) 定时器 TIM5 3) 触摸按键 TPAD 前面两个之前均有介绍,我们需要通过 TIM5_CH2(PA1)采集 TPAD 的信号,所以本实验需 要用跳线帽短接多功能端口(P14)的 TPAD 和 ADC,以实现 TPAD 连接到 PA1。如图 15.2.1 所示。
图 15.1.1 电容触摸按键原理 这里我们使用的是检测电容充放电时间的方法来判断是否有触摸,图中 R 是外接的电容充 电电阻,Cs 是没有触摸按下时 TPAD 与 PCB 之间的杂散电容。而 Cx 则是有手指按下的时候, 手指与 TPAD 之间形成的电容。图中的开关是电容放电开关(由实际使用时,由 STM32 的 IO 代替)。 先用开关将 Cs(或 Cs+Cx)上的电放尽,然后断开开关,让 R 给 Cs(或 Cs+Cx)充电, 当没有手指触摸的时候,Cs 的充电曲线如图中的 A 曲线。而当有手指触摸的时候,手指和 TPAD 之间引入了新的电容 Cx,此时 Cs+Cx 的充电曲线如图中的 B 曲线。从上图可以看出,A、B 两种情况下,Vc 达到 Vth 的时间分别为 Tcs 和 Tcs+Tcx。 其中,除了 Cs 和 Cx 我们需要计算,其他都是已知的,根据电容充放电公式: Vc=V0*(1-e^(-t/RC)) 其中 Vc 为电容电压,V0 为充电电压,R 为充电电阻,C 为电容容值,e 为自然底数,t 为 充电时间。根据这个公式,我们就可以计算出 Cs 和 Cx。利用这个公式,我们还可以把战舰开 发板作为一个简单的电容计,直接可以测电容容量了,有兴趣的朋友可以捣鼓下。 在本章中,其实我们只要能够区分 Tcs 和 Tcs+Tcx,就已经可以实现触摸检测了,当充电 时间在 Tcs 附近,就可以认为没有触摸,而当充电时间大于 Tcs+Tx 时,就认为有触摸按下(Tx 为检测阀值)。 本章,我们使用 PA1(TIM5_CH2)来检测 TPAD 是否有触摸,在每次检测之前,我们先配置 PA1 为推挽输出,将电容 Cs(或 Cs+Cx)放电,然后配置 PA1 为浮空输入,利用外部上拉电阻 给电容 Cs(Cs+Cx)充电,同时开启 TIM5_CH2 的输入捕获,检测上升沿,当检测到上升沿的时 候,就认为电容充电完成了,完成一次捕获检测。
相关文档
最新文档