电容触摸传感的理论框架
对于测量充电至固定电压需要的时间变化量这种方法,手指产生的附加电容会增加充电时间(C上升),所以时间读数会相应地上升。对于测量固定充电时间内的电平变化量这种方法,附加电容会降低相同时间量内所能达到的电压,所以电压读数会下降。最后,对于测量固定时间周期中的频率这种方法,频率会随振荡器RC常数的上升而下降。因此,频率读数会下降。
本文引用地址:https://www.eepw.com.cn/article/96399.htm本文以频率测量方案为例进行说明;但每个系统都会应用后处理方案。使用一种方案时,电容读数可能会上升,而使用另一种方案时,电容读数可能会下降,但这可以在软件中调整。选择了硬件方案之后,读数将根据请求输入单片机,或按照软件配置指定的其他时间间隔输入单片机。对于本文中的示例,传感器读数下降代表按键按下。
单片机软件与后处理
单片机中的软件负责处理电容触摸传感应用中的许多工作,前提是硬件和传感器均正常工作。传感器和整个系统的质量越好,软件的实现就越简单。开发软件之前,需要记住每个传感器都具有一定的固有寄生电容:Cp(或公式3中的C1)。因此,每个传感器都可以检测到某个标称值。通过观察传感器的输出,可以直观方便地确定它。但必须先在软件中设定该标称值,然后才能以此为基准计算相对于它的偏差。实现它的最好方式是创建一个滑动平均值——即,16点平均值。通过存储先前16个值来计算平均值的效率很低,所以改为使用一种看起来较复杂,但计算较简单、可节省存储空间的求均值方法。以下代码执行求均值过程。。是传感器读数值,作为16位无符号值或变量。
reading = ; // 传感器
bigval = reading << 4; // 乘以16
smallavg = average >> 4; // 除以16
average += reading – smallavg; // 求均值
与具有极强计算能力的较大的计算机处理器相比,较小的单片机通常在这方面受到限制。与实际执行除法相比,使用移位、加法和减法可以降低性能损失。此外,这个求均值程序并不仅限用于电容触摸传感——它对于8位单片机的很多应用都非常有用。
在本文提供的大多数示例和算法中,每次将仅讨论一个传感器。只需在软件中使用值的数组,通过添加数组中的元素来增加传感器数量,即可使之与硬件匹配(即,average[0]..average[N])。
现在,已经确定了平均值,接下来必须构造传感器扫描循环,目的是监视相对于平均值的偏差。从一个简单循环开始,如图1中的流程图所示。扫描循环使用中断来驱动,并使用两个定时器和频率偏移检测方法。Timer0决定固定的时间周期T,在该时间周期内,将测量进入Timer1捕捉模块的正边沿数量,然后它产生一个频率测量值。正边沿数量越多,说明频率越高。准备好获取测量值时,Timer0发生溢出以触发中断,而Timer1会测量正边沿数量。流程图的“捕捉读数”框显示了何时获取读数。
评论