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

审核编辑 :李倩


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

    关注

    98

    文章

    5537

    浏览量

    147030
  • STM32
    +关注

    关注

    2232

    文章

    10650

    浏览量

    347868
  • 触摸按键
    +关注

    关注

    7

    文章

    109

    浏览量

    67063

原文标题:STM32 触摸按键

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

收藏 人收藏

    评论

    相关推荐

    触摸按键PCB 设计要点V01

    为解决传统的机械式按键输入方式易磨损、易藏污垢、寿命短等问题,将电容式触摸技术应 用到触摸按键之中,开展了对电容式触摸感应技术的分板,电
    发表于 03-20 16:39 3次下载

    XW06A触摸按键芯片介绍

    XW06A芯片是一款高度集成的触摸按键芯片,它能支持6通道的触摸输入。 在电路设计中,CSEL引脚通过连接的C2电容来调节触摸灵敏度。电容值的大小直接影响感应人体
    的头像 发表于 02-04 14:39 342次阅读
    XW06A<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>芯片介绍

    触摸按键的工作原理是什么

    触摸按键技术是现代电子设备中常见的一种交互方式,它允许用户通过触摸屏幕上的虚拟按键来控制设备的功能。这种技术的发展和应用已经深入到我们生活的方方面面,从智能手机、平板电脑到家用电器等,
    的头像 发表于 02-04 14:27 630次阅读

    中微爱芯推出单总线4通道触摸按键专用电路——AiP5934/L

    电容式触摸电路通过检测人体接触时产生的电容变化来实现触摸操作,具有低功耗、高灵敏度,抗干扰能力强等优势。AiP5934/L是中微爱芯推出的电容式触摸按键电路,提供最多4个独立开关的
    的头像 发表于 01-16 16:29 192次阅读
    中微爱芯推出单总线4通道<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>专用电路——AiP5934/L

    可靠耐用的触摸按键测试展示

    触摸按键
    ICman
    发布于 :2024年01月12日 15:41:08

    单片机的GPIO如何实现触摸按键的功能呢?

    单片机的GPIO如何实现触摸按键的功能呢? 触摸按键是一种使用触摸电容技术实现的按键,它通过利用
    的头像 发表于 12-07 11:43 2104次阅读

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

    CW32 电容式触摸按键设计指南
    的头像 发表于 10-25 16:36 517次阅读
    CW32 电容式<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>设计指南

    【应用笔记】触摸按键设计要点

    【应用笔记】触摸按键设计要点
    的头像 发表于 10-19 17:58 830次阅读
    【应用笔记】<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>设计要点

    求助,m451的触摸按键有详细资料吗?

    准备用M451的触摸按键做键盘,但是发现官方资料少的可怜。 首先,触摸按键的PCB怎么画,怎么样的形状,背面要不要铺地?别的厂商有很详细的文档说明。 其次,BSP原来还有个库可以使
    发表于 08-28 07:27

    VK3603 ESOP8具有3个触摸按键,可用来检测外部触摸按键上人手的触摸动作,触摸触控检测芯片

    产品品牌:永嘉微电/VINKA 产品型号:VK3603 封装形式:ESOP8 概述: VK3603  ESOP8具有3个触摸按键,可用来检测外部触摸按键上人手的
    的头像 发表于 08-16 09:45 431次阅读
    VK3603  ESOP8具有3个<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>,可用来检测外部<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>上人手的<b class='flag-5'>触摸</b>动作,<b class='flag-5'>触摸</b>触控检测芯片

    触摸按键电路原理图 基于分立器件的触摸按键电路设计

    很多小家电都有触摸按键功能,在一些销量大的低成本家电上经常使用分立器件来实现触摸按键功能,常见的如电磁炉产品,经常会见到这种由分立器件组成的触摸
    发表于 07-31 12:24 4912次阅读
    <b class='flag-5'>触摸</b><b class='flag-5'>按键</b>电路原理图 基于分立器件的<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>电路设计

    【应用笔记】CW32 电容式触摸按键设计指南

    前言CW32电容式触摸按键设计指南向客户提供一种利用CW32内部资源结合软件编程实现电容式触摸按键有效触摸检测的方法。本指南的内容重点在于工
    的头像 发表于 07-04 11:44 607次阅读
    【应用笔记】CW32 电容式<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>设计指南

    VK3601触摸芯片具有1个触摸按键,可用来检测外部触摸按键上人手的触摸动作

    产品品牌:永嘉微电/VINKA 产品型号:VK3601 封装形式:SOT23-6 产品年份:新年份  概述: VK3601具有1个触摸按键,可用来检测外部触摸按键上人手的
    的头像 发表于 06-07 17:07 510次阅读
    VK3601<b class='flag-5'>触摸</b>芯片具有1个<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>,可用来检测外部<b class='flag-5'>触摸</b><b class='flag-5'>按键</b>上人手的<b class='flag-5'>触摸</b>动作

    使用QE和CS+调试触摸按键

    QE的Standalone独立安装版本,可以配合其他IDE工具进行触摸按键的调试,比如IAR、Keil以及CS+等,本文以 CS+环境 为例进行演示,该演示使用了 瑞萨官方的RX130触摸开发
    的头像 发表于 04-14 15:15 1038次阅读

    应用在遥控器触摸按键中的电容式触摸芯片

    触摸按键根据不同的类型有不同的工作原理。从工作原理上可以分为两大类,电阻式触摸按键和电容式感应按键
    的头像 发表于 04-11 09:32 1035次阅读