zoukankan      html  css  js  c++  java
  • 电容触摸技术实用教程

    电容触摸技术实用教程

    欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过设置里的修改模板来改变新建文章的内容。

    一 电容检测原理

    • 电容模型
      手指的电容模型介绍。如下图,
      enter description here
        正常情况下Cx=sensor本身的电容和环境的寄生电容。当手指靠近/按下时,会增加个手指的电容到这个Cx,增大Cx的电容。
        通过检测Cx的容值,就可以获知是否触摸以及其他的信息。
        触摸芯片的优点就是可以将非常小的的电容变化检测出来,并量化为更容易处理的数据。

    • 电容检测技术:电荷转移
      AZOTEQ采用的是电荷转移的技术实现。通过恒流源和开关的组合,结合计数器比较器来实现。简单的图示如下方所示。
      enter description here
      流程如下:
      1. S0闭合,S1打开,S2打开,恒流源给Cx充电,充满。
      2. S0打开,S1闭合,S2打开,Cx给Cs充电,充到Cx 电压与Cs相等。
      3. S0打开,S1打开,S2打开,比较基准源与Cs的电压,如果Cs电压大于基准源,则一次扫描完成,获得计数值,闭合S2,Cx放电到0V。
      4. 重复步骤1.

    • 互电容和自电容
      电容的扫描原理分为互电容扫描和自电容扫描。

      自电容扫描
      简单来说,自电容扫描就是自发自收的一种扫描方式。芯片测量的电容是电极相对于地面的电容。对应到芯片引脚的话就是一个引脚对应一个触摸通道。手或手指的接近会增加测量电容。
      enter description here
      互电容扫描
      芯片测量的电容是两个电极之间电容。每两个RX,TX之间的关系对应一个触摸通道。手或手指的接近会减少测量电容。
      enter description hereenter description here

    二 芯片内部重要名词解释

     下面给出一张图,结合图示来解释。这是一张互电容IQS360的上位机演示图。 
     enter description here
     1. LTA:长期平均值,通过长期采样COUNT平均滤波得到的数值,可以代表当前环境。
     2. COUNT:实时采样值,就是前面电容原理中的计数值。和LTA做差得到差值,如果超过门限值,则判断触发对应功能。
     3. Thresholds:门限,有触摸门限和接近门限,用于选择对应的灵敏度,数值设置的越小,越灵敏,可以看到第5个通道变红判定已触发,因为,变化量超过了设定的门限(24=400×6%)。通道0接近感应也已经触发,因为变化量大于接近门限。
     4. Target:目标值。这是通过软件设定的一个值,用于控制采样目标值(对应的是COUNT的高度)。包括接近感应通道和触摸通道分别有各自的一个目标值。可以看到图中,接近感应通道的高度为800,触摸通道的高度为400。
     5. ATI:自动调谐技术。芯片可以通过调节自身的电容以达到最优的灵敏度。事实上就是执行一次Re-ATI以后芯片会修改每个通道的Compensation和Multiplier两个寄存器的值,使count的值达到Target的范围。
     6. LP:通过间隔时间扫描接近感应通道的方式,实现低功耗。LP 设置越长,功耗越低,响应的触发反应时间会变长。如下图所示。
     enter description here
     接近触发后,会自动进入Boost模式。进行全速扫描。
     enter description here

     7. Halt time:在触摸按键触发时LTA是不学习的。Halt time指触摸按键触发时锁定要LTA的时间。当触发的时间超过设定的Halt time,对应的触摸按键通道会复位。如这个设置Halt time为20秒,当按下某个按键超过20秒的话,就会复位。
     8. Event Mode:在配置为事件模式后,只有在对应的事件触发的时候才会需要通信,可以节省主机的消耗。
     9. ATI_Partial:使能该位后,可以人为指定Multiplier这个寄存器的内容。执行ATI功能时只自动调节Compensation寄存器。一般用于快速初始化。

    三 OTP芯片介绍:iqs227

     OTP是One Time Programmable ,也就是一次编程的意思。简单来说就是寄存器中所有的位都只能烧一次,默认值都是零,烧成一以后不能恢复。这一点在研发调试的时候要特别注意。
     下面针对iqs227这个典型的OTP芯片进行介绍。这个芯片非常的简单,只有一个通道。OTP能够配置的的信息如下图所示。

    enter description here

    t9.png

     很多信息在第三章已经提到过就不再重复。

    • OUT Logic Select:输出逻辑的选择。默认是active low,常态高电平动态低电平,这个输出引脚实际上是开漏的需要接上拉电阻。可以选择为active high,是设置为推挽输出,常态低电平动态高电平。

    • Touch Function:触摸感应通道的输出方式,可以使直接输出或者是翻转输出。
      enter description here

    • Proximity Function:接近感应通道的输出方式,可以是直接输出或者是锁存输出。大概意思就是选择锁存输出以后,接近感应消失以后还有一定的延时时间输出。备注:常态高电平触发低电平。如下图所示。
      enter description here

    • Nosie Detect:噪声检测。需要在TOUT的引脚上接一根外部天线来检测对应频率上的干扰。在环境极其恶劣的情况下才会使用我们并不推荐。

    • Charge Transfer Frequency:充放电频率的选择,可以是512Khz和250Khz。一般也不推荐修改。

    • Streaming:流模式使能。那么芯片就不是直接输出的引脚功能了,而是采用通讯的方式来上报触摸信息触摸信息。一般在调试的时候才会选择这个功能,来确认触摸环境信息。

    • Streaming Method:可以选择一线制或者IIC通讯。
      enter description here

    四 触摸专用芯片介绍:iqs263

      IQS263是3通道的触摸芯片,支持互电容扫描和自电容扫描,两种工作方式,我们一般推荐用自电容。有移动检测的功能。芯片硬件可以计算出一个精度为0-255的滑条。基于滑条可以做一些点击滑动的手势判断。是目前3通道芯片里面功能最好的芯片。

    • 通用原理图
      如下图,其中,通信线为RDY,SDA,SCL,都需要接上拉电阻。RDY是通讯使能脚,当RDY为低电平时才支持通信。上电RDY引脚为方波。
      enter description here

    • 硬件滑条
       支持2/3键滑条,3键圆环滑条,需要相应的PCB硬件图案支持。一般选择为 2/3 通道自电容滑条的多。
        芯片提供可配置的原始值滤波器,角度滤波,和 debunce 的功能。
      enter description here
      enter description here
      enter description here

    • 事件模式
      enter description here

      • 事件模式下,只有设定的事件发生,RDY 才会拉低,通知主控来读取信息。最多支持 8 个事件。
        Flick Left:左滑手势事件。
        Flick Right:右滑手势事件。
        Tap:点击手势事件。
        Movement:移动检测事件。
        ATI:ATI相关事件。
        Slide:坐标值事件。
        Touch:触摸事件。
        Prox:接近感应事件。
        滑动手势事件:手指点击滑条,并移动一段距离并且离开。当接触的时间和移动的距离符合相应要求的时候可以触发。
        点击手势事件:手机点击滑条,并且离开。当接触的时间和移动的距离符合相应要求的时候可以触发。
        移动检测事件:当采样值的变化超过一定斜率,并且使能移动检测功能,可以触发。
        ATI相关事件:ATI完成/ATI error可以触发。本条待定。
        坐标值事件:当滑条值更新时触发。
        触摸事件:当滑触摸状态更新时触发。如某个按键按下或者弹起。
        接近感应事件:当滑接近感应状态更新时触发。
        注:一般默认配置 Bit7|Bit6|Bit5|Bit2|Bit1

      • 事件模式下复位处理

        配置完成,进入事件模式后,RDY 常高。一旦出现主机复位,触摸板没有复位的情况,主机再次进行初始化,会发现触摸板无法通讯,必须等到 RDY 拉低才能继续通信。
        解决: 提供函数 i2c_event_mode_handshake(void),通过主机强制拉低 RDY,再释放。触摸 IC会响应,触摸 IC 端会主动拉低一次 RDY,主机进行配置,将事件模式取消(RDY 恢复为方波)。待所有配置都完成,再配置为事件模式,结束通讯。

    五 触摸板芯片介绍:iqs525

      IQS525是一颗互电容触摸板芯片,至多可以做8 * 9的通道数,分辨率可以达到1792*2048。支持多点最多到5点。

    • 通用原理图
      其中,通信线为RDY,SDA,SCL。SDA,SCL需要接上拉电阻。RDY是通讯使能脚,当RDY为高电平时才支持通信。上电RDY引脚为方波。
      enter description here
      enter description here

    • 工作模式
      Normal Mode :正常扫描触摸板。开启一条Tx,然后扫描所有的Rx,然后切换下一条Tx,循环。在该模式下可以计算坐标值。
      ProxMode:是在扫描天线的模式。根据配置可以是自电容和互电容原理的天线。天线的灵敏度会比正常的触摸模式要好得多。当然硬件要符合设计规则。一般推荐单独的一个Rx做天线围绕板边一圈,然后所有的Tx都打开。这里配置的时候是可以选择用做接近感应功能的Tx和Rx。如下图所示。
      enter description here
      Automatic Mode:当该位置位的时候,在没有触摸的时候是在ProxMode。当ProxMode模式触发以后自动切换进入Normal Mode。当没有置位的时候,根据模式的选择一直处于某种模式扫描。
      Low Power:低功耗的时候就是降低扫描的频率。以上3种情况当进入低功耗的时候都会降低扫描的频率。等触发后自动进入全速模式。
      Event Mode:当时是事件模式置位的时候,只有在事件(接近/触摸)触发的时候才会上报信息。这个IQS263的要简单一些,没有那么多类型的事件。

    六 硬件layout

     请参考文档LSD 触摸Layout指南

    七 触摸板的手势应用处理

    • 本章节主要介绍基于单指的触摸手势处理框架,实现一些手势的判断。
      状态分析,横轴为时间轴。所有的触摸手势都符合下面的图示,在没有触摸的情况下,手指触摸触摸板,然后手指离开。
      enter description here
      据此可以得到4个触摸状态。

      1. Null

      2. Down

      3. Press

      4. Up

      针对这4种状态的具体情况可以做不同的处理。
      * 在Null的时候可以做一些状态清零。
      * 在Down的时候可以做一些数据记录。
      * 在Press的时候可以做一些手势判断、状态更新。
      * 在Up的时候可以做一些手势判断和状态清零。

    八 常见问题和解决办法

    • 硬件的性能是至关重要的,好硬件的触摸是很少会出问题的。需要从设计端直接避免出现不良的因素。

      • 面壳贴合不稳定问题:容易导致触摸误触发或不灵敏,建议用双面胶完全固定好再进行上电调试。

      • 面壳贴和有间隙影响灵敏度:空气间隙对灵敏度影响很大,必须完全贴和。

      • IIC通讯问题:强调必须RDY使能后,芯片才支持IIC通讯。并且建议客户用逻辑分析仪抓下完整波形,我们直接支持分析波形问题。

      • 硬件问题:检查上电RDY引脚是否为方波。借出CT210工具,查看硬件完整参数。

      • IQS227AS静电大电流问题,在VCC端串联100欧姆电阻可以解决。

      • 在灵敏度到接近极限的范围,可能出现触摸变化在门限附近抖动的情况,导致输出不稳定。一般采用双门限的方式处理,即当触发一个门限后,将该门限降低一定比率,防止触摸抖动影响到输出,完全释放后则恢复门限;也可以采用迟滞的方式处理,多做几次判断累计次数,达到一定次数后才做输出。

      • 电池供电的触摸,触摸触摸区域可以触发按键,触摸电池也可以触发按键。建议是,将电池和触摸按键的分布在一起,避免分布在2个远端。
        enter description here

      • 电池供电不考虑做接近感应。其实不推荐做接近感应。

  • 相关阅读:
    springmvc学习笔记--json--返回json的日期格式问题
    springmvc学习笔记--mybatis--使用插件自动生成实体和mapper
    velocity的一些用法
    String.split()用法以及特殊分隔符注意,ps:|
    Mybatis在idea中错误:Invalid bound statement (not found)
    maven中使用junit老是找不到包
    java字符编码和oracle乱码
    ehcache报错
    java继承覆盖与向上转型,权限
    java变量的加载顺序
  • 原文地址:https://www.cnblogs.com/zozo825117/p/5627227.html
Copyright © 2011-2022 走看看