在现代电子世界中,触摸输入几乎无处不在,无论是手机还是电磁炉的选择按钮。电容式触摸在触摸传感器领域得到了广泛应用。在这里,我们将触摸传感器与 8051 微控制器 AT89S52 一起使用,制作一个触摸开关。
什么是电容式触摸传感器?电容式触摸技术是利用人体的电流感应进行工作的。当手指触摸上面时,由于人体电场,用户和触摸模块表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流,感应模块感应到触摸并做出相应输出。
本项目使用的触摸传感器为电容式触摸传感器模块,传感器驱动基于驱动IC TTP223。IC TTP23的工作电压为 2.0V 至 5.5V ,触摸传感器的电流消耗非常低。由于价格低廉、功耗低且易于集成,所以采用 TTP223 触摸传感器在其细分市场中广受欢迎。
在上图中,传感器的两侧显示的引脚清晰可见,它有2个跳线选择,A 和 B,用户可用于根据需求选择。触摸传感器的灵敏度也可以通过改变电容来配置。有关详细信息,参考TTP 223 的datasheet。
下面表格给出了不同跳线设置下的不同输出 :
继电器在这个项目中,使用AT89S52控制继电器进而控制灯泡亮灭,触摸传感器使用出厂的默认跳线配置,用作控制灯泡的开关。
继电器的引脚排列如下图所示:
NO常开触点,NC常闭触点,L1 和 L2 是线圈的两个端子。未施加电压时,继电器关闭,POLE 与 NC 接通。当电压施加在线圈端子上时,继电器的 L1 和 L2 接通,POLE 与 NO 接通。因此,可以通过改变继电器的状态来打开或关闭 POLE 和 NO 之间的连接。
电路原理图使用触摸传感器和 8051 控制灯泡的电路图如下:
代码#include<REGX52.h>
// 继电器控制引脚
sbit RELAY = P1^0; // 定义RELAY 为P1^0,即P1口的第1位
// 接收触摸传感器状态
sbit Touch = P1^1; //
void delay(char ms); //声明延时函数
// 主函数
void main(void)
{
RELAY = 0;
Touch = 0;
while(1){
if (Touch == 1){
delay(15); // 去抖延时
if (Touch == 1){
RELAY = !RELAY; // 切换继电器状态,每按一下变为反状态
delay(30);
}
}
}
}
//延时函数
void delay(char ms){
int a,b;
for (a=0; a<1295; a )
for (b=0; b<ms; b );
}