实现电容式触摸感应的电路和技术

出处:维库电子市场网时间:2024-12-25
  当然,仅仅电容变化这一事实并不是特别有用。为了实际执行电容式触摸感应,我们需要一个能够以足够的精度测量电容的电路,以一致地识别由于手指的存在而引起的电容增加。有多种方法可以做到这一点,有些非常简单,有些则更为复杂。在本文中,我们将介绍两种实现电容感应功能的通用方法;个基于 RC(电阻电容)时间常数,第二个基于频率变化。
  RC 时间常数——像老朋友一样

  如果您像我一样,当您看到代表充电或放电电容器两端电压的指数曲线时,您会体验到模糊的大学怀旧感。这是有道理的——也许这是我次意识到高等数学实际上与现实有某种关系,或者也许在这个葡萄收获机器人的时代,放电电容器的简单性有一些吸引人的地方。无论如何,我们知道当电阻或电容发生变化时,该指数曲线也会发生变化。假设我们有一个由 1 MΩ 电阻器和典型无指电容为 10 pF 的电容式触摸传感器组成的 RC 电路。

  我们可以使用通用输入/输出引脚(配置为输出)将传感器电容充电至逻辑高电压。接下来,我们需要电容器通过大电阻放电。重要的是要理解,您不能简单地将输出状态切换为逻辑低电平。配置为输出的 I/O 引脚将驱动逻辑低信号,即,它将为输出提供到接地节点的低阻抗连接。因此,电容器将通过这种低阻抗快速放电,放电速度如此之快,以至于微控制器无法检测到电容微小变化所产生的细微时序变化。这里我们需要的是一个高阻抗引脚,它将迫使几乎所有电流通过电阻器放电,这可以通过将引脚配置为输入来实现。因此,首先将引脚设置为逻辑高输出,然后通过将引脚更改为输入来启动放电阶段。产生的电压将如下所示:

  如果有人触摸传感器并因此产生额外的 3 pF 电容,时间常数将增加,如下所示:

  按照人类标准,放电时间没有太大差异,但现代微控制器肯定可以检测到这种变化。假设我们有一个时钟频率为 25 MHz 的定时器;当我们将引脚切换到输入模式时,我们启动计时器。我们可以使用该定时器来跟踪放电时间,方法是将同一引脚配置为启动捕获事件的触发器(“捕获”意味着将定时器值存储在单独的寄存器中)。当放电电压超过引脚的逻辑低阈值(例如 0.6 V)时,将发生捕获事件。如下图所示,阈值 0.6 V 的放电时间差为 ΔT = 5.2 s。

  当定时器时钟源周期为 1/(25 MHz) = 40 ns 时,该 ΔT 对应于 130 个时钟周期。即使电容变化减少 10 倍,未触摸的传感器和触摸的传感器之间仍然存在 13 个刻度的差异。
  所以这里的想法是对电容器进行重复充电和放电,同时监控放电时间;如果放电时间超过预定阈值,微控制器会假设手指已与触摸感应电容器“接触”(我将“接触”放在引号中,因为手指实际上从未接触过电容器 - 正如前面提到的)文章中,电容器通过阻焊层和设备外壳与外部环境隔离)。然而,现实生活比这里提出的理想化讨论要复杂一些;误差源将在下面的“处理现实”部分中讨论。
  可变电容、可变频率
  在基于频移的实现中,电容传感器用作 RC 振荡器的“C”部分,这样电容的变化会导致频率的变化。输出信号用作计数器模块的输入,该计数器模块对特定测量周期内出现的上升沿或下降沿的数量进行计数。当手指的接近导致传感器的电容增加时,振荡器的输出信号的频率降低,因此边沿计数也减少。
  所谓的张弛振荡器是可用于此目的的常见电路。除了触摸电容之外,还需要一些电阻和比较器;这似乎比上面讨论的充电/放电技术麻烦得多,但如果您的微控制器具有集成的比较器模块,那就还不错。我不打算详细介绍这个振荡器电路,因为 1) 它在其他地方讨论过,包括这里和这里,2) 当有许多微控制器和分立 IC 时,您似乎不太可能想要使用振荡器方法。提供高性能电容式触摸感应功能。如果您别无选择,只能创建自己的电容式触摸感应电路,我认为上面讨论的充电/放电技术更简单。否则,可以选择带有专用电容感应硬件的微控制器,让您的生活变得更简单。
  多路复用器允许通过八个不同的触摸感应电容器来控制振荡频率。通过快速循环通道,该芯片可以有效地同时监控八个触摸感应按钮,因为微控制器的工作频率相对于手指移动的速度来说非常高。
  面对现实
  电容式触摸感应系统会受到高频和低频噪声的影响。
  高频噪声会导致测得的放电时间或边沿计数出现微小的样本间差异。例如,上面讨论的无指充电/放电电路可能具有675个滴答的放电时间,然后685个滴答,然后665个滴答,然后670个滴答,等等。这种噪声的重要性取决于预期的手指引起的放电时间变化。如果电容增加 30%,则 ΔT 将为 130 刻度。如果我们的高频变化仅为 ±10 刻度左右,我们就可以轻松区分信号和噪声。
  然而,电容增加 30% 可能接近我们可以合理预期的变化量。如果我们只得到 3% 的变化,则 ΔT 为 13 个刻度,太接近本底噪声。减少噪声影响的一种方法是增加信号的幅度,您可以通过减少 PCB 电容器和手指之间的物理距离来实现这一点。不过,机械设计通常会受到其他因素的限制,因此您必须充分利用所获得的任何信号幅度。在这种情况下,您需要降低本底噪声,这可以通过平均来实现。例如,每个新的放电时间可以不与先前的放电时间比较,而是与4或8或32个放电时间的平均值进行比较。上面讨论的频移技术自动结合了平均,因为平均频率周围的小变化不会显着影响相对于振荡周期较长的测量周期内计数的周期数。
  低频噪声是指无指传感器电容的长期变化;这些可能是由环境条件引起的。这种噪音无法被平均,因为这种变化可能会持续很长一段时间。因此,有效处理低频噪声的方法就是具有适应性:用于识别手指存在的阈值不能是固定值。相反,应该根据没有表现出显着短期变化(例如由手指接近引起的变化)的测量值定期进行调整。
上一篇:如何使用继电器通过 Arduino 控制高压电路
下一篇:PWM 功率 DAC 包含 LM317

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关电路图