使用TTP223和Arduino UNO通过触摸控制家庭灯

2023-06-20  

在某些应用程序中,需要用户输入来控制设备的功能。嵌入式和数字电子产品中使用了不同种类的用户输入方法。触摸传感器就是其中之一。触摸传感器是与微控制器接口的重要且广泛使用的输入设备,它使输入数据更简单。触摸传感器有个别地方可以使用,无论是手机还是液晶显示器开关。然而,市场上有许多类型的传感器可用,但电容式触摸传感器是触摸传感器领域中广泛使用的类型。

在这个项目中,相同的触摸传感器将与 Arduino UNO 接口。Arduino 是一种广受欢迎且易于使用的开发板。

触摸传感器

将用于本项目的触摸传感器是电容式触摸传感器模块,传感器驱动器基于驱动器IC TTP223。TTP223 IC 的工作电压为 2 V 至 5.5 V,触摸传感器的电流消耗非常低。由于价格低廉、电流消耗低且易于集成支持,采用 TTP223 的触摸传感器在电容式触摸传感器领域很受欢迎。

pYYBAGMW-nCAOqvsAAMfh9W1nH0791.png

在上图中,传感器的两侧都显示了引脚图清晰可见的位置。它还有一个焊接跳线,可用于根据输出重新配置传感器。跳线为 A 和 B。默认配置或在焊锡跳线的默认状态下,触摸传感器时输出从 LOW 变为 HIGH。但是,当设置跳线并重新配置传感器时,当触摸传感器检测到触摸时,输出会改变其状态。触摸传感器的灵敏度也可以通过改变电容来配置。

下图显示了不同跳线设置下的不同输出 -

pYYBAGMW-m2AQE9iAAAP3-eiOvs115.png

对于本项目,传感器将用作出厂发布条件下可用的默认配置。

设备可以通过使用触摸传感器以及与微控制器连接来控制。在这个项目中,触摸传感器将用于使用 Arduino UNO 和 Relay 来控制灯泡的开或关。

了解继电器

要连接继电器,重要的是要对继电器的引脚描述有一个清晰的认识。继电器的引脚排列如下图所示 -

poYBAGMW-mmAE8qEAAI3QFEVUDg296.png

NO常开,NC常接。L1 和 L2 是 Relay 线圈的两个端子。未施加电压时,继电器关闭,POLE 与 NC 引脚连接。当在线圈端子上施加电压时,继电器的 L1 和 L2 接通,POLE 与 NO 连接。因此,可以通过改变继电器的操作状态来打开或关闭 POLE 和 NO 之间的连接。强烈建议在应用前检查继电器规格。继电器在 L1 和 L2 两端具有工作电压。有些继电器使用 12V,有些使用 6V,有些使用 5V。不仅如此,NO、NC 和 POLE 还具有电压和电流额定值。对于我们的应用,我们在开关侧使用具有 250V、6A 额定值的 5V 继电器。

所需组件

Arduino UNO

用于编程和供电的 USB 电缆

标准立方继电器 - 5V

2k电阻-1个

4.7k 电阻器 - 1 个

BC549B晶体管

TTP223 传感器模块

1N4007 二极管

带灯座的灯泡

面包板

通过 USB 电缆连接 Arduino 的手机充电器。

很多连接线或 berg 线。

Arduino 编程平台。

2k电阻,BC549B,1N4007,继电器可以用继电器模块代替。

电路原理图

将触摸传感器与 Arduino 连接的示意图很简单,如下所示,

poYBAGMW-mSAFsG6AABhVWtqlLM783.png

晶体管用于打开或关闭继电器。这是因为 Arduino GPIO 引脚无法提供足够的电流来驱动继电器。在继电器开启或关闭的情况下,需要 1N4007 来阻断 EMI。该二极管用作续流二极管。触摸传感器与 Arduino UNO 板连接。

该电路构建在带有 Arduino 的面包板上,如下所示。

pYYBAGMW-mCAH1P0AAgMNuf99_w145.png

正确的面包板连接可以在下面的示意图中看到。

poYBAGMW-l2AYoMRAAFYNYMdoAA986.png

使用触摸传感器对 Arduino UNO 进行编程以控制灯泡

最后给出了带有工作视频的完整程序。在这里,我们将解释代码的几个重要部分。Arduino UNO 将使用 Arduino IDE 进行编程。首先,包含 Arduino 库以访问 Arduino 的所有默认功能。


#include 

定义将连接继电器和触摸传感器的所有引脚号。这里,触摸传感器连接到引脚 A5。内置的 LED 也被使用,它直接连接到板上的引脚 13。继电器连接到引脚 A4。


/* 

* 引脚说明

*/ 

int Touch_Sensor = A5; 

整数 LED = 13;

诠释继电器 = A4;

定义引脚模式,即引脚功能应该是输入还是输出。此处输入触摸传感器。继电器和 LED 引脚输出。


/* 

* 引脚模式设置

*/ 

void setup() { 

            pinMode(Touch_Sensor, INPUT); 

            pinMode(LED,输出);

            pinMode(继电器,输出);

}

声明了两个整数,其中“条件”用于保存传感器的条件,无论它是否被触摸。“状态”用于保持 LED 和继电器的状态,开或关。


/* 

* 程序流程描述

*/ 

int condition = 0; 

整数状态 = 0;//保持开关状态。

触摸传感器在被触摸时将逻辑 0 更改为 1。这是由digitalRead()函数读取的,并且值存储在条件变量中。当条件为 1 时,LED 和继电器的状态发生变化。然而,为了准确检测触摸,使用了去抖动延迟。去抖动延迟,延迟(250);用于确认单次触摸。


无效循环(){

            条件=数字读取(A5);// 从 Arduino 的 A5 引脚读取数字数据。

            如果(条件 == 1){

                        延迟(250);// 去抖动延迟。

                        如果(条件 == 1){

                                    状态 = ~state; // 改变开关的状态。

                                    数字写入(LED,状态);

                                    数字写入(继电器,状态);

                        } 

            } 

}

测试触摸传感器 TTP223 的工作情况


该电路在面包板上进行测试,并连接了一个低功率灯泡。

5d63b1a7c032a9310dad1a6b96726db1_pYYBAGMW-leAACtFAAf0ukrpbPM897.png


#include 

定义将连接继电器和触摸传感器的所有引脚号。这里,触摸传感器连接到引脚 A5。内置的 LED 也被使用,它直接连接到板上的引脚 13。继电器连接到引脚 A4。


/* 

* 引脚说明

*/ 

int Touch_Sensor = A5; 

整数 LED = 13;

诠释继电器 = A4;

定义引脚模式,即引脚功能应该是输入还是输出。此处输入触摸传感器。继电器和 LED 引脚输出。


/* 

* 引脚模式设置

*/ 

void setup() { 

            pinMode(Touch_Sensor, INPUT); 

            pinMode(LED,输出);

            pinMode(继电器,输出);

}

声明了两个整数,其中“条件”用于保存传感器的条件,无论它是否被触摸。“状态”用于保持 LED 和继电器的状态,开或关。


/* 

* 程序流程描述

*/ 

int condition = 0; 

整数状态 = 0;//保持开关状态。

触摸传感器在被触摸时将逻辑 0 更改为 1。这是由digitalRead()函数读取的,并且值存储在条件变量中。当条件为 1 时,LED 和继电器的状态发生变化。然而,为了准确检测触摸,使用了去抖动延迟。去抖动延迟,延迟(250);用于确认单次触摸。


无效循环(){

            条件=数字读取(A5);// 从 Arduino 的 A5 引脚读取数字数据。

            如果(条件 == 1){

                        延迟(250);// 去抖动延迟。

                        如果(条件 == 1){

                                    状态 = ~state; // 改变开关的状态。

                                    数字写入(LED,状态);

                                    数字写入(继电器,状态);

                        } 

            } 

}

测试触摸传感器 TTP223 的工作情况


该电路在面包板上进行测试,并连接了一个低功率灯泡。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。