电容触摸传感的理论框架
时间:08-14
来源:互联网
点击:
复杂解码方案
上面用于确定按钮是否被按下的解码方案是相当简单的。
对于百分比按下检测,将继续使用前面讨论的求均值方案。但是,读数变量将变换为如下形式:
unsigned long percent;
percent = average – (reading*16);
if (percent < 0) {
percent = 0; // 忽略电容上升
} else {
percent = percent * 1000; // 乘以1000
percent = percent / average; // 结果使用100.0%的形式
}
结果变量percent包含0~1000的值,更具体地说,值的范围约为0~200(代表20.0%)。结果值保持单个小数位,因为更多小数位并不会提高精度。
更换先前的“if”语句,产生类似于以下语句的“if”语句:
#define PCT_ON 50 // >5.0%,打开
#define PCT_OFF 30 // <3.0%,关闭
if (reading < PCT_ON) {
Buttons.SENSOR0 = PRESSED;
} else if (reading > PCT_OFF) {
Buttons.SENSOR0 = UNPRESSED;
}
下一个复杂解码方案称为“多键表决”。如前面所讨论,传感器不仅会与手指和周围的地产生耦合,而且会相互耦合。因此,触摸一个传感器会影响另一个传感器,但影响程度通常会低于其他意外激励。如果即使影响程度较低,影响仍足以触发按下状态,会发生什么情况?
开发多键表决系统可以帮助解决该问题,以及与小键盘污染关联的其他问题。多键表决系统会选择按下后受影响最大的按键,代价是多次按下动作只能产生单个按键响应。例如,如果触摸会影响两个按键,但手指按下的按键受到的影响最大,该算法将选择受影响最大的按键。
该算法必须获取来自所有可用传感器的数据。举例来说,假定使用了4个传感器。算法还是使用百分比按下检测方法,因为每个传感器的读数可能会稍有不同,采用相对与原始值的偏差可以起到一些帮助。系统必须扫描全部4个传感器,并在扫描之后执行以下步骤:
1. 首先,扫描所有传感器;
2. 在每次扫描期间,记录每个传感器的受影响百分比;
3. 根据受影响程度进行排序;
4. 基于步骤3,对索引进行排序;
5. 位于数组单元0的传感器的受影响程度最高;
6. 确定是否大于最小门限值;
7. 指示按下/未按下。
代码示例1(略)
最后一个复杂解码方案也是百分比方案。百分比计算会占用8位单片机上可用存储器总空间中大量的程序和RAM存储空间,占用。在可能的情况下,最好降低这种存储器消耗。如果使用较大的数值,并可以承受一定的分辨率损失,则可以使用一种较简单的百分比方法。
通过使用更多的移位来代替除法(类似于求均值方案),可以用如下方式确定平均值的百分比门限值:
threshold = average >> 3; // 传感器
// 门限值现在为1/8,即12.5%
if (reading < average – threshold)
{...}
以下列出了一些有用的百分比。
threshold = reading >> 1; // 1/2 = 0.500
threshold = reading >> 2; // 1/4 = 0.250
threshold = reading >> 3; // 1/8 = 0.125
threshold = reading >> 4; // 1/16 = 0.063
threshold = reading >> 5; // 1/32 = 0.031
threshold = reading >> 6; // 1/64 = 0.016
threshold = reading >> 7; // 1/128 = 0.008
对于进行移位的每个位,门限值会损失一定的舍入分辨率。但是,使用较大的16位数值时,对于1/16的百分比(即6.25%),损失4个最低位是可以接受的。现在,对于简单百分比计算,可以省去前面使用的unsigned long percent变量,以及执行除法所需的额外计算量。这是另一种并不仅限用于电容触摸传感">电容触摸传感的技术,但它对于触摸传感的实现非常有用。
结论
有许多方法可以实现电容触摸系统,市场上针对此应用推出的各种嵌入式产品充分证明了这一点。关于这些解决方案有趣的一点是它们基于相同的物理原理,具有共同的基础。其中一些解决方案采用了不同的布线方式(将地与传感器组合);许多解决方案涉及到使用专有的材料。但是,电容触摸传感">电容触摸传感背后的概念是相当简单的——关键在于在实现设计时需要理解应用背后隐含的物理原理。基于这种理解,结合对于所用硬件和软件方案的良好理解,就可以简便地实现电容触摸传感">电容触摸传感系统。
上面用于确定按钮是否被按下的解码方案是相当简单的。
对于百分比按下检测,将继续使用前面讨论的求均值方案。但是,读数变量将变换为如下形式:
unsigned long percent;
percent = average – (reading*16);
if (percent < 0) {
percent = 0; // 忽略电容上升
} else {
percent = percent * 1000; // 乘以1000
percent = percent / average; // 结果使用100.0%的形式
}
结果变量percent包含0~1000的值,更具体地说,值的范围约为0~200(代表20.0%)。结果值保持单个小数位,因为更多小数位并不会提高精度。
更换先前的“if”语句,产生类似于以下语句的“if”语句:
#define PCT_ON 50 // >5.0%,打开
#define PCT_OFF 30 // <3.0%,关闭
if (reading < PCT_ON) {
Buttons.SENSOR0 = PRESSED;
} else if (reading > PCT_OFF) {
Buttons.SENSOR0 = UNPRESSED;
}
下一个复杂解码方案称为“多键表决”。如前面所讨论,传感器不仅会与手指和周围的地产生耦合,而且会相互耦合。因此,触摸一个传感器会影响另一个传感器,但影响程度通常会低于其他意外激励。如果即使影响程度较低,影响仍足以触发按下状态,会发生什么情况?
开发多键表决系统可以帮助解决该问题,以及与小键盘污染关联的其他问题。多键表决系统会选择按下后受影响最大的按键,代价是多次按下动作只能产生单个按键响应。例如,如果触摸会影响两个按键,但手指按下的按键受到的影响最大,该算法将选择受影响最大的按键。
该算法必须获取来自所有可用传感器的数据。举例来说,假定使用了4个传感器。算法还是使用百分比按下检测方法,因为每个传感器的读数可能会稍有不同,采用相对与原始值的偏差可以起到一些帮助。系统必须扫描全部4个传感器,并在扫描之后执行以下步骤:
1. 首先,扫描所有传感器;
2. 在每次扫描期间,记录每个传感器的受影响百分比;
3. 根据受影响程度进行排序;
4. 基于步骤3,对索引进行排序;
5. 位于数组单元0的传感器的受影响程度最高;
6. 确定是否大于最小门限值;
7. 指示按下/未按下。
代码示例1(略)
最后一个复杂解码方案也是百分比方案。百分比计算会占用8位单片机上可用存储器总空间中大量的程序和RAM存储空间,占用。在可能的情况下,最好降低这种存储器消耗。如果使用较大的数值,并可以承受一定的分辨率损失,则可以使用一种较简单的百分比方法。
通过使用更多的移位来代替除法(类似于求均值方案),可以用如下方式确定平均值的百分比门限值:
threshold = average >> 3; // 传感器
// 门限值现在为1/8,即12.5%
if (reading < average – threshold)
{...}
以下列出了一些有用的百分比。
threshold = reading >> 1; // 1/2 = 0.500
threshold = reading >> 2; // 1/4 = 0.250
threshold = reading >> 3; // 1/8 = 0.125
threshold = reading >> 4; // 1/16 = 0.063
threshold = reading >> 5; // 1/32 = 0.031
threshold = reading >> 6; // 1/64 = 0.016
threshold = reading >> 7; // 1/128 = 0.008
对于进行移位的每个位,门限值会损失一定的舍入分辨率。但是,使用较大的16位数值时,对于1/16的百分比(即6.25%),损失4个最低位是可以接受的。现在,对于简单百分比计算,可以省去前面使用的unsigned long percent变量,以及执行除法所需的额外计算量。这是另一种并不仅限用于电容触摸传感">电容触摸传感的技术,但它对于触摸传感的实现非常有用。
结论
有许多方法可以实现电容触摸系统,市场上针对此应用推出的各种嵌入式产品充分证明了这一点。关于这些解决方案有趣的一点是它们基于相同的物理原理,具有共同的基础。其中一些解决方案采用了不同的布线方式(将地与传感器组合);许多解决方案涉及到使用专有的材料。但是,电容触摸传感">电容触摸传感背后的概念是相当简单的——关键在于在实现设计时需要理解应用背后隐含的物理原理。基于这种理解,结合对于所用硬件和软件方案的良好理解,就可以简便地实现电容触摸传感">电容触摸传感系统。
电子 电容 电压 电流 电路 传感器 单片机 振荡器 嵌入式 相关文章:
- LCD TV整体电源解决方案-“GreenEngine?”技术(02-23)
- 在消费电子应用中考虑使用OTP存储器(04-13)
- 晶体元件在电子器件中不可缺(05-12)
- 用于移动电子设备的电路保护方案(11-08)
- 耳机设计:品质VS效率(01-07)
- SMARTCAR软件平台实现汽车电子系统软件的整体设计(03-30)