- 什么是电容式触摸传感器,它如何工作?
- 构建四向电容式触摸传感器
- ESP32触控电路的材料
- 电容式触摸传感器的控制电路
- 电容式触摸传感器电路的PCB设计
- 基于ESP32的电容式触摸传感器的Arduino代码
- 测试基于ESP32的触摸传感器电路
- 进一步增强
在许多情况下,使用触摸传感器代替按钮。这样做的好处是,我们无需提供力来按下按钮,并且可以激活按键而无需使用触摸传感器来触摸它。触摸感应技术正日益流行。在过去的十年左右的时间里,很难想象没有触敏电子产品的世界。这两个电阻式和电容式触摸方法可以用来开发一个触摸传感器,在这篇文章中,我们将讨论作出的粗暴的方式电容式触摸传感器与ESP32,以前我们也建立与树莓派电容式触摸按钮。
尽管特定用途的触摸传感器可能有些复杂,但该技术的基本原理仍然保持不变,因此,在本文中,我们将重点关注借助我们最喜欢的ESP32和一块铜线来开发电容式触摸传感器。复合板。
在前面的教程中,我们使用TTP223触摸传感器和Arduino的UNO进行控制家里的电灯用触摸,现在,在这个项目中,我们正在建设一个为ESP32触摸传感器,但同样可用于Arduino的为好。同样,我们以前使用基于触摸的输入方法,将电容式触摸板与不同的微控制器配合使用,例如ATmega32微控制器的触摸式键盘接口和Raspberry Pi的电容式触摸板,如果您有兴趣的话,也可以进行检查。
什么是电容式触摸传感器,它如何工作?
电容器有多种形式。最常见的形式是有铅封装或表面贴装封装,但要形成电容,我们需要将导体与绝缘材料分开。因此,创建一个很容易。一个很好的例子是我们将在下面的例子中开发的例子。
将蚀刻后的PCB视为导电材料,贴纸充当介电材料,因此现在的问题仍然存在,如何接触铜垫会导致电容发生变化,从而使触摸传感器控制器能够检测到?当然是人的手指。
好吧,主要有两个原因:第一,一个包括我们手指的介电特性,第二个是由于我们手指的导电特性。我们将使用 基于电容的触摸。因此,我们将把重点放在基于电容的触摸传感器上。但是在讨论所有这些之前,必须注意,由于贴纸中使用了纸张,因此没有任何传导发生,并且手指已经绝缘。因此,手指无法为电容器放电。
手指充当电介质:
众所周知,电容器具有一个恒定值,可以通过两个导电板的面积,两个板之间的距离及其介电常数来实现。我们不能仅仅通过触摸电容器来改变其面积,但是我们可以确保改变电容器的介电常数,因为人的手指的介电常数与显示它的材料不同。在我们的例子中,是空气,我们用手指代替空气。如果您问如何?这是因为空气1006在海平面室温下的介电常数和手指的介电常数在80左右更高,因为人的手指主要由水组成。因此,手指与电容器电场的相互作用导致介电常数增加,因此电容增加。
现在我们已经了解了原理,让我们继续进行实际PCB的制作。
构建四向电容式触摸传感器
该项目中使用的电容式触摸传感器具有四个通道,并且易于制造。下面我们提到制作一个的详细过程。
首先,我们借助Eagle PCB设计工具制作了用于传感器的PCB,外观如下图所示。
在尺寸和Photoshop的帮助下,我们制作了模板,最后制作了传感器的标签,其外观类似于下图,
现在,当我们完成贴纸的制作后,我们继续制作将用于制作PCB的实际复合板模板,如下图所示,
现在,我们可以打印此文件并继续制作自制PCB的过程。如果您是新手,则可以查看有关如何在家中构建PCB的文章。您也可以从下面的链接下载所需的PDF和Gerber文件
- 用于四通道电容式触摸传感器的GERBER文件
完成后,实际的蚀刻PCB如下图所示。
现在该钻一些孔了,我们将一些导线与PCB连接起来。这样我们就可以将其与ESP32开发板连接起来。完成后,如下图所示。
由于我们没有在PCB上放置通孔,所以焊接时焊锡到处都是,所以我们通过在PCB上钻一个孔来纠正我们的错误,您可以在上面的下载部分中找到该孔。最后,是时候贴上贴纸并将其粘贴下来了。看起来像下面的图片。
现在我们已经完成了触摸面板,现在该继续制作触摸面板的控制电路了。
ESP32触控电路的材料
下面给出了使用ESP32构建控制器部分所需的组件,您应该可以在本地的业余商店中找到大多数组件。
我还在下表中列出了所需类型和数量的组件,因为我们要连接一个四通道触摸传感器并控制四个交流负载,所以我们将使用4个继电器来切换交流负载,并使用4个晶体管来构建继电器驱动电路。
编号 |
部分 |
类型 |
数量 |
1个 |
中继 |
开关 |
4 |
2 |
BD139 |
晶体管 |
4 |
3 |
螺丝端子 |
螺丝端子5mmx2 |
4 |
4 |
1N4007 |
二极管 |
5 |
5 |
0.1uF的 |
电容器类 |
1个 |
6 |
100uF,25V |
电容器类 |
2 |
7 |
LM7805 |
调压器 |
1个 |
8 |
1K |
电阻器 |
4 |
9 |
560R |
电阻器 |
4 |
10 |
琥珀色LED |
LED |
4 |
11 |
男头 |
连接器 |
4 |
12 |
女头 |
连接器 |
30 |
13 |
红色LED |
LED |
1个 |
14 |
ESP32开发板V1 |
ESP32开发板 |
1个 |
12 |
覆板 |
通用50x 50mm |
1个 |
13 |
跳线 |
电线 |
4 |
14 |
连接线 |
电线 |
5 |
电容式触摸传感器的控制电路
下图显示了基于ESP32的触摸传感器的完整电路图。
如您所见,这是一个非常简单的电路,所需的元件最少。
由于它是简单的触摸传感器电路,因此在您想通过触摸与设备进行交互的地方很有用,例如,您可以使用触摸来打开/关闭电器,而不必使用典型的板上安装开关。
在示意图中,直流桶式插孔用作输入,我们在其中提供为电路供电所需的必要功率,从那里我们有了我们的7805稳压器,它将未稳压的直流输入转换为恒定的5V直流,我们通过该电压提供ESP32模组的电源。
接下来,在原理图中,我们在针脚25、26、27、28上有我们的触摸连接器,我们将在此处连接触摸板。
接下来,我们有通过BD139晶体管进行开关的继电器,二极管D2,D3,D4,D5用于保护电路免受继电器触发时产生的任何瞬态电压的影响,这种配置的二极管称为反激二极管/续流二极管。每个晶体管基极的560R电阻器用于限制流经基极的电流。
电容式触摸传感器电路的PCB设计
用于我们的触摸传感器电路的PCB是为单面板设计的。我们已经使用Eagle来设计我的PCB,但是您可以使用任何选择的设计软件。我们的电路板设计的2D图像如下所示。
使用足够的走线直径来制作电源走线,以使电流流过电路板。我们将螺丝端子放在顶部,因为这样可以更轻松地连接负载,并且电源连接器(即DC桶形插孔)位于侧面,这也便于操作。可以从下面的链接下载Eagle的完整设计文件以及Gerber。
- 基于ESP32的触摸传感器控制电路的GERBER文件
现在我们的设计已经准备就绪,是时候蚀刻和焊接电路板了。蚀刻,钻孔和焊接过程完成后,电路板如下图所示,
基于ESP32的电容式触摸传感器的Arduino代码
对于此项目,我们将使用自定义代码对ESP32进行编程,稍后将对其进行介绍。该代码非常简单易用,
我们首先定义所有必需的引脚,在本例中,我们定义触摸传感器和继电器的引脚。
#define Relay_PIN_1 15 #define Relay_PIN_2 2 #define Relay_PIN_3 4 #define Relay_PIN_4 16 #define TOUCH_SENSOR_PIN_1 13 #define TOUCH_SENSOR_PIN_2 12 #define TOUCH_SENSOR_PIN_3 14 #define TOUCH_SENSOR_PIN_4 27
接下来,在设置部分,我们首先初始化UART以进行调试,接下来,我们引入了1S的延迟,这给了我们一点时间来打开“串行监视器”窗口。接下来,我们使用 Arduinos pinMode 函数使Relay引脚作为输出,这标志着 Setup() 部分的结束。
void setup(){Serial.begin(115200); 延迟(1000); pinMode(Relay_PIN_1,OUTPUT); pinMode(Relay_PIN_2,OUTPUT); pinMode(Relay_PIN_3,OUTPUT); pinMode(Relay_PIN_4,OUTPUT); }
我们从 if 语句开始 循环 部分,内置函数 touchRead(pin_no) 用于确定是否触摸了某个引脚。该 touchRead(pin_no) 函数返回一个整数值范围(0 - 100),该值保持100所有的时间不久,但如果我们触摸到选定的引脚,该值下降到接近零,并与不断变化的值的帮助下,我们可以确定是否用手指触摸了特定的图钉。
在 if 语句中,我们正在检查整数值是否有任何变化,并且如果该值小于28,则可以确定我们已确认触摸。一旦 if 语句变为true,我们将等待50ms并再次检查参数,这将帮助我们确定传感器值是否被错误触发,之后,我们通过使用 digitalWrite(Relay_PIN_1,!digitalRead (Relay_PIN_1)) 方法,其余代码保持不变。
if(touchRead(TOUCH_SENSOR_PIN_1)<28){if(touchRead(TOUCH_SENSOR_PIN_1)<28){Serial.println(“传感器一被触摸”); digitalWrite(Relay_PIN_1,!digitalRead(Relay_PIN_1)); }} if if(touchRead(TOUCH_SENSOR_PIN_2)<28){if(touchRead(TOUCH_SENSOR_PIN_2)<28){Serial.println(“ Sensor Two touched”); digitalWrite(Relay_PIN_2,!digitalRead(Relay_PIN_2)); }} else if(touchRead(TOUCH_SENSOR_PIN_3)<28){if(touchRead(TOUCH_SENSOR_PIN_3)<28){Serial.println(“ Sensor Three touched”); digitalWrite(Relay_PIN_3,!digitalRead(Relay_PIN_3)); }} else if(touchRead(TOUCH_SENSOR_PIN_4)<28){if(touchRead(TOUCH_SENSOR_PIN_4)<28){Serial.println(“触摸四个传感器”); digitalWrite(Relay_PIN_4,!digitalRead(Relay_PIN_4)); }}
最后,我们以另外200 ms的阻塞延迟结束代码。
测试基于ESP32的触摸传感器电路
因为这是一个非常简单的项目,所以测试集非常简单,正如您所看到的,我已经将4个LED与用作负载的电阻器相连,因为它与继电器相连,所以您可以轻松地连接任何3Amps的负载。
进一步增强
尽管PCB很简单,但是从实际PCB的底部可以看到,仍有改进的空间,我已经连接了许多电阻器,试图连接四个指示LED,并且如果这样的话,也可以减小PCB的尺寸成为要求
希望您喜欢这篇文章并学到一些有用的东西。如果您有任何疑问,可以将其留在下面的评论部分,或使用我们的论坛来发布其他技术问题。