STM32之HAL开发——电容按键

电容按键原理

电容器 (简称为电容) 就是可以容纳电荷的器件,两个金属块中间隔一层绝缘体就可以构成一个最简单的电容。如图 32_1 (俯视图),有两个金属片,之间有一个绝缘介质,这样就构成了一个电容。这样一个电容在电路板上非常容易实现,一般设计四周的铜片与电路板地信号连通,这样一种结构就是电容按键的模型。当电路板形状固定之后,该电容的容量也是相对稳定的。

电路板制作时都会在表面上覆盖一层绝缘层,用于防腐蚀和绝缘,所以实际电路板设计时情况如图。电路板最上层是绝缘材料,下面一层是导电铜箔,我们根据电路走线情况设计决定铜箔的形状,再下面一层一般是 FR-4 板材。金属感应片与地信号之间有绝缘材料隔着,整个可以等效为一个电容 Cx。一般在设计时候,把金属感应片设计成方便手指触摸大小。


图 1 无手指触摸情况

在电路板未上电时,可以认为电容 Cx 是没有电荷的,在上电时,在电阻作用下,电容 Cx 就会有一个充电过程,直到电容充满,即 Vc 电压值为 3.3V,这个充电过程的时间长短受到电阻 R 阻值和电容 Cx 容值的直接影响。但是在我们选择合适电阻 R 并焊接固定到电路板上后,这个充电时间就基本上不会变了,因为此时电阻 R 已经是固定的,电容 Cx 在无外界明显干扰情况下基本上也是保持不变的。

当我们用手指触摸时,金属感应片除了与地信号形成一个等效电容 Cx 外,还会与手指形成一个 Cs 等效电容。

图 2 有手指触摸情况

此时整个电容按键可以容纳的电荷数量就比没有手指触摸时要多了,可以看成是 Cx 和 Cs 叠加的效果。在相同的电阻 R 情况下,因为电容容值增大了,导致需要更长的充电时间。也就是这个充电时间变长使得我们区分有无手指触摸,也就是电容按键是否被按下。现在最主要的任务就是测量充电时间。充电过程可以看出是一个信号从低电平变成高电平的过程,现在就是要求出这个变化过程的时间。我们可以利用定时器输入捕获功能计算充电时间,即设置 TIMx_CH 为定时器输入捕获模式通道。这样先测量得到无触摸时的充电时间作为比较基准,然后再定时循环测量充电时间与无触摸时的充电时间作比较,如果超过一定的阈值就认为是有手指触摸。图 3 为 Vc 跟随时间变化情况,可以看出在无触摸情况下,电压变化较快;而在有触摸时,总的电容量增大了,电压变化缓慢一些。

图 3 Vc 电压与充电时间关系

为测量充电时间,我们需要设置定时器输入捕获功能为上升沿触发, 图 32_4 中 VH 就是被触发上升沿的电压值,也是 STM32 认为是高电平的最低电压值,大约为 1.8V。 t1 和 t2 可以通过定时器捕获/比较寄存器获取得到。

不过,在测量充电时间之前,我们必须想办法制作这个充电过程。之前的分析是在电路板上电时会有充电过程,现在我们要求在程序运行中循环检测按键,所以必须可以控制充电过程的生成。我们可以控制 TIMx_CH 引脚作为普通的 GPIO 使用,使其输出一小段时间的低电平,为电容 Cx放电,即 Vc 为 0V。当我们重新配置 TIMx_CH 为输入捕获时电容 Cx 在电阻 R 的作用下就可以产生充电过程。

相关推荐
jianqiang.xue5 小时前
系统服务层设计:沉淀通用能力,让业务层只专注业务
stm32·单片机·嵌入式硬件·mcu·物联网·esp32
无垠的广袤7 小时前
【RA-Eco-RA2T1开发板】介绍、环境搭建、工程测试
单片机·嵌入式硬件·串口通信·uart·开发环境·blink
画面无声7 小时前
STM32的SPI通信原理与练习记录
c语言·stm32·单片机·嵌入式硬件·学习
weixin_456808387 小时前
【沁恒蓝牙开发】IAP升级流程
c语言·单片机·嵌入式硬件
czhaii8 小时前
RTL8019AS、555,DS3231等芯片的跳线方式和引脚定义
嵌入式硬件
czhaii10 小时前
基本电器元件 电阻 resistance R 电容 capacitance C 电感 inductance L
嵌入式硬件
万亿少女的梦16811 小时前
基于STM32、RFID与OneNET的开放性实验室电源节点设计
stm32·物联网·onenet·rfid·esp8266
1560820721912 小时前
飞腾D2000接入外部时钟HYM8563芯片调试
驱动开发·嵌入式硬件·mcu
殷忆枫12 小时前
基于STM32+OV2640+ESP8266的无线图像采集系统设计与实现
stm32·单片机·嵌入式硬件
llilian_1613 小时前
便携式相位测量模块应用方案的核心优势
网络·功能测试·单片机