微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 消费类电子 > 电容触摸传感的理论框架

电容触摸传感的理论框架

时间:08-14 来源:互联网 点击:
考虑到美观、整洁和成本效益等方面的因素,在包括消费类电子产品、家用电器等在内的许多电子产品中,触摸传感应用正变得越来越流行。本文将讨论与电容触摸传感">电容触摸传感工作相关的基本概念,以及如何简便地实现电容触摸传感">电容触摸传感功能。

  电容的相关物理性质

  为了更好地理解在电容触摸传感">电容触摸传感应用的硬件、布线和软件开发中需要采取哪些措施,了解它内在的物理性质非常重要。控制它的是两个基本公式和一个常识。第一个公式(见公式1)用于求电容值,它说明如何根据极板模型使用面积、距离和材料属性来定义电容。第二个公式(见公式2)说明电容电压与电流的关系,并引入RC电路的充电速率(等于时间常数τ)。第三个公式(见公式3)说明并联电容的总电容值等于两者相加。



  公式1是双极板电容的模型。它适用于触摸传感应用,因为在将手指靠近传感器极板时,手指的作用也类似于一个极板。传感器具有一定的标称电容C1(由于走线、附近的地线等原因而产生)。将手指靠近时,距离“d”下降,而和A上升,并引入了并联的附加电容“C2”。所产生的效果就是传感器线路上的电容上升,上升值等于附加电容C2。然后,软件必须通过硬件(向单片机中输入传感器读数)来检测电容变化。硬件将利用公式2(充电时间公式)的某种形式向单片机传达传感器读数。

  传感器设计

  传感器设计通常很简单。设计布线时,需要注意容性耦合效应及其关联的物理性质。焊盘的面积及覆盖在其上方的材料的厚度是最关键的因素。对于小键盘类型的应用,传感器的大小应当至少为将手指按平时,指尖面积的大小。根据公式1中的面积“A”,传感器较大时,其传感能力通常也较好。此外,人们并不一定能够恰当地控制手指的放置位置(从而控制产生的电容),而不同的两个人也不会具有完全相同的电容。所以,传感器的容限必须尽可能很大,可以处理遇到的各种触摸情况,同时准确地报告按下状态。

  有些时候,指尖大小的传感器并不总是最佳的。作为一条准则,传感器焊盘上方的材料越厚,焊盘就必须越大,才能检测到是否有手指按下。这是因为根据公式1,当传感器焊盘上方的材料厚度增加时,距离“d”就会增大,从而手指的电容就会下降。对于需要非常精确的传感器控制的应用(例如,传感器很小),如果材料覆盖层很厚,则最终会限制传感器检查按下状态的能力。因此,如果传感器非常小,覆盖层必须尽可能薄。此外,如果非常小的传感器相互紧邻,还会产生容性耦合,在传感器之间布置接地电路可以减少这种耦合效应。此外,还可以使用一些软件技巧来辨别相互耦合程度很高的传感器。

  用于捕捉传感器数据并将其转换为数值(读数)的硬件可采用许多方式开发。在电容触摸传感">电容触摸传感设计中,用硬件区分不同单片机供应商针对此应用推出的产品。根据公式2,可以测量和电流与电压关系有关的3个基本量:

  1. 充电至固定电压需要的时间变化量(Δt,固定V);

  2. 固定充电时间内的电压变化量(ΔV,固定t);

  3. 固定时间周期中的频率变化量(Δf,固定T) 。

  频率测量方案基于充电速率公式(重复许多次),但它对应于较长的周期T,而不是单个充电周期t。所以,充电至固定电压需要的时间变化量(Δt,固定V)和固定充电时间内的电压变化量(ΔV,固定t),定义了检测电容变化的基本方法。根据需要,可以基于这些基本方法来构造新的测量方案。

  对于测量充电至固定电压需要的时间变化量这种方法,手指产生的附加电容会增加充电时间(C上升),所以时间读数会相应地上升。对于测量固定充电时间内的电平变化量这种方法,附加电容会降低相同时间量内所能达到的电压,所以电压读数会下降。最后,对于测量固定时间周期中的频率这种方法,频率会随振荡器RC常数的上升而下降。因此,频率读数会下降。

  本文以频率测量方案为例进行说明,但每个系统都会应用后处理方案。使用一种方案时,电容读数可能会上升,而使用另一种方案时,电容读数可能会下降,但这可以在软件中调整。选择了硬件方案之后,读数将根据请求输入单片机,或按照软件配置指定的其他时间间隔输入单片机。

  单片机软件与后处理

  单片机中的软件负责处理电容触摸传感">电容触摸传感应用中的许多工作,前提是硬件和传感器均正常工作。传感器和整个系统的质量越好,软件的实现就越简单。开发软件之前,需要记住每个传感器都具有一定的固有寄生电容:Cp(或公式3中的C1)。因此,每个传感器都可以检测到某个标称值。通过观察传感器的输出,可以直观方便地确定它,但必须先在软件中设定该标称值,然后才能以此为基准计算相对于它的偏差。实现它的最好方式是创建一个滑动平均值——即,16 点平均值。通过存储先前16个值来计算平均值的效率很低,所以改为使用一种看起来较复杂,但计算较简单、可节省存储空间的求均值方法。

  与具有极强计算能力的较大的计算机处理器相比,单片机通常在这方面受到限制。与实际执行除法相比,使用移位、加法和减法可以降低性能损失。此外,这个求均值程序并不仅限用于电容触摸传感">电容触摸传感——它对于8位单片机的很多应用都非常有用。

  确定了平均值后,接下来必须构造传感器扫描循环,目的是监视相对于平均值的偏差。从一个简单循环开始,如图1流程图所示。扫描循环使用中断来驱动,并使用两个定时器和频率偏移检测方法。Timer0决定固定的时间周期T,在该时间周期内,将测量进入Timer1捕捉模块的正边沿数量,然后它产生一个频率测量值。正边沿数量越多,说明频率越高。准备好获取测量值时,Timer0发生溢出以触发中断,而Timer1会测量正边沿数量。流程图的“捕捉读数”框显示了何时获取读数。



  下一步是确定按钮是否被按下。如果按钮未被按下,则继续对传感器读数求均值。如果按钮被按下,则不对传感器读数求均值,也就是说它将继续一直跟踪读数(通常这不是所期望的)。然后,通过在C代码中使用位标志或通过其他方式,向应用程序代码指示按钮已被按下。不要在中断服务程序(ISR)中调用需要大量进一步计算的程序——较好的做法是设置一个标志,让主循环进行响应。

  此时,如果只有单个按键,则按照基本方法的描述,通过将定时器清零或将电容对地放电来重新开始测量过程。如果存在多个按键,则按顺序扫描每个按键。按照图1中的流程图,基本的系统可以定期扫描按键。

  尚待讨论的是如何确定按键是否被按下。最需要考虑和注意的是图1中的“按键是否被按下?”判断块的细节。这将在下一步讨论。

  为了确定按键是否被按下,需要先确定滑动平均值。确定平均值之后,根据测量值相对于平均值的偏差可以指示按键是否被按下。对于我们的系统,读数下降表示按键按下。因为涉及到一些环境效应和其他因素(例如噪声),所以必须设置一定的容限。但是,该系统未提供迟滞值,若读数在均值与判决门限值之差附近上下变化,就会出现系统在判定按下与未按下之间来回振荡这一糟糕的情形。为了避免这一点,需要包含迟滞值:

  if (reading < average – trip) {

  Buttons.SENSOR0 = PRESSED;

  } else if (reading > average – trip + hyst) {

  Buttons.SENSOR0 = UNPRESSED;

  }

  以上代码在按钮释放中增添了迟滞值,使按钮不会产生振动。这也为电容开关构造了最低程度的消抖功能。机械按钮会在0-VDD之间来回抖动。电容按钮不会产生该问题;但是,通过增添迟滞值,按钮按下的操作与原来无异,只是加强了对按钮释放的判断。这可以产生最低程度的消抖效果,因为单次按下仍然可以触发按键。要进一步增强消抖,可以要求连续几次的传感器读数均有效,才表示按钮确实按下,然后向应用程序指示按钮被按下。这样可以防止虚假的低读数影响系统。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top