找回密码
 立即注册
查看: 652|回复: 8

用普通IO脚做触摸按键

[复制链接]

该用户从未签到

1

主题

0

回帖

9

积分

新手上路

积分
9
发表于 2023-6-26 22:05:23 | 显示全部楼层 |阅读模式
本帖最后由 wsh5188stc 于 2023-6-26 22:05 编辑

有没有大佬用普通IO脚做过触摸按键,教一下该怎么搞,我现在在玩stc8G1K08,想弄一个触摸按键。
回复 送花

使用道具 举报

该用户从未签到

0

主题

5

回帖

82

积分

注册会员

积分
82
发表于 2023-7-17 10:58:17 | 显示全部楼层
我以前做过   程序和硬件要配合调试
回复 支持 反对 送花

使用道具 举报

该用户从未签到

557

主题

9695

回帖

1万

积分

管理员

积分
14162
发表于 2023-7-17 19:43:44 | 显示全部楼层
改用 STC8H1K08T-33I-TSSOP20, 内置硬件触摸按键模块
1.png

1.png

回复 支持 反对 送花

使用道具 举报

  • TA的每日心情

    2023-12-5 19:37
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    3

    主题

    325

    回帖

    363

    积分

    禁止发言

    积分
    363
    发表于 2023-9-24 02:13:37 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    15 小时前
  • 签到天数: 159 天

    [LV.7]常住居民III

    39

    主题

    903

    回帖

    4320

    积分

    荣誉版主

    积分
    4320
    发表于 2023-9-24 09:27:51 | 显示全部楼层
    WangChong 发表于 2023-9-24 02:13
    触摸按键不是跟普通按键的功能都是一样的吗 没有什么区别啊

    不一样.

    触摸按键 是电容感应输入(内部是模拟电压输入, 输入阻抗高), 抗干扰性差.

    普通按键 是高低电平输入(输入阻抗低), 抗干扰性极强.
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-1-21 18:40
  • 签到天数: 2 天

    [LV.1]初来乍到

    4

    主题

    21

    回帖

    136

    积分

    注册会员

    积分
    136
    发表于 2023-10-11 01:18:30 来自手机 | 显示全部楼层
    触摸按键是一个电容啊,你用普通io肯定不行,用adc吧
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-3-13 21:06
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    10

    回帖

    109

    积分

    注册会员

    积分
    109
    发表于 2023-10-17 14:24:37 | 显示全部楼层
    本帖最后由 LiHooo 于 2023-10-17 14:32 编辑

    一、通过电阻方式实现触摸
    普通IO口设置成“输入模式”,通过人体充当导体来输入低电平。程序中直接读入IO口的值即可。
    IO口上接上拉电阻,R1大约几百K~几M(越大越灵敏也越容易被干扰),C1是滤波电容,也可以稍微的预防人体静电对MCU的损坏,在这里取100pF~470pF。
    缺点也很明显:1、受环境湿度和手指湿度影响。2、容易被静电损坏。3、触摸的金属片露在空气中容易被氧化。

    截图202310171259464677.jpg

    二、通过电容方式实现触摸
    电容触摸键一般是PWM+ADC来实现的。
    高频脉冲输出到触摸级片上,用ADC来检测极片上经过滤波后的电压。
    在STC15系列的数据手册上有详细的介绍。

    截图202310171335491531.jpg

    此外,还有一种思路是通过电容充放电的方式实现。
    1.IO口设置为开漏输出模式。
    2.IO口输出“0”,让外部寄生电容放电。
    3.IO口输出“1”(即开漏悬空状态),让外部的上拉电阻给寄生电容充电。与此同时开始计时。
    4.当IO口检测到“1”时停止计时。
    5.当计时时间变大说明检测到触摸动作。
    以1~5循环检测。
    原理:
    当手指靠近或隔着绝缘物触摸极片时,人体对地电容极片的寄生电容并联,使步骤3中的充电时间变长。

    截图202310171402263537.jpg
    充电过程。纵坐标是IO口上的电压,VIH1是单片机检测到“1”的电压阈值,在数据手册中有说明(此电压与本文关系不大)。
    黄线是未触摸的充电曲线,绿线是触摸的充电曲线
    截图202310171417168194.jpg
    截图202310171414401207.jpg

    当电容发生变化时,充电至VIH1的时间也会发生变化。

    截图202310171417396585.jpg
    个人博客www.lihooo.top
    回复 支持 1 反对 0 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    8

    回帖

    42

    积分

    新手上路

    积分
    42
    发表于 2023-10-21 08:40:19 | 显示全部楼层
    触摸按键自带高级感,因无机械部件,使用寿命很长,当然,也不可避免存在触摸不灵或易受干扰等问题。
    用普通IO端口(非ADC端口)模拟触摸按键应该是可以的,但一定需要前置硬件电路的配合(不仅仅是软件),建议参考常用的延时触摸开关(核心是多施密特非门)来设计。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    13 小时前
  • 签到天数: 143 天

    [LV.7]常住居民III

    10

    主题

    220

    回帖

    570

    积分

    高级会员

    积分
    570
    发表于 2023-12-25 09:17:35 | 显示全部楼层
    学习了
    回复 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-1 22:24 , Processed in 0.068406 second(s), 64 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表