搜索
bottom↓
回复: 385

轻轻松松实现电容感应按键

  [复制链接]

出0入0汤圆

发表于 2009-3-8 14:48:24 | 显示全部楼层 |阅读模式
RC充放电原理电容感应按键

(原文件名:图形1.jpg) 看过PIC的电容按键方案,实际上仅仅是一个充放电过程,可以不用比较器吗?
答案是肯定的。一般双向I/O单片机都可以做RC电容感应按键。
这里我们用M48的端口PD0来做一个RC的电容感应按键。

(原文件名:图形2.jpg)
C1是分布电容,C2这里作为按键感应电容。
工作过程:
1:首先要禁止上拉电阻。
2:PD0输出高电平,向C1,C2充电。
3:PD0设置为输入,判断C1.C2向R1放电完毕的时间。
4:对比有C2和没有C2的放电时间,判断是否有键感应。
如图在只有C1的时候放电波形,放电时间测量为4.1us

(原文件名:图形3.jpg)
如图在有C2感应的时候放电波形,放电时间测量为5.58us

(原文件名:图形4.jpg)
可见有按键感应比无按键感应的放电时间要多1.48us。
下面关键的是怎样测量放电时间:
通常我们设置一个变量d,通过循环等待判断PD0是否=0来使变量d递增。判断完毕后,放电时间的短d最终值就小(无按键感应),放电时间长的d最终值就大(有按键感应)。
判断代码:
while(PIND_0==0)d++;
对应汇编代码:
main_0:
SBIC    0x09, 0x00
RJMP    main_1
INC     R18
RJMP   main_0
main_1:
通过汇编代码发现运行判断一次要5T时钟,
当时钟频率为1M时候,运行判断一次要5T时钟5us。
1.48/5=0.296   不足1个字。判断不出来。
当时钟频率为8M时候,运行判断一次要5T时钟0.625us。
1.48/0.625=2.368  约2-3个字。这个差值还是太小
当然这里的感应电容是1p,如果感应电容值变大也许能够识别出来。
这也许就是PIC的方案为什么采用比较器的缘故,硬件判别嘛,肯定要小于5T时钟。
我们可以采用定时器来代替变量d,这样运行判断一次就只需要3T时钟了(每次判断前开启定时器,每次判断完成后读取定时器值),判断代码如下:

//开定时器
while(PIND_0==0);
//读定时器值
对应汇编代码:
main_0:
SBIS    0x09, 0x00
RJMP    main_1
main_1:
通过汇编代码发现运行判断一次要3T时钟,
当时钟频率为1M时候,运行判断一次要3T时钟3us。
1.48/3=0.50  不足1个字。判断不出来。
当时钟频率为8M时候,运行判断一次要3T时钟0.375us。
1.48/0.375=3.95  约3-4个字。这个差值基本可以了。
可见这里要保证的是时钟频率要高。
采用8M频率,每次差值3-4,采样100次求和作为1次总采样。差值就相差300-400,就可以准确判断感应按键了。当然采样10次或者更多次总采样后采用求平均值等软件滤波方法来消除干扰或者误差更好。
另一种方法就是在10ms时间内求得判断的次数,有按键感应的判断次数比无按键感应次数少。基本和PIC的方案差不多。
以上方法笔者都试验过(见图),具体的程序,以及温漂,校准等这里就不详细讲解。

(原文件名:图形5.jpg)

(原文件名:图形6.jpg)

电荷转移(QT)原理电容感应按键
如图:
(原文件名:sensor072946m3.gif)
“电荷转移”或叫“QT”的原理是这样的:传感电极上的电荷会转移到一个较大的参考取样电容器上,电荷 在该电容器上积累,持续多个开关周期,将参考电容器上的电压积累到参考电压的水平,然后控制 逻辑电路会记录到达该电压值所需要的周期数目,并对参考电容器进行放电。
如图用M48的PD0和PD1端口来实现。

(原文件名:图形7.jpg)
C1是分布电容,C2这里作为按键感应电容。C3是参考电容。
工作过程:
1:首先要禁止上拉电阻。
2:PD0=0,PD1为高阻或者为0输出,放掉C3上电荷。
3:PD1输入(高阻断开)PD0输出高电平,向C1,C2充电。
4:PD0输入(高阻断开),PD1输出低电平C1.C2上的电荷向C3转移。
5:判断PD0是否为高电平。
6:循环3-5步骤。
比较:有按键感应比无按键感应的开关次数少。
这种原理是测量C3上的电压,因此对频率要求不是很高,但要求I/O脚漏电流越小越好,同时I/O内部的二极管漏电流也有影响。
该方法笔者试验过,具体的程序,以及温漂,校准,焊盘影响等这里就不详细讲解。
估计有很多电容感应IC就是以上原理做的,仅仅是估计呀,不过懂了原理后你也可以自己做。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入45汤圆

发表于 2009-3-8 15:57:22 | 显示全部楼层
R1的电阻有点小,1-2M比较合适,可以延长放电时间,有手按下和没有按下会有比较明显的变化

出0入0汤圆

发表于 2009-3-8 16:37:52 | 显示全部楼层
这个要支持

出0入0汤圆

发表于 2009-3-8 17:00:42 | 显示全部楼层
顶了

出0入0汤圆

发表于 2009-3-8 17:13:09 | 显示全部楼层
顶,我也试着做做看。。。

出0入4汤圆

发表于 2009-3-8 17:28:16 | 显示全部楼层
zhichi

出0入0汤圆

发表于 2009-3-8 17:42:19 | 显示全部楼层
赞一个

出0入0汤圆

发表于 2009-3-8 18:31:05 | 显示全部楼层
顶一个,试着做一个

出0入0汤圆

发表于 2009-3-8 18:36:52 | 显示全部楼层
留名学习

出0入0汤圆

发表于 2009-3-8 18:38:16 | 显示全部楼层
学习了

出0入12汤圆

发表于 2009-3-8 21:22:45 | 显示全部楼层
多谢,看明白qt了。我也试试。

出0入0汤圆

发表于 2009-3-8 21:46:02 | 显示全部楼层
mark!

出0入12汤圆

发表于 2009-3-8 22:23:00 | 显示全部楼层
用m16的两个端口,按照楼主的qt原理,做了一下,感觉效果相当明显!

出0入0汤圆

发表于 2009-3-8 23:38:19 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-8 23:39:56 | 显示全部楼层
这篇文章得顶,前段时间还在自己琢磨着电容触摸按键的原理,基本想法和楼主一样  哈哈,这下可以放心大胆的去做啦

出0入0汤圆

发表于 2009-3-8 23:48:42 | 显示全部楼层
很好~~mark

出0入0汤圆

发表于 2009-3-9 00:03:42 | 显示全部楼层
学习了!谢谢。

出0入0汤圆

发表于 2009-3-9 00:33:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-9 02:46:20 | 显示全部楼层
学习了

出0入0汤圆

发表于 2009-3-9 08:03:32 | 显示全部楼层
支持一个

出0入0汤圆

发表于 2009-3-9 09:07:06 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-9 09:07:53 | 显示全部楼层
不过这种方案,要动作的时候还是得接触吧,就是说还是要把键按下去吧?

出0入0汤圆

发表于 2009-3-9 10:04:20 | 显示全部楼层
支持!

出0入0汤圆

发表于 2009-3-9 10:06:07 | 显示全部楼层
如此好贴应该顶起来,希望再接再历,把抗干扰等算法搞定。

出0入0汤圆

发表于 2009-3-9 10:23:54 | 显示全部楼层
实际中能够用吗?抗干扰什么的。

出0入0汤圆

发表于 2009-3-9 11:35:27 | 显示全部楼层
MARK!学习了!

出0入0汤圆

发表于 2009-3-9 11:37:15 | 显示全部楼层
学习了

出0入0汤圆

发表于 2009-3-9 11:48:35 | 显示全部楼层
学习了

出0入0汤圆

发表于 2009-3-9 12:04:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-9 13:03:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-9 13:59:18 | 显示全部楼层

出0入0汤圆

发表于 2009-3-9 21:01:46 | 显示全部楼层
众里寻它千百度,终于在这里找到这样的好贴了。。。

出0入0汤圆

发表于 2009-3-9 21:09:51 | 显示全部楼层
好贴啊!

出0入0汤圆

发表于 2009-3-10 10:46:20 | 显示全部楼层
mark 一下

出0入0汤圆

发表于 2009-3-10 11:02:26 | 显示全部楼层
mark!

出0入0汤圆

发表于 2009-3-10 11:06:33 | 显示全部楼层
楼道灯的触摸开关,它肯定没有用单片机的,请问怎么实现的?

出0入0汤圆

发表于 2009-3-10 11:08:23 | 显示全部楼层
mark学习

出0入0汤圆

发表于 2009-3-10 11:09:25 | 显示全部楼层
强贴强顶

出0入0汤圆

发表于 2009-3-10 12:45:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-10 13:11:14 | 显示全部楼层
mark

出0入168汤圆

发表于 2009-3-10 13:22:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-10 16:33:34 | 显示全部楼层
学习

出0入0汤圆

发表于 2009-3-10 17:14:59 | 显示全部楼层
顶!好好研究下!

出0入0汤圆

发表于 2009-3-13 09:33:26 | 显示全部楼层
和QT的说明好象不太一样

出0入0汤圆

发表于 2009-3-13 11:00:29 | 显示全部楼层
与35楼同问

出0入0汤圆

发表于 2009-3-13 11:15:28 | 显示全部楼层
【35楼】 yulutong 土土狗
楼道灯的触摸开关,它肯定没有用单片机的,请问怎么实现的?

那是触摸芯片,而楼主说的是感应芯片。触摸开关确实没用单片机,它是直接接触电极,由人体与地形成回路,触发可控硅导通实现的。

出0入12汤圆

发表于 2009-4-1 22:58:01 | 显示全部楼层
程序ourdev_431670.rar(文件大小:821K) (原文件名:m8.rar)

(原文件名:电路图.jpg)


(原文件名:抓图.jpg)

用的是mega8L,算法不太好,感觉稳定性还可以。

--------------------------------------------
增加开、关灯 程序+电路 点击此处下载 ourdev_432195.rar(文件大小:837K) (原文件名:电容点灯.rar)


(原文件名:点灯.jpg)

出0入0汤圆

发表于 2009-4-21 12:42:34 | 显示全部楼层
原来这就是QT原理,哪QT比起第一种方法有什么优点没有呢?

出0入0汤圆

发表于 2009-7-30 09:48:40 | 显示全部楼层
46L的会不会麻手呢?

出0入12汤圆

发表于 2009-7-30 10:10:00 | 显示全部楼层
46楼不会手麻,因为还隔着1~5毫米厚的塑料。

出0入10汤圆

发表于 2009-7-30 10:58:21 | 显示全部楼层
厉害!有时间锝做一个

出0入0汤圆

发表于 2009-7-30 13:02:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-7-30 13:45:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 17:47:33 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-8-7 19:12:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 19:25:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 19:59:23 | 显示全部楼层
MARK一下。

出0入0汤圆

发表于 2009-8-7 20:03:44 | 显示全部楼层

出0入0汤圆

发表于 2009-8-7 20:33:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 21:02:16 | 显示全部楼层
不错!

出0入0汤圆

发表于 2009-8-7 21:04:32 | 显示全部楼层
flag

出0入0汤圆

发表于 2009-8-7 21:34:33 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-8-7 21:40:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-7 21:58:08 | 显示全部楼层
学习了 电容电灯也不错啊 呵呵
触摸键有空做个

出0入0汤圆

 楼主| 发表于 2009-8-8 07:30:38 | 显示全部楼层
RC电容感应被ST开源出来了的,在
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3433822&bbs_page_no=1&search_mode=3&search_text=chenjianlin&bbs_id=9999
有AVR的RC电容感应完全流程。

出0入0汤圆

发表于 2009-8-8 08:31:36 | 显示全部楼层
学习!!

出0入0汤圆

发表于 2009-8-8 10:28:52 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2009-8-8 11:30:29 | 显示全部楼层
学习!ouravr总是不断有惊喜!

出0入0汤圆

发表于 2009-8-8 13:34:14 | 显示全部楼层
记号

出0入0汤圆

发表于 2009-8-8 13:53:43 | 显示全部楼层
支持~~

出0入0汤圆

发表于 2010-3-26 10:04:42 | 显示全部楼层
好贴,MARK!

出0入0汤圆

发表于 2010-3-27 23:06:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-28 00:21:27 | 显示全部楼层
好贴

出0入0汤圆

发表于 2010-3-28 09:34:07 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2010-3-28 09:58:51 | 显示全部楼层
好,mark

出0入0汤圆

发表于 2010-3-28 11:55:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-28 12:46:24 | 显示全部楼层
顶一下!

出0入0汤圆

发表于 2010-3-28 12:53:06 | 显示全部楼层
值得参考

出0入0汤圆

发表于 2010-3-28 16:36:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-28 16:39:16 | 显示全部楼层
学习了

出0入85汤圆

发表于 2010-3-28 17:28:51 | 显示全部楼层
mark

出0入70汤圆

发表于 2010-3-28 18:18:24 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2010-3-28 18:25:27 | 显示全部楼层
好贴

出0入0汤圆

发表于 2010-3-28 21:13:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-28 22:54:40 | 显示全部楼层
good

出0入0汤圆

发表于 2010-4-12 08:47:56 | 显示全部楼层
以前看的不是这个,还要简单一点。

出0入0汤圆

发表于 2010-4-12 09:00:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 09:25:19 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-4-12 09:36:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 10:01:41 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-4-12 10:32:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 10:53:12 | 显示全部楼层
不错,学习了~~~

出0入0汤圆

发表于 2010-4-12 12:25:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 12:47:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-4-12 13:33:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 17:01:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 17:10:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-12 19:11:55 | 显示全部楼层
顶一下!

出0入0汤圆

发表于 2010-4-12 20:45:30 | 显示全部楼层
顶下

出0入0汤圆

发表于 2010-4-12 23:13:35 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 17:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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