本文介绍了如何使用继电器模块通过Arduino控制电源电压。我们简要介绍了继电器模块,并使用Arduino构建了一个简单的项目示例。我们将构建的示例说明了如何使用Arduino和PIR运动传感器控制继电器模块。
在本教程结束时,您应该能够使用继电器模块使用Arduino控制任何电子设备。
目录
继电器模块介绍
继电器是一个电动开关,可以打开或关闭,让电流通过或不通过,并且可以用低电压进行控制,例如Arduino引脚提供的5V。
用Arduino控制继电器模块就像控制其它任何输出一样简单,稍后我们将看到。
该继电器模块具有两个通道(这些蓝色立方体)。还有其它型号具有一,四和八个通道。该模块应使用5V供电,适合与Arduino一起使用。还有其它继电器模块使用3.3V供电,非常适合ESP32,ESP8266和其它微控制器使用。
获取一个继电器模块:
- 5V 2通道继电器模块
- 5V 1通道继电器模块
- 5V 8通道继电器模块
- 3.3V 1通道继电器模块
继电器引脚排列
下图显示了继电器模块的引脚排列。
继电器模块左侧的六个引脚连接高电压,右侧的引脚连接需要低电压的组件Arduino引脚。
电源电压连接
高压侧有两个连接器,每个连接器都有三个插座:公共(COM),常闭(NC)和常开(NO)。
- COM:普通针
- NC(常闭):当您希望默认情况下关闭继电器时,将使用常闭配置,这意味着除非您从Arduino向继电器模块发送信号以断开电路并停止电流,否则电流就在流动。
- NO(常开):常开配置的工作方式与此相反:继电器始终处于打开状态,因此除非您从Arduino发送信号以关闭电路,否则电路会断开。
如果您只是想偶尔点亮一盏灯,最好使用常开电路配置。
引脚接线
低压侧具有一组四个引脚和一组三个引脚。
右侧的设置由VCC和GND组成,为模块供电,输入1(IN1)和输入2(IN2)分别控制底部和顶部继电器。
第二组引脚由GND,VCC和JD-VCC引脚组成。JD-VCC引脚为继电器的电磁体供电。
注意:请注意,该模块具有连接VCC和JD-VCC引脚的连接线帽。这里显示的是蓝色,但是您的颜色可能是不同的。连接线帽使您可以选择电路是否物理连接到Arduino电路,也可以选择打开还是不打开。打开连接线帽,连接VCC和JD-VCC引脚。这意味着继电器电磁体直接由Arduino的电源引脚供电,因此继电器模块和Arduino电路在物理上并不相互隔离(这是我们将使用的配置)。如果没有连接线帽,则需要提供独立的电源,以通过JD-VCC引脚为继电器的电磁体供电。该配置通过模块的内置光耦合器将继电器与Arduino物理隔离。
继电器模块和Arduino之间的连接非常简单:
- GND:接地
- IN1:控制第一个继电器(它将连接到Arduino数字引脚)
- IN2:控制第二个继电器(如果您正在使用第二个继电器,则应将其连接到Arduino数字引脚。否则,无需连接它)
- VCC:升至5V
示例:使用继电器模块和PIR运动传感器控制灯
在此示例中,我们创建了一个运动感应灯。每次检测到运动时,指示灯点亮10秒钟。
将使用PIR运动传感器检测运动。如果您不熟悉PIR运动传感器,则可以阅读以下文章:
- 带有PIR运动传感器的Arduino
为了用电源电压控制灯,我们将使用常开配置的继电器模块。
安全警告
在继续进行此项目之前,我想告诉您您正在处理电源电压。请仔细阅读以下安全警告。
警告:在制作连接到电源电压的项目时,您确实需要知道自己在做什么,否则您可能会感到震惊。这是一个严肃的话题,我们希望您安全。如果您不是100%不确定自己在做什么,请帮自己一个忙,不要碰任何东西。问一个知道的人!
所需零件
这是此示例所需的部分:
- 继电器模块
- Arduino UNO–阅读 最佳Arduino入门套件
- PIR运动传感器
- 灯线组
代码
将以下代码复制到Arduino IDE,并将其上传到Arduino开发板。
警告:当您的Arduino连接到继电器时,不应上传新代码,要先断开。
代码如何工作
首先,我们创建变量以保持继电器IN1引脚所连接的引脚并保存继电器状态:
int relay = 8; volatile byte relayState = LOW;
PIR运动传感器连接到 针脚2:
int PIRInterrupt = 2;
我们需要创建一些辅助变量来使用PIR运动传感器处理计时器。这lastDebounceTime变量保存上次检测到运动的时间。这去抖动undefined 节省检测到运动后灯泡应保持点亮的时间(此处我们将设置10秒= 10000毫秒)
long lastDebounceTime = 0; long debounceDelay = 10000;
在里面 setup() ,我们将继电器设置为OUTPUT并默认将其关闭:
long lastDebounceTime = 0;long debounceDelay = 10000;
因为我们使用的是常开配置,所以除非您触发继电器,否则COM和NO插座之间没有接触。当输入电压低于2 V时,继电器将触发。这意味着,如果您从Arduino发送LOW信号,则继电器打开;如果您发送HIGH信号,则继电器关闭。它与反向逻辑一起工作。
将PIR运动传感器设置为中断:
pinMode(PIRInterrupt, INPUT);// Triggers detectMotion function on rising mode to turn the relay on, if the condition is met attachInterrupt(digitalPinToInterrupt(PIRInterrupt), detectMotion, RISING);
每当触发PIR运动传感器时,它都会调用 detectMotion() 在代码末尾声明的函数以打开继电器:
void detectMotion() { Serial.println("Motion"); if(relayState == LOW){ digitalWrite(relay, LOW); } relayState = HIGH; Serial.println("ON"); lastDebounceTime = millis(); }
在里面 loop(),我们检查继电器打开后是否经过了10秒钟。如果该条件成立,我们可以关闭继电器。
if((millis() - lastDebounceTime) > debounceDelay && relayState == HIGH){ digitalWrite(relay, HIGH); relayState = LOW; Serial.println("OFF"); }
原理图
如图所示组装所有零件。
警告:请勿触摸任何与电源电压相连的电线。另外,请确保已拧紧继电器模块的所有螺钉。
灯泡使用常开配置连接到继电器。Arduino通过控制继电器针8 (针8连接到继电器IN1引脚)。最后,将PIR运动传感器连接到针脚2。
示范
上传代码并连接电路后,您可以测试设置。
当检测到运动时,您的灯点亮。如果10秒钟没有运动,则指示灯熄灭。
总结
使用Arduino控制继电器模块就像控制输出一样简单-您只需要使用Arduino数字引脚发送HIGH或LOW信号即可。使用继电器模块,您可以控制几乎所有的交流电子设备(不仅是灯)。