amobbs.com 阿莫电子技术论坛
标题:
轻轻松松实现电容感应按键
[打印本页]
作者:
chenjianlin
时间:
2009-3-8 14:48
标题:
轻轻松松实现电容感应按键
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就是以上原理做的,仅仅是估计呀,不过懂了原理后你也可以自己做。
作者:
lyp103
时间:
2009-3-8 15:57
R1的电阻有点小,1-2M比较合适,可以延长放电时间,有手按下和没有按下会有比较明显的变化
作者:
qzzz
时间:
2009-3-8 16:37
这个要支持
作者:
af00
时间:
2009-3-8 17:00
顶了
作者:
155107149
时间:
2009-3-8 17:13
顶,我也试着做做看。。。
作者:
wajlh
时间:
2009-3-8 17:28
zhichi
作者:
xbq1001
时间:
2009-3-8 17:42
赞一个
作者:
ibq3100
时间:
2009-3-8 18:31
顶一个,试着做一个
作者:
deadleon
时间:
2009-3-8 18:36
留名学习
作者:
h2feo4
时间:
2009-3-8 18:38
学习了
作者:
kv2004
时间:
2009-3-8 21:22
多谢,看明白qt了。我也试试。
作者:
zhc7302
时间:
2009-3-8 21:46
mark!
作者:
kv2004
时间:
2009-3-8 22:23
用m16的两个端口,按照楼主的qt原理,做了一下,感觉效果相当明显!
作者:
eduhf_123
时间:
2009-3-8 23:38
MARK
作者:
252177861
时间:
2009-3-8 23:39
这篇文章得顶,前段时间还在自己琢磨着电容触摸按键的原理,基本想法和楼主一样 哈哈,这下可以放心大胆的去做啦
作者:
nhlijiaming
时间:
2009-3-8 23:48
很好~~mark
作者:
ssyniuej
时间:
2009-3-9 00:03
学习了!谢谢。
作者:
pinocchio
时间:
2009-3-9 00:33
mark
作者:
armfans
时间:
2009-3-9 02:46
学习了
作者:
cgbabc
时间:
2009-3-9 08:03
支持一个
作者:
deepin
时间:
2009-3-9 09:07
MARK
作者:
deepin
时间:
2009-3-9 09:07
不过这种方案,要动作的时候还是得接触吧,就是说还是要把键按下去吧?
作者:
lihq97
时间:
2009-3-9 10:04
支持!
作者:
QZDZ
时间:
2009-3-9 10:06
如此好贴应该顶起来,希望再接再历,把抗干扰等算法搞定。
作者:
jchqxl
时间:
2009-3-9 10:23
实际中能够用吗?抗干扰什么的。
作者:
xiaoyuanlu
时间:
2009-3-9 11:35
MARK!学习了!
作者:
banyan_city
时间:
2009-3-9 11:37
学习了
作者:
mfkqqw
时间:
2009-3-9 11:48
学习了
作者:
jj3055
时间:
2009-3-9 12:04
mark
作者:
bigfatfish
时间:
2009-3-9 13:03
mark
作者:
xiong_ls
时间:
2009-3-9 13:59
顶
作者:
lcw_swust
时间:
2009-3-9 21:01
众里寻它千百度,终于在这里找到这样的好贴了。。。
作者:
yhyf_heart
时间:
2009-3-9 21:09
好贴啊!
作者:
yaya001
时间:
2009-3-10 10:46
mark 一下
作者:
sunyouyuan
时间:
2009-3-10 11:02
mark!
作者:
yulutong
时间:
2009-3-10 11:06
楼道灯的触摸开关,它肯定没有用单片机的,请问怎么实现的?
作者:
ifree64
时间:
2009-3-10 11:08
mark学习
作者:
lxx_sea_sky
时间:
2009-3-10 11:09
强贴强顶
作者:
hibond
时间:
2009-3-10 12:45
mark
作者:
zhuzi1441
时间:
2009-3-10 13:11
mark
作者:
eiglxl
时间:
2009-3-10 13:22
mark
作者:
flyerhacker
时间:
2009-3-10 16:33
学习
作者:
hjjun
时间:
2009-3-10 17:14
顶!好好研究下!
作者:
dicat
时间:
2009-3-13 09:33
和QT的说明好象不太一样
作者:
Houcius
时间:
2009-3-13 11:00
与35楼同问
作者:
zrl700424
时间:
2009-3-13 11:15
【35楼】 yulutong 土土狗
楼道灯的触摸开关,它肯定没有用单片机的,请问怎么实现的?
那是触摸芯片,而楼主说的是感应芯片。触摸开关确实没用单片机,它是直接接触电极,由人体与地形成回路,触发可控硅导通实现的。
作者:
kv2004
时间:
2009-4-1 22:58
程序
ourdev_431670.rar(文件大小:821K)
(原文件名:m8.rar)
(原文件名:电路图.jpg)
(原文件名:抓图.jpg)
用的是mega8L,算法不太好,感觉稳定性还可以。
--------------------------------------------
增加开、关灯 程序+电路 点击此处下载
ourdev_432195.rar(文件大小:837K)
(原文件名:电容点灯.rar)
。
(原文件名:点灯.jpg)
作者:
jerico
时间:
2009-4-21 12:42
原来这就是QT原理,哪QT比起第一种方法有什么优点没有呢?
作者:
daicp
时间:
2009-7-30 09:48
46L的会不会麻手呢?
作者:
kv2004
时间:
2009-7-30 10:10
46楼不会手麻,因为还隔着1~5毫米厚的塑料。
作者:
chengtina
时间:
2009-7-30 10:58
厉害!有时间锝做一个
作者:
uestcduoduo
时间:
2009-7-30 13:02
mark
作者:
elain
时间:
2009-7-30 13:45
mark
作者:
mayis
时间:
2009-8-7 17:47
MARK
作者:
oufuqiang
时间:
2009-8-7 19:12
mark
作者:
yaonui
时间:
2009-8-7 19:25
mark
作者:
plc_avr
时间:
2009-8-7 19:59
MARK一下。
作者:
fandipeng412
时间:
2009-8-7 20:03
作者:
ds13512730250
时间:
2009-8-7 20:33
mark
作者:
jchqxl
时间:
2009-8-7 21:02
不错!
作者:
sunkmsr
时间:
2009-8-7 21:04
flag
作者:
shangxf
时间:
2009-8-7 21:34
不错
作者:
luld
时间:
2009-8-7 21:40
mark
作者:
xiaoning
时间:
2009-8-7 21:58
学习了 电容电灯也不错啊 呵呵
触摸键有空做个
作者:
chenjianlin
时间:
2009-8-8 07:30
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电容感应完全流程。
作者:
ggyyll8683
时间:
2009-8-8 08:31
学习!!
作者:
liujunjie
时间:
2009-8-8 10:28
mark!~
作者:
af00
时间:
2009-8-8 11:30
学习!ouravr总是不断有惊喜!
作者:
lichangan
时间:
2009-8-8 13:34
记号
作者:
guangan854214
时间:
2009-8-8 13:53
支持~~
作者:
wormchen
时间:
2010-3-26 10:04
好贴,MARK!
作者:
icevel
时间:
2010-3-27 23:06
mark
作者:
sino_design
时间:
2010-3-28 00:21
好贴
作者:
ppsen
时间:
2010-3-28 09:34
支持一下
作者:
zlutian
时间:
2010-3-28 09:58
好,mark
作者:
xuejianhua1986
时间:
2010-3-28 11:55
mark
作者:
thinki
时间:
2010-3-28 12:46
顶一下!
作者:
iam35200
时间:
2010-3-28 12:53
值得参考
作者:
lvyecc
时间:
2010-3-28 16:36
mark
作者:
kele2009
时间:
2010-3-28 16:39
学习了
作者:
bluefeel
时间:
2010-3-28 17:28
mark
作者:
PaulDE
时间:
2010-3-28 18:18
标记一下
作者:
autodash
时间:
2010-3-28 18:25
好贴
作者:
bigworms
时间:
2010-3-28 21:13
mark
作者:
qilin3
时间:
2010-3-28 22:54
good
作者:
leexue
时间:
2010-4-12 08:47
以前看的不是这个,还要简单一点。
作者:
sunzhaod
时间:
2010-4-12 09:00
mark
作者:
jielove2003
时间:
2010-4-12 09:25
学习了
作者:
abcdezh
时间:
2010-4-12 09:36
mark
作者:
flashman911
时间:
2010-4-12 10:01
MARK
作者:
smartzou
时间:
2010-4-12 10:32
mark
作者:
yusufu
时间:
2010-4-12 10:53
不错,学习了~~~
作者:
gpzdc986
时间:
2010-4-12 12:25
mark
作者:
vipcff
时间:
2010-4-12 12:47
MARK
作者:
renxupeng
时间:
2010-4-12 13:33
mark
作者:
alasika
时间:
2010-4-12 17:01
mark
作者:
lvwang2002
时间:
2010-4-12 17:10
mark
作者:
lionwang3
时间:
2010-4-12 19:11
顶一下!
作者:
hithyy
时间:
2010-4-12 20:45
顶下
作者:
jiangping_hbhm
时间:
2010-4-12 23:13
mark
欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/)
Powered by Discuz! X3.4