0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

触摸按键原理

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-06-09 10:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


01 触摸按键原理

触摸使用RC充放电原理:

7e8572ac-e784-11ec-ba43-dac502259ad0.png

RC电路是指由电阻R电容C组成的电路,它是脉冲产生和整形电路中常用的电路。

充电过程:

电源通过电阻给电容充电,由于一开始电容两端的电压为0,所以电压的电压都在电阻上,这时电流大,充电速度快。随着电容两端电压的上升,电阻两端的电压下降,电流也随之减小,充电速度小。充电的速度与电阻和电容的大小有关。电阻R越大,充电越慢,电容C越大,充电越慢。衡量充电速度的常数t(tao)=RC

放电过程:

电容C通过电阻R放电,由于电容刚开始放电时电压为E,放电电流I=E/R,该电流很大,所以放电速度很快。随着电容不断的放电,电容的电压也随着下降。电流也很快减小。电容的放电速度与RC有关,R的阻值越大,放电速度越慢。电容越大,放电速度越慢。

RC电路充放电公式:

Vt = V0+(V1-V0)*[1-exp(-t/RC)]

V0 为电容上的初始电压值;

V1 为电容最终可充到或放到的电压值;

Vt 为t时刻电容上的电压值。

如果V00,也就是从0V开始充电。那么公式简化为:

Vt= V1* [1-exp(-t/RC)]

结论:同样的条件下,电容值C跟时间值t成正比关系,电容越大,充电到达某个临界值的时间越长。

02 电路设计

电路设计时其实就是个上拉电阻

7f1ef288-e784-11ec-ba43-dac502259ad0.png

PCB设计,直接一个圆形,和底层接地覆铜形成杂散电容。

7f4c18d0-e784-11ec-ba43-dac502259ad0.png

电容触摸按键原理

7f9f1ada-e784-11ec-ba43-dac502259ad0.png

R:外接电容充放电电阻。

Cs:TPADPCB间的杂散电容。

Cx:手指按下时,手指和TPAD之间的电容。

开关:电容放电开关,由STM32IO口代替。

03 代码设计

检测电容触摸按键过程

①TPAD引脚设置为推挽输出,输出0,实现电容放电到0

②TPAD引脚设置为浮空输入(IO复位后的状态),电容开始充电。

同时开启TPAD引脚的输入捕获开始捕获。

等待充电完成(充电到底Vx,检测到上升沿)。

计算充电时间。

触摸按键初始化


uint8_t Touchpad_Init(void){  uint16_t buf[10]; uint16_t temp;  uint8_t j,i;     TIM_ICInitTypeDef  TIM_ICInitStructure;    /* TIM12Configuration */  TIM_Config();
 TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0;
 TIM_ICInit(TIM12, &TIM_ICInitStructure);    /* Enablethe CC1 Interrupt Request */  TIM_ITConfig(TIM12,TIM_IT_CC1|TIM_IT_Update, ENABLE);    /* TIM enablecounter */  TIM_Cmd(TIM12, ENABLE);   for(i=0;i<10;i++)//连续读取10次 {    buf[i]=Touchpad_Get_Val();   SysCtlDelay(10*(SystemCoreClock/3000));      }   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];//取中间的8个数据进行平均  }  Touchpad_default_val=temp/6;    if(Touchpad_default_val>0XFFFF/2)     return1;//初始化遇到超过Touchpad_ARR_MAX_VAL/2的数值,不正常!  return 0;  }

按键复位代码


void Touchpad_Reset(){  GPIO_InitTypeDefGPIO_InitStructure;    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure);   GPIO_ResetBits(GPIOB,GPIO_Pin_14);   SysCtlDelay(5*(SystemCoreClock/3000));   TIM_ClearITPendingBit(TIM12, TIM_IT_Update|TIM_IT_CC1); TIM_SetCounter(TIM12,0);      /* Connect TIM pinsto AF9 */  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14,GPIO_AF_TIM12);    /* TIM12 channel 1 pin (PB14)configuration */  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;  GPIO_Init(GPIOB, &GPIO_InitStructure);}

下载代码测试验证:

7fb971a0-e784-11ec-ba43-dac502259ad0.gif

硬件和软件开源地址:

https://github.com/strongercjd/STM32F207VCT6

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电容
    +关注

    关注

    100

    文章

    6442

    浏览量

    158075
  • STM32
    +关注

    关注

    2305

    文章

    11124

    浏览量

    371268
  • 触摸按键
    +关注

    关注

    7

    文章

    125

    浏览量

    68746

原文标题:STM32 触摸按键

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32 电容式触摸按键设计指南

    前言 CW32 电容式触摸按键设计指南向客户提供一种利用 CW32 内部资源结合软件编程实现电容式触摸按键有效 触摸检测的方法。本指南的内容
    发表于 12-09 06:53

    【RA4M2-SENSOR】电容触摸按键

    【RA4M2-SENSOR】电容触摸按键 本文介绍了 RA4M2-SENSOR 通过板载电容触摸按键实现了 LED 控制,并通过触摸调试和
    发表于 09-03 11:13

    增强型触摸按键芯片RM1281A规格书

    电子发烧友网站提供《增强型触摸按键芯片RM1281A规格书.pdf》资料免费下载
    发表于 07-29 16:22 0次下载

    【RA-Eco-RA6M4开发板评测】CTSU触摸按键控制LED

    RA6M4开发板带有两个触摸按键,是瑞萨自己研发的触摸设计。这个调试案例需要用到SWD.我使用的是EZCUBE3.使用typec外部供电。 准备工作 连接好环境,EZCUBE3的2脚和4脚分别连接线
    发表于 07-28 22:01

    浅谈瑞萨触摸芯片低功耗功能的实际应用

    相比于传统的机械按键触摸按键更加美观时尚,因此应用场景非常广泛。瑞萨基于CTSU2新一代触摸IP的触控芯片推出以来,得到了很多客户的青睐,尤其在白色家电产品上。本文基于RL78系列的
    的头像 发表于 06-17 17:03 3555次阅读
    浅谈瑞萨<b class='flag-5'>触摸</b>芯片低功耗功能的实际应用

    【RA4L1-SENSOR】03 触摸按键调试及实现长短按

    1. 前言 为了方便后面用户操作,这里使用按键进行人机交互。开发板已经搭载2个实体按键和2个触摸按键,本次实验以触摸
    发表于 06-15 11:06

    中微爱芯12键电容式触摸按键电路AiP5912介绍

    中微爱芯推出具有低功耗模式的12键电容式触摸按键电路AiP5912,该电路典型最小工作电流仅23uA,典型待机电流仅1uA。
    的头像 发表于 06-09 14:25 2294次阅读
    中微爱芯12键电容式<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>电路AiP5912介绍

    苏泊尔C21S26电磁炉控制板原理图

    采用CD4051构成触摸按键电路
    发表于 05-26 17:27 6次下载

    FZH31单键电容式触摸按键IC中文手册

    FZH31 是深圳市方中禾科技有限公司推出的 单键电容式触摸按键专用检测传感器 IC,专为消费电子和家电设备的触摸控制设计。以下是其核心特性与功能概述:核心特性高灵敏度与灵活配置采用 电荷检测技术
    发表于 05-20 16:27 0次下载

    FZH38 8通道电容式触摸按键检测传感器IC中文手册

    FZH38 是深圳市方中禾科技有限公司推出的 8 通道电容式触摸按键检测传感器 IC,专为多按键控制的家电、工业设备和消费电子产品设计。以下是其核心特性与功能概述:核心特性多通道与高集成度支持 8
    发表于 05-20 16:23 0次下载

    触摸按键噪声对策 瑞萨CTSU MCU在应对噪声困扰时软硬件设计注意点

      触摸按键产品拥有美观,易用,易清理等特点在越来越多的产品中得到广泛的应用,使用的场景也越来越多,在复杂的外部环境中,触摸按键的可靠性得到越来越大的关注。 本文着重介绍瑞萨 产品在应
    的头像 发表于 03-31 18:31 1606次阅读
    <b class='flag-5'>触摸</b><b class='flag-5'>按键</b>噪声对策  瑞萨CTSU MCU在应对噪声困扰时软硬件设计注意点

    【瑞萨RA2L1入门学习】07、触摸按键点亮LED

    前言 本次实验的目标是利用触摸按键点亮LED灯,以达到扩展按键数量的目的。 本节实验需要用到J-Link仿真器。 如果你在按照e2s时没有勾选安装Renesas QE的话,需要从官网下载e2s安装包
    发表于 02-13 16:01

    蓝牙耳机触摸IC-低功耗单按键触摸感应芯片/单路触控方案-VKD233HH SOT23-6L

    产品品牌:永嘉微电 产品型号:VKD233HH 封装形式:SOT23-6L 特点 VKD233HH具有1个触摸按键,可用来检测外部触摸按键上人手的
    的头像 发表于 01-15 15:42 1068次阅读
    蓝牙耳机<b class='flag-5'>触摸</b>IC-低功耗单<b class='flag-5'>按键</b><b class='flag-5'>触摸</b>感应芯片/单路触控方案-VKD233HH  SOT23-6L

    触摸感应芯片原厂低电流多按键触摸芯片VKD104CR

    产品型号: VKD104CR 产品品牌:永嘉微电 /VINKA 封装形式: SOP8 产品年份:新年份 VKD104CR具有2个触摸按键,可用来检测外部触摸按键上人手的
    的头像 发表于 01-14 17:53 937次阅读

    工作电流 4.0uA/3V/低电流单路触摸/单按键触摸感应芯片VKD233HB SOT23-6L

    产品品牌:永嘉微电 产品型号:VKD233HB 产品封装:SOT23-6L 概述 VKD233HB具有1个触摸按键,可用来检测外部触摸按键上人手的
    的头像 发表于 01-14 16:24 789次阅读
    工作电流 4.0uA/3V/低电流单路<b class='flag-5'>触摸</b>/单<b class='flag-5'>按键</b><b class='flag-5'>触摸</b>感应芯片VKD233HB  SOT23-6L