电容式感应触摸按键可以穿透绝缘材料外壳 8mm (玻璃、塑料等等)以上,准确无误地侦测到手指的有效触摸。 并保证了产品的灵敏度、稳定性、可靠性等不会因环境条件的改变或长期使用而发生变化,并具有防水和强抗干扰能力。
瑞萨的芯片内部集成高分辨率触摸检测模块CTSU和专用信号处理电路,以保证芯片对环境变化具有灵敏的自动识别和跟踪功能。 芯片还必须满足用户在复杂应用中对稳定性、灵敏度、功耗、响应速度、防水等方面的高体验要求。 电容式触摸按键控制芯片通常广泛适用于遥控器、灯具调光、各类开关以及车载、小家电和家用电器控制界面等应用中。 在芯片应用的开发过程非常简单,可以最大限度的降低方案成本。
电容器(简称为电容)就是可以容纳电荷的器件,两个金属块中间隔一层绝缘体就可以构成一个最简单的电容。如下图(俯视图),有两个金属片,之间有一个绝缘介质,这样就构成了一个电容。这样一个电容在电路板上非常容易 实现,一般设计四周的铜片与电路板地信号连通,这样一种结构就是电容按键的模型。当电路板形状固定之后,该电容的容量也是相对稳定的。
电路板制作时都会在表面上覆盖一层绝缘层,用于防腐蚀和绝缘,所以实际电路板设计时情况如下图。电路板最上层是绝缘材料,下面一层是导电铜箔,我们根据电路走线情况设计并决定铜箔的形状,再下面一层一 般是FR-4板材。金属感应片与地信号之间有绝缘材料隔着,整个可以等效为一个电容Cx。一般在设计时候,把金属感应片设计成方便手指触摸大小。
在电路板未上电时,可以认为电容Cx是没有电荷的,在上电时,在电阻作用下,电容Cx就会有一个充电过程,直到电容充满,即Vc电压值为3.3V,这个充电过程的时间长短受到电阻R阻值和电容Cx容值的直接影响。但是在选择合适电阻R并焊接固定到电路板上后,这个充电时间就基本上不会变了,因为此时电阻R已经是固定的,电容Cx在无外界明显干扰情况下基本上也是保持不变的。
看看当用手指触摸时会是怎样一个情况?如下图,当用手指触摸时,金属感应片除了与地信号形成一个等效电容Cx外,还会与手指形成一个Cs等效电容。
此时整个电容按键可以容纳的电荷数量就比没有手指触摸时要多了,可以看成是Cx和Cs叠加的效果。在相同的电阻R情况下,因为电容容值增大了,导致需要更长的充电时间。也就是这个充电时间变长使得我们区分有无手指触摸,也就是电容按键是否被按下。
现在最主要的任务就是测量充电时间。充电过程可以看出是一个信号从低电平变成高电平的过程,现在就是要求出这个变化过程的时间。可以利用定时器输入捕获功能计算充电时间,即设置TIMx_CH为定时器输入捕获模式通道。这样先测量得到无触摸时的充电时间作为比较基准,然后再定时循环测量充电时间与无触摸时的充电时间作比较,如果超过一定的阈值就认为是有手指触摸。
图下为Vc跟随时间变化情况,可以看出在无触摸情况下,电压变化较快;而在有触摸时,总的电容量增大了,电压变化缓慢一些。
为测量充电时间,需要设置定时器输入捕获功能为上升沿触发, 上图中VH就是被触发上升沿的电压值,也是RA6M5认为是高电平的最低电压值,大约为1.8V。t1和t2可以通过定时器捕获/比较寄存器获取得到。
不过,在测量充电时间之前,必须想办法制作这个充电过程。之前的分析是在电路板上电时会有充电过程,现在要求在程序运行中循环检测按键,所以必须可以控制充电过程的生成。可以控制TIMx_CH引脚作为普通的GPIO使用,使其输出一小段时间的低电平,为电容Cx放电,即Vc为0V。当我们重新配置TIMx_CH为输入捕获时电容Cx在电阻R的作用下就可以产生充电过程。
QE for Capacitive Touch 是一种工具,用于协助开发包括使用电容式触摸键在内的嵌入式系统。 此工具简化了触摸用户界面的初始设置和灵敏度的调整。可以使用这一个软件进行多个电容式按键组成的滑块从而识别出诸如“滑”和“推”等手势,从而大大减少开发者对于电容式按键开发的难度。
此工具可自动调整电容式触摸传感器的灵敏度。您可以按照弹出消息中的说明在几分钟内完成基本调整。 简单的GUI操作甚至允许初学者创建用于触摸用户界面的配置,通过触摸传感器监控输入状态,并调整参数。
此外,由于该工具还可以调整调谐参数并通过实时显示反映结果,因此对于在各种情况下找到合适的参数非常有用,例如在存在大量静电的情况下或用湿手使用的情况下。
电容按键不需要任何外部机械部件,使用方便,成本低,很容易制成与周围环境相密封的键盘,以起到防潮防湿的作用。 电容按键优势突出使得越来越多电子产品使用它代替传统的机械按键。
开发板板载一个电容按键,电容按键电路设计请参考下图。
标示TPAD1在电路板上就是电容按键实体,默认连接到P708,即CTSU单元1的通道TS12。 充电电容的阻值为680欧姆,电阻的大小决定了电容按键充电的时间。
实验还用到调试串口和LED功能,用来打印输入捕获信息和指示电容按键状态。
首先打开 “CTSU_basic” 项目的 FSP 配置界面,接下来要在这个界面里配置芯片的引脚及其相应的功能。
双击 configuration.xml 打开配置界面: 然后点开依次点击 Stacks -> New Stack -> CapTouch -> TOUCH 来配置CTSU模块。如下图。
之后选择对应的引脚如下图
配置完成之后可以按下快捷键“Ctrl + S”保存, 最后点右上角的 “Generate Project Content” 按钮,让软件自动生成配置代码即可。
在keil里面创建一个 qe_gen 文件夹,将之前在 e2 studio 项目里生成的 qe_gen 文件夹里的文件复制到keil的文件夹里面, 之后我们将文件目录导入到项目里。
第一步点击 Options for Target ‘Target 1’ ,将添加的文件夹目录导入到工程里
第二步点击 Manage Project Items ,设置keil的项目文件管理。 这个时候的文件目录为:
CTSU_basic
├─ .settings
├─ Listings
├─ Objects
├─ qe_gen
│ ├─qe_touch_config.c
│ ├─qe_touch_config.h
│ ├─qe_touch_define.h
│ └─qe_touch_sample.c
├─ ra
├─ ra_cfg
├─ ra_gen
├─ RTE
└─ scriptsrc
void hal_entry(void)
{
qe_touch_main(); //跳转到电容按键函数
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}