【YL-KL26Z试用】触摸按键的使用

作者: 枫飞
上传时间为: 2015-08-24 09:01 AM

触摸按键是第一次接触,觉得蛮有意思的,所以最先尝试下


就电路图而言,触摸式按键真没啥,也确实,其实板子上貌似也就层塑料,看起来很普通,但实现效果还是蛮炫的。
原理呢是利用人手接触改变电容大小来实现的,通俗点,你手触摸到哪个位置,那里的电容就会发生变化,检测电路就会检测到,并将由于电容改变而带来的模拟信号的改变转化为数字信号的变化,进行处理!
详细点说PCB材料构成基本电容,PCB上大面积的焊盘(触摸按键)与附近的地构成的分布电容,由于人体电容的存在,当手指按上按键后,改变了分布电容的容量(原来的电容并上了人体电容),通过对PAD构成的分布电容充放电或构成振荡电路,再检测充放电的时间,或者振荡频率,脉冲宽度等方式可以检测电容容量的变化,继而可判断按键是否被按下。
电容式感应触摸按键实际只是PCB上的一小块覆铜焊盘,当没有手指触摸时,焊盘和低型号产生约5—10PF的电容值,我们称之为“基准电容”故为了PCB设计尽量达到这值,PCB需要进行更好设计!

这是网上找的,呵呵,借鉴借鉴,就这回事。
详情感兴趣的可以求下度娘。各家都有特色,我就不推荐了

看看程序。要实现触摸按键功能
首先得初始化

void TSI_Init (void)
{
  SIM_SCGC5 |= SIM_SCGC5_TSI_MASK;  // Enable clock gating for TSI
  /* Enable proper GPIO as TSI channels */
  PORTB_PCR16 = PORT_PCR_MUX(0);   // PTB16 as TSI channel 9
  PORTB_PCR17 =  PORT_PCR_MUX(0);   // PTB17 as TSI channel 10
  PORTC_PCR0 =  PORT_PCR_MUX(0);   // PTB17 as TSI channel 13
  NVIC_DisableIRQ((IRQn_Type)TSI0_IRQn);

  TSI0_GENCS |= (TSI_GENCS_ESOR_MASK
                   | TSI_GENCS_MODE(0)
                   | TSI_GENCS_REFCHRG(4)
                   | TSI_GENCS_DVOLT(0)
                   | TSI_GENCS_EXTCHRG(7)  
                   | TSI_GENCS_PS(4)
                   | TSI_GENCS_NSCN(11)
                   | TSI_GENCS_TSIIEN_MASK 
                   | TSI_GENCS_STPE_MASK
                   //| TSI_GENCS_STM_MASK     //Trigger for the module 0=Sofware 
                   );
  
  TSI0_GENCS |= TSI_GENCS_TSIEN_MASK; 
  
  TSI_SelfCalibration();
}

仔细看下程序,可以看出与其他厂家芯片接触摸屏原理是不同的。此处采用TSI的方式。什么叫TSI channels?具体的GPIO定义就得研究手册了。
板子的mcu是MKL26Z128VLH4,查看其对应datasheet

居然还真有TSI channels的介绍,由此不得不感慨freescale的强大,居然还有这功能

关于TSI详细的可以看datasheet的43章,关于怎么使用TSI讲的算很详细了,本人就不在此献丑了。
这个功能其实很有用,可以用于许多场合,像汽车电子方面,智能家居,可穿戴设备上,用来检测电压电流还是很棒的。
这块芯片可支持16个通道,即可支持16种设备的检测,想想就可以做很多事情。

最后程序编译下载

其实从原理图可以看见触摸按键其实和led之前的电路没有任何关系,完全独立的,但放在一起,实现的效果确实蛮有意思的。

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示