数字电容式触摸传感器,简称电容式触摸传感器,是一种通过检测物体(如手指)与传感器表面之间电容变化来实现触摸检测的传感器。它利用人体或其他导电物体接近或接触传感器表面时,引起传感器内部电场分布的变化,进而产生电容量的变化,通过测量这一变化量并将其转换为数字信号,实现对触摸的识别和响应。
数字电容式触摸传感器的工作原理主要基于电容感应技术。电容是描述两个导体之间存储电荷能力的物理量,其大小与导体间的距离、面积以及电介质的介电常数有关。在电容式触摸传感器中,通常包含两层导电材料(如金属层)和一层绝缘材料(如玻璃或塑料),形成一个电容器结构。当没有触摸发生时,两层导电材料之间保持一定的距离和面积,形成稳定的电容值。当手指或其他导电物体接近或接触传感器表面时,会改变原有的电场分布,导致电容值发生变化。这一变化被传感器内部的电路检测并转换为电信号,经过放大、滤波、模数转换等处理后,最终输出为数字信号,供后续电路或微处理器进行识别和处理。
具体来说,电容式触摸传感器的工作原理可以分为以下几个步骤:
数字电容式触摸传感器通常由以下几个部分组成:
数字电容式触摸传感器因其高灵敏度、快速响应和低功耗等特性,在多个领域得到了广泛应用:
我们需要开关来控制电子或者电器什么的,有时候我们用湿手使用电器开关然后触摸来控制电器或者电子负载时,电器开关会有震动,比普通开关互动性强,可能有些项目需要触摸转变。这里以数字电容式触摸传感器arduino接口作为实验。
基于 TTP223B IC 的数字电容传感器价格非常实惠,触摸时响应良好,该传感器分线器可以轻松与任何类型的微控制器连接,并且仅包含三个外部接口端子。
TTP223是1键触摸板检测IC,适合检测电容元件变化。它消耗的功率非常低,工作电压仅在2.0V至5.5V之间。快速模式下响应时间最大约 60mS,低功耗模式下 220mS VDD=3V。灵敏度可通过外部电容(0至50pF)调节。
将传感器分线板的 Vcc 引脚连接到 Arduino 的 +5V 引脚,并将 Gnd 连接到 Gnd。将信号 (SIG) 引脚连接到 Arduino 数字引脚 D1 并上传以下代码,以便在触摸电容式传感器时获得响应。
用于板载LED和串行监视器观察的 Arduino 代码。
//Digital Capacitive Touch Sensor Arduino Interfacing
#define sensorPin 1 // capactitive touch sensor - Arduino Digital pin D1
int ledPin = 13; // Output display LED (on board LED) - Arduino Digital pin D13
void setup()
{
< strong >Serial< /strong >.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(sensorPin, INPUT);
}
void loop()
{
int senseValue = digitalRead(sensorPin);
if (senseValue == HIGH)
{
digitalWrite(ledPin, HIGH);
< strong >Serial< /strong >.println("TOUCHED");
}
else
{
digitalWrite(ledPin,LOW);
< strong >Serial< /strong >.println("not touched");
}
delay(500);
}
电容式触摸传感器开关 Arduino
该 arduino 连接控制与 5V DC继电器连接的负载(交流灯泡) ,继电器的信号引脚取自 Arduino 数字引脚 D13,电容式触摸传感器的其他接线与观察连接相同。
上传以下Arduino代码来控制(开/关)负载设备
//Digital Capacitive Touch Sensor Switch Arduino Interfacing
#define sensorPin 1 // capactitive touch sensor - Arduino Digital pin D1
int relayPin = 13; // Output RelayPin - Arduino Digital pin D13
boolean currentState = LOW;
boolean lastState = LOW;
boolean RelayState = LOW;
void setup()
{
< strong >Serial< /strong >.begin(9600);
pinMode(relayPin, OUTPUT);
pinMode(sensorPin, INPUT);
}
void loop()
{
currentState = digitalRead(sensorPin);
if (currentState == HIGH && lastState == LOW)
{
delay(1);
if (RelayState == HIGH)
{
digitalWrite(relayPin, LOW);
RelayState = LOW;
}
else {
digitalWrite(relayPin, HIGH);
RelayState = HIGH;
}
}
lastState = currentState;
}
全部0条评论
快来发表一下你的评论吧 !