风筝
发表于: 2019-4-29 16:05:04 | 显示全部楼层

在某些应用中,需要用户输入来控制设备的功能。嵌入式和数字电子设备中使用了不同种类的用户输入方法。触摸传感器就是其中之一。触摸传感器是一种重要且广泛使用的输入设备,可与微控制器连接,使输入数据更加简单。使用触摸传感器的设备很多,如手机、液晶显示器面板。但市场上的触摸传感器种类繁多,电容式触摸传感器是触摸传感器领域中广泛使用的类型。


在本篇文章中,我们将使用TTP223触摸传感器将与Arduino UNO进行连接。 Arduino是一个广受欢迎且易于使用的开发板。


触摸传感器

用于此项目的触摸传感器是电容式触摸传感器模块,传感器驱动器基于驱动器芯片TTP223。 TTP223芯片的工作电压为2 V至5.5 V,触摸传感器的电流消耗非常低。由于价格低、电流消耗小和易于集成,带有TTP223的触摸传感器在电容式触摸传感器领域变得流行。

TTP223-Touch-Sensor.png


在上图中,传感器的两侧都显示了引脚图清晰可见的位置。它还有一个焊接跳线,可用于根据输出重新配置传感器。跳线为A和B。默认配置或焊接跳线的默认状态,触摸传感器时输出从低电平变为高电平。但是,当设置跳线并重新配置传感器时,输出会在触摸传感器检测到触摸时改变其状态。也可以通过改变电容器来配置触摸传感器的灵敏度。有关详细信息,请查看TTP 223的数据表,这将非常有用。


可以通过使用触摸传感器并通过将其与微控制器连接来控制器具。在本篇文章中,通过使用Arduino UNO和继电器,触摸传感器实现灯泡控制。


了解继电器

要接通继电器,重要的是要对继电器的引脚描述有一个公平的想法。继电器的引出线可以在下面的图像中看到 -

KT-603-5V-relay-pinout.jpg


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


需要的组件

●    Arduino UNO

●    5V继电器

●    电阻

●    BC549B晶体管

●    TTP223传感器模块

●    1N4007二极管

●    电灯泡

●    面包板


电路原理图

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

Circuit-Diagram-for-TTP223-Touch-Sensor-Interfacing-with-Arduino-UNO.png


晶体管用于接通或断开继电器。这是由于Arduino GPIO引脚无法提供足够的电流来驱动继电器。继电器开启或关闭期间,EMI阻断需要1N4007。二极管充当续流二极管。触摸传感器与Arduino UNO开发板连接。


该电路和Arduino开发板一起在面包板上制作,如下所示。

Circuit-Hardware-for-TTP223-Touch-Sensor-Interfacing-with-Arduino-UNO.jpg

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

Breadboard-Connection-for-TTP223-Touch-Sensor-Interfacing-with-Arduino-UNO.png


编程Arduino UNO使用触摸传感器控制灯泡

在文章末尾处给出了本文的完整代码。这里我们解释代码的一些重要部分。 Arduino UNO将使用Arduino IDE进行编程。


首先,包含Arduino库以访问Arduino的所有默认功能。

  1. #include <Arduino.h>
复制代码

定义继电器和触摸传感器连接的引脚编号。这里,触摸传感器连接到引脚A5。还使用内置LED,其在板中直接连接到引脚13。继电器连接到引脚A4。

  1. /*
  2. * Pin Description
  3. */
  4. int Touch_Sensor = A5;
  5. int LED = 13;
  6. int Relay = A4;
复制代码

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

  1. /*
  2. * Pin mode setup
  3. */
  4. void setup() {
  5.             pinMode(Touch_Sensor, INPUT);
  6.             pinMode(LED, OUTPUT);
  7.             pinMode(Relay, OUTPUT);
  8. }
复制代码

声明了两个整型变量,其中'condition'用于记录传感器的状态,标识它是否被触摸。 “state”用于记录LED和继电器的状态,开启或关闭。

  1. /*
  2. * Programme flow Description
  3. */
  4. int condition = 0;
  5. int state = 0; //To hold the switch state.
复制代码

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

  1. void loop() {
  2.             condition = digitalRead(A5); // Reading digital data from the A5 Pin of the Arduino.
  3.             if(condition == 1){
  4.                         delay(250); // de-bounce delay.
  5.                         if(condition == 1){
  6.                                     state = ~state; // Changing the state of the switch.
  7.                                     digitalWrite(LED, state);
  8.                                     digitalWrite(Relay, state);
  9.                         }
  10.             }
  11. }
复制代码

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

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

TTP223-Touch-Sensor-Interfacing-with-Arduino-UNO.jpg


请注意,此项目使用230-240V交流电压,因此建议在使用灯泡时要小心。如果您有任何疑问或建议,请在本帖下面进行回复。


代码

以下是本文使用的完整代码: main.rar (433 Bytes, 下载次数: 28)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-24 14:09 , Processed in 0.039466 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表