根据microchip AN1298介绍的原理搞的单键电容触摸

2020-02-06 10:00发布

根据AN1298介绍的原理搞的单键电容触摸。原理介绍如下文:

To perform the sensing, do the following:
1. Drive secondary channel to VDD as digital
output.
2. Point ADC to the secondary VDD pin (charges
CHOLD to VDD).
3. Ground sensor line.
4. Turn sensor line as input (TRISx = 1).
5. Point ADC to sensor channel (voltage divider
from sensor to CHOLD).
6. Begin ADC conversion.
7. Reading is in ADRESH:ADRESL.

实际测试采用的平台是pic16f883,使用其an0(ra0)作为传感器,连接一个3*2cm的单面覆铜板作为感应键。另外用其an1(ra1)作为充电的电源,采用5V供电的Vdd。
AN1作为模拟输入,用个电阻电容连接正电源;AN0作为感应电容的输入端。程序中ad_key是全局变量。
程序功能已经实现,可以视感应金属片的大小设置响应动作的门限电平,在灵敏度和稳定性方面取得综合平衡。

//************AD keying**************
unsigned int ADkey(void)
{

ANSEL=2;                         //AN0转为数字口
TRISA0=0;                        //给an0外电路放电
RA0=0;                             //防止该口残留影响
ANSEL=3;                         //AN0转为模拟口
TRISA1=1;                        //对an1进行ad
ADCON0=0X85;                 //让电容Chold在an1口充电
GODONE=1;                      //启动AD
while (GODONE);                //等待转换结束
TRISA0=1;                        //转换该口为模拟输入
ADCON0=0X81;                 //让电容Chold转向an0
GODONE=1;                      //启动AD
while (GODONE);                //等待转换结束
ad_key=ADRESH*256+ADRESL;
return ad_key;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
bowen_fang
1楼-- · 2020-02-07 11:35
能贴一下硬件图吗?
helix
2楼-- · 2020-02-07 12:33
 精彩回答 2  元偷偷看……
zou_hao1989
3楼-- · 2020-02-07 14:00
回复【6楼】wxyijian
-----------------------------------------------------------------------
深有体感,抗干扰很重要!!!
super3
4楼-- · 2020-02-07 17:51
2 comments:
1. 在外部sensor和internal cap进行电荷平衡后最好加几个nop(3-5个左右,太短没有完全平衡,灵敏度可能下降;太长的话,噪声会进入系统),保证电荷完全平衡,再进行ADC采样。
2. 按照我的理解,用AN1对internal cap充电的时候不需要设置go/done,只要改变adc的mux就可以。
dzdzwkx2013
5楼-- · 2020-02-07 19:02
留个脚印,以后再学
redchina
6楼-- · 2020-02-07 23:48
学习学习

一周热门 更多>