AVR单片机中RC电容触摸的感应原理解析

2020-01-15来源: elecfans关键字:AVR单片机  RC  电容触摸  感应原理

RC电容触摸感应按键


1:RC感应原理

RC采样原理就是通过测量感应极电容的微小变化,来感知人体对电容式感应器(按键、轮键或者滑条)的感应。电极电容(C)通过一个固定的电阻(R)周期性地充放电。


固定电压施加在VIN,VOUT的电压随着电容值的变化而相应增加或者降低。


通过计算VOUT的电压达到阀值VTH所需要的充电时间(tC),来得到电容值(C)。

在触摸感应应用中,电容值(C)由两部分组成:固定电容(电极电容,CX)和当人手接触或者靠近电极时,由人手带来的电容(感应电容,CT)。电极电容应该尽可能的小,以保证检测到人手触摸。因为通常人手触摸与否,带来的电容变化一般就是几个pF(通常5pF)。


利用该原理,就可以检测到手指是否触摸了电极。

AVR单片机中RC电容触摸的感应原理解析

2:硬件实现

图4显示了一个实现的实例。由R1,R2以及电容电极(CX)和手指电容(CT)并联的电容(大约5pF)形成一个RC网络,通过对该RC网络充放电时间的测量,可以检测到人手的触摸。 所有电极共用一个“负载I/O”引脚。电阻R1和R2尽量靠近MCU放置。电电R1(阻值在几百千欧到几兆欧之间)是主要电电阻,用于调节触摸检测的灵敏度。电阻R2(10K?)是可选的,用于减少对噪声影响。


3:充放电时间测量原理

为了保证健壮的电容触摸感应的应用,充电时间的测量需要足够的精确。通常有两种方式来测量充电时间:

1.第一种方法是采用输入捕获(IC)定时器,当电压达到阀值时,触发定时器开始工作。该方案中时间测量的精确度直接取决于定时器计数器的频率。但是,由于每个电极都需要一个输入捕获通道,普通的MCU就不适合这种类型的电容感应应用了。

2.第二种方法采用一个简单的定时器(无需IC功能)和一系列简单的软件操作,即定时地检查感应I/O端口上的电压是否达到阀值。这样的话,时间测量的精确度就取决于执行一次完整软件查询需要的CPU周期数。这种测量方法会由于多次测量带来一些抖动,但是由于没有硬件限制,这种方法适用于需要很多电极的场合。


第二种方法修改一下,使用自适应的软件序列,就可以在测量时间时获得和CPU频率(fCPU)一样的精度。


目前ST触摸感应采用第二种方法。

使用普通定时器进行充电时间的测量。对电容充电开始之前,定时器的计数器数值被记录下来。当采样I/O端口上的电压达到某个阀值(VTH)时,再次记录定时器计数器的值。二者之差就是充电或者放电的时间。


为了提高在电压和温度变动情况下的稳定性,对电极会进行连续两次的测量:第一次测量对电容的充电时间,直到输入电压升至VIH。第二次测量电容的放电时间,直到输入电压降至VIL。下图以及以下的表格详细说明了对感应电极(感应I/O)和负载I/O引脚上的操作流程。


4:电容充放电测量步骤

由于是测量整个充电和放电为一个过程,因此在电容充电开始时候计时器开始计数,在电容放电完成时候才停止计数,同时保存计数值

以上文字基本摘录至ST文献


5:数据处理

a:采样

由于我们在判断的时候是要花3个周期(while(PIND_X);),但是我们的计数器是1个周期的,这样判断采样值就会有误差。


举例说,在充电过程中比如在T=49点上好是VIH到达点。会出现以下三种情况:

1:在前一个判断点在46时间点上,刚好可以在49时间点判断采样到VIH

2:在前一个判断点在47时间点上,只能在50时间点判断采样到VIH,相差1个字

3:在前一个判断点在48时间点上,只能在51时间点判断采样到VIH,相差2个字


我们当然希望每次都是情况1出现,但是不可能啊!

采用软件方法测量3次,在3次中我们假设49,50,51点各出现一次。

第1次49 第2次 50 第3次 51

第1次49 第2次 50-1=49 第3次 51-2=49

但是我们怎么知道哪次测量是49或者50或者51呢?很简单我们每次测量比前一次延时1个周期,连续测量3次,这样就基本理论上跨越了3种可能出现的情况。但是如果三次都是一样的值,那就只有埋怨老天怨天了。


我们测量的是整个充放电过程,所以理论上要跨越3*3=9个延迟周期,同时我们还顺便把跨越的这9次测量当做1组多点测量的平均数据。


B手指同步

我们的程序一般都是采样多点,然后求平均。问题就出在这里,比如程序判断9个点,在前6个点手指没有触摸,后3个点手指按触摸,这样求出的平均值就偏小,和手指远离按键的效果一样了。特别是平均点越多越是会出现这样的问题。


因此要求判断和手指触摸同步。比如程序判断9个点,在前3个点手指没有触摸,后三个点手指触摸,我们判断到第4个点有手指,从4-13扫描9个点。这样就包含了手指的同步状态。当然有人说要是我在第7个点把手移开了不就变成后面几点没有按键吗?开玩笑的,CPU的速度那么快,也许CPU扫描完成9个点然后再出去转悠一圈回来,你的手指状态还没有来的及改变呢。


当然然我们也可以采用连续扫描两次9个点,如果两次值相差在一定范围内,说明手指状态一样。笔者还是采用该种办法,虽说CPU速度快,但我怕他出去溜达的时候给什么大姨妈缠住不回来就惨了。


C:按键判别

经过以上处理假如我们得到触摸值为80,没有触摸时候的值是60,取一个按键开启值70,只要按键值大于70就表示有触摸。但是不是只要触摸值小于70就表示没有按键呢?当然不是,手指毕竟是抖动的,一会大于70,一会儿小于70。按键就抖动了。


我们采用一个按键释放值63,这样当触摸值大于70按键开启,一直到触摸值小于63才表示按键释放,就消除了按键抖动。


当然我们实际没有必要知道每次按键的扫描值,只要给每个通道设置一个差值,让CPU自己去做触摸值和基本值之间的差值比较就可以了。如差值大于10按键开启,差值小于3按键释放。

D:按键抑制和校准

按键抑制:我们把没有触摸时候的电容充放电值扫描纪录下来保存为基本按键值。然后把以后扫描道的触摸电容充放电值和基本值比较,在所有通道中差值最大那一组才开启。起到相邻按键抑制作用。不过笔者认为该功能真的作用不大,有时候还会起反作用。

按键校准:该步骤很重要,由于环境温度,电压等造成基本电容变大,这样如果不重新校准基本值的话,差值很小,会造成灵敏度降低,甚至检测不到按键。校准其实很简单,采用1个定时器,在2秒钟内如果没有检测到触摸状态就重新扫描保存基本值。


好了就这样基本上RC电容按键就完成了。


写在这里,不得不说一下,笔者用AT2313编译过6键的RC触摸按键,稳定性还是不错的,不过在实验室,为什么不在恶劣的环境下试验呢?


下面说一下RC电容感应的缺点,不谈优点,笔者认为基本没有。

1) 要求CPU速度要快,一般8M以上

2) 容易受干扰,输入检测是高阻态嘛

3) 该方法检测的手指电容变换不大(灵敏度和干扰相克,同时电容的穿透感应最强是在充放电的瞬间,而不是整个过程,RC原理恰恰是运用的整个过程)

4) 软件处理麻烦


建议玩玩,或者用在搞死人不偿命的设备上还是可以的,比如小玩具,手机等。严禁用在工业产品上啊。


笔者用2313做过RC电容感应按键6个,模仿ST的

PD1作为公共脚

PA1PA0PD2PD3PD4PD5做K0-K5 6个按键

PB4PB3PB2PB1PB0PD6接发光二极管来反映状态

本来还留有I2C口的,由于感觉该方案实在不能用于工业,所以就到此为止。

关键字:AVR单片机  RC  电容触摸  感应原理 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic485756.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于AVR单片机中的EEPROM和FLASH的区别及使用方法解析
下一篇:AVR单片机的优势特征及未来发展展望

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于AVR单片机和无线传感网络为基础的3D环境监测系统设计
1.概述1.1文档说明本设计文档作为“基于AVR32及Labview的3D环境监测及评估系统”的计划书,为项目开展的依据。也作为项目的说明。1.2项目背景本项目希望以AVR微控制器作为基础,配合Atmel公司所公开Zigbee协议栈,对现有的绿地进行全方位的数据采集工作,摒弃原先陈旧且缺乏合理性的绿化覆盖面积标准,而是采用3维立体坐标的方式,测量出每一小块区域各环境参数值的具体数值,绘出3D图像,以立体的环境改善状况作为分析绿地使用价值的有效指标,并通过测试所得的数据,指导根据不同区域的环境特征建立最为合适并具积极效果的绿化设施。本项目也将能够实现对于各项复杂的环境数据的统一数据采集工作,例如对温湿度、可吸入颗粒物、臭氧含量等指标
发表于 2020-01-20
基于AVR单片机和无线传感网络为基础的3D环境监测系统设计
基于AVR单片机的轮胎内径测量系统设计
上,运用步进电机控制横梁的运动,分别对模具不同层面的内径进行测量。系统采用AVR单片机实现控制步进电机和光栅尺数据读取,通过接收上位机的控制命令,AVR单片机控制步进电机运动,数显表数据和激光控制器位移数据自动经串口发送给上位机,从而完成对模具内径的自动测量。1 系统组成基于AVR的轮胎内径测量系统主要由AVR单片机、上位机、光栅尺、数显表、激光测距仪、驱动器、步进电机、电子手轮、行程开关等组成。其功能框图如图1所示。单片机选用的是爱特梅尔公司的ATmega16;上位机采用研华公司生产的ARK3360L工控机,它拥有多个RS232接口;激光测距仪采用的是日本基恩士公司的LK-G85激光测距传感器和LK-G3001V激光测距控制器
发表于 2020-01-20
基于AVR单片机的轮胎内径测量系统设计
基于AVR单片机的智能化防盗保护系统设计
,因此需要较复杂的控制逻辑,本文采用CPLD器件EPM7128来解决这一问题,通过软件编程简化硬件设计。处理器及外围控制电路处理器部分是系统的核心,它具有控制和处理两个功能。外围控制接口电路包括讯响部分、空调控制显示部分和串口电路。电源电路设计以尽量减小功耗为目的,整个系统采用了两种供电电源:3.3V 和 5V。3.3V稳压模块采用的是CZ1585CT,5V稳压模块采用的是MC7805T。由于现在稳压电源集成度比较高,电路组成也比较简单,在此就不给出原理图了。软件程序的设计由于整个系统有 单片机 的控制与数据处理,也有PC机的图形处理,还有接口逻辑设计,因此软件调试既包括AVR单片机程序调试,也包括PC机程序的调试,还有硬件逻辑的描述
发表于 2020-01-20
基于AVR单片机的智能化防盗保护系统设计
AVR单片机内部的复位功能解析
AVR单片机的复位:看门狗复位、上电复位、掉电复位看到大家对复位特别是AVR单片机内部的复位功能还不太清楚,现在这里简单说一下,希望在家能有个总体的认识。AVR单片机复位大概有:上电复位、掉电复位、看门狗超时复位、外部复位,这么四种。上电复位:就是在一通电的时候对单片机进行复位,这和我们外接RC复位电路的作用是一样的,AVR单片机内部带有上电复位功能。掉电复位:就是在单片机运行过程中电压突然跌落,这个时候单片机会出现很多不确定的现象,所以在这个时候需要将单片机复位,让它处于一个确定的状态。这就是BOD功能,一个非常实用的功能,AVR单片机带有这个功能。看门狗复位:这是我们常说的看门狗了,就是当程序进入某个地方长时间没有响应
发表于 2020-01-20
AVR单片机内部的复位功能解析
AVR单片机控制继电器吸合与断开的仿真设计
继电器(Relay),作用是用弱电控制强电。比如,我们用avr单片控制一个220V电压的灯泡,这就必须用到继电器。本课用avr单片机来控制继电器的吸合与断开。Proteus仿真实验器件:1 atmega128一块2 button,按键一个3 relay,通用继电器一个,并把继电器的Component Value设置为5V4 pnp三极管一个5 LAMP,灯泡一个改为220V6 resistor 1k7 DIODE 二极管一个这个程序实际上很简单,主要要学习继电器的用法,注意的是,继电器必须接一个二极管。仿真程序如下:#include#include#define int8u unsigned
发表于 2020-01-19
AVR单片机控制继电器吸合与断开的仿真设计
AVR单片机在工业控制系统中的应用
远离仪表机壳,实测结果电容效应几乎为零。从而乱码和花屏现象不再出现。2.6外部看门狗与外部时钟看门狗也称程序监视定时器。尽管 AVR单片机系统内也有该功能的设置,但在应用实践中发现当干扰严重时该功能会失效,即系统死机后单片机内部的看门狗也无法复位。故有必要在单片机外部单独设计看门狗电路。如图 5所示,由 MC4060芯片及外围电路构成一个看门狗电路。MC4060是一个带外接振荡的 14分频定时计数器,R18和 C2时间常数决定振荡频率。采用如图 5所示的参数时,该振荡频率经过 2秒左右时间后 14分频计数器将被记满,Q14由低电平变高电平经三极管 Q3构成的反相器使输出变为低电平,M16单片机被复位。程序正常运行时,会在
发表于 2020-01-19
AVR单片机在工业控制系统中的应用
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved