wsh5188stc 发表于 2023-6-26 22:05:23

用普通IO脚做触摸按键

本帖最后由 wsh5188stc 于 2023-6-26 22:05 编辑

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

俊达科技 发表于 2023-7-17 10:58:17

我以前做过   程序和硬件要配合调试

神农鼎 发表于 2023-7-17 19:43:44

改用 STC8H1K08T-33I-TSSOP20, 内置硬件触摸按键模块




WangChong 发表于 2023-9-24 02:13:37

LAOXU 发表于 2023-9-24 09:27:51

WangChong 发表于 2023-9-24 02:13
触摸按键不是跟普通按键的功能都是一样的吗 没有什么区别啊

不一样.

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

普通按键 是高低电平输入(输入阻抗低), 抗干扰性极强.

ray 发表于 2023-10-11 01:18:30

触摸按键是一个电容啊,你用普通io肯定不行,用adc吧

LiHooo 发表于 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、触摸的金属片露在空气中容易被氧化。



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



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


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



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


zjlhhxd 发表于 2023-10-21 08:40:19

触摸按键自带高级感,因无机械部件,使用寿命很长,当然,也不可避免存在触摸不灵或易受干扰等问题。
用普通IO端口(非ADC端口)模拟触摸按键应该是可以的,但一定需要前置硬件电路的配合(不仅仅是软件),建议参考常用的延时触摸开关(核心是多施密特非门)来设计。

pangshijz 发表于 2023-12-25 09:17:35

学习了
页: [1]
查看完整版本: 用普通IO脚做触摸按键