Grove - 8通道固态继电器
与使用线圈的机械继电器不同,封装型固态继电器(SSR)使用诸如晶闸管和晶体管等功率半导体器件,这些器件提供了比机械继电器更快的切换速度。Grove - 8通道固态继电器基于高质量的G3MC202P模块,允许您使用5VDC来控制最大240VAC的电压。借助Grove接口,使用SSR与您的Arduino变得非常方便。
我们使用板载的STM32F030F4P6来单独控制各通道。来自Arduino或其他控制板的指令通过I2C接口进行传输,板载的STM32F030F4P6将解析这些指令,这样您就可以控制您想要的开关了。
根据不同的应用场景,我们为您准备了一系列固态继电器。
特点
低功耗
寿命长
可选I2c地址
与机械继电器相比的优势:
- 固态继电器与电磁继电器相比具有更快的切换速度,且没有物理接触点会磨损
- 完全静音运行
- 无物理接触意味着不会产生火花,允许在爆炸性环境中使用,在这些环境中,切换过程中不能产生火花至关重要
- 寿命更长,即使多次激活,也没有运动部件磨损和接触点磨损或积碳问题
- 紧凑、薄型的一体式单块结构SSR集成了PCB、端子和散热器,比机械继电器小得多,可以集成更多通道
缺点:
- 闭合时电阻较高(产生热量),电气噪声增大
- 断开时电阻较低,存在反向泄漏电流
- 仅适用于交流负载
规格
项目 | 值 |
---|---|
工作输入电压 | 4~6V |
额定输入电压 | 5V |
额定负载电压 | 100 至 240 VAC 50/60 Hz |
负载电压范围 | 75 至 264 VAC 50/60 Hz |
负载电流 | 0.1 至 2 A |
泄漏电流 | 最大1.5 mA (at 200 VAC) |
绝缘电阻 | 最小1,000 MΩ (at 500 VDC) |
动作时间 | 负载电源周期的一半 +1 ms 最大 |
释放时间 | 负载电源周期的一半 + 1 ms 最大 |
存储温度 | -30°C 至 100°C (无结冰或凝结) |
工作温度 | -30°C 至 80°C (无结冰或凝结) |
工作湿度 | 45% 至 85%RH |
输入接口 | I^2^C |
默认 I^2^C 地址 | 0x11 或 0x12 |
可选 I^2^C 地址 | 0x00 ~ 0x7F |
输出接口 | DIP 蓝色母头 2 pin x8 |
过零检测 | 支持 |
认证 | UL / CSA |
:::注意 请注意泄漏电流,1.5mA足以驱动低功耗LED,因此当继电器断开时,LED可能仍会发出微弱的光。 :::
应用领域
- 需要低延迟切换的操作,例如舞台灯光控制
- 需要高稳定性的设备,例如医疗设备、交通信号灯
- 需要防爆、防腐、防潮的环境,例如煤炭、化工行业。
硬件概述
引脚映射
:::注意
- 开关1-8具有相同的引脚功能,因此对于其他开关,您可以参考**LOAD1**/**LOAD2**。
- 在PCB板的背面,有两个接口:SWD和I^2^C。在编程固件时,默认使用SWD接口。如果您想使用I^2^C(实际上作为启动UART工作),您应该将
**BOOT** 设置为高电平。
:::
原理图
继电器控制
K1 是继电器模块。当在 INT+ 和 INT- 之间施加5V电压时,继电器将被打开。然后,LOAD1 将与 LOAD2 连接。我们使用NPN晶体管 Q1(BC817-40) 来控制 INT+ 和 INT- 之间的电压。
CTR 是来自Arduino或其他板的控制信号。如果没有信号,它会被10k的R2下拉,Q1 的'栅极'(端口1)将为0V,Q1将关闭,因此K1也将关闭。如果 CTR 变为5V,那么Q1将打开。K1的 INT- 将与系统的GND连接,对于K1来说,INT+ 和 INT- 之间将有5V的电压,因此K1将打开,并且 LOAD1 将连接到 LOAD2。
双向电平移位电路
这是一个典型的双向电平移位电路,用于连接I^2^C总线上两个不同电压的部分。这个传感器的I2C总线使用3.3V,如果Arduino的I2C总线使用5V,那么就需要这个电路。在上面的原理图中,Q17 和 Q18 是N沟道MOSFET 2N7002A,它们作为双向开关工作。为了更好地理解这一部分,您可以参考AN10441。
:::注意 在本节中,我们只向您展示了部分原理图,如需完整文档,请参考 资源部分 :::
支持的平台
Arduino | 树莓派 | |||
---|---|---|---|---|
:::注意 上述提到的受支持平台是对模块软件或理论兼容性的指示。在大多数情况下,我们只提供适用于Arduino平台的软件库或代码示例。由于无法为所有可能的MCU平台提供软件库/演示代码,因此用户需要编写自己的软件库。 :::
入门指南
玩转 Arduino
硬件
所需材料
Seeeduino V4.2 | 基础盾板 | Grove - 8通道固态继电器 |
---|---|---|
立即获取 | 立即获取 | 立即获取 |
:::注意
1 请轻轻插入USB线,否则可能会损坏端口。请使用内部有4根线的USB线,2根线的USB线无法传输数据。如果您不确定您手中的线是否符合要求,可以点击这里进行购买。
**2** 购买每个Grove模块时都会附带一根Grove电缆。如果您丢失了Grove电缆,可以点击 [这里](https://www.seeedstudio.com/Grove-Universal-4-Pin-Buckled-20cm-Cable-%285-PCs-pack%29-p-936.html) 进行购买。
:::
步骤 1. 将 Grove - 8通道固态继电器连接到 Base Shield 的 I^2^C 端口。
步骤 2. 将 Grove - Base Shield 插入 Seeeduino。
步骤 3. 通过 USB 线缆将 Seeeduino 连接到电脑。
:::注意 如果没有 Grove Base Shield,我们也可以直接将这个模块连接到 Seeeduino,如下所示。 :::
Seeeduino | Grove - 8通道固态继电器 |
---|---|
5V | 红色 |
GND | 黑色 |
SDA | 白色 |
SCL | 黄色 |
软件
:::注意 如果您是第一次使用Arduino,我们强烈建议您在开始之前先查看Arduino入门指南。 :::
步骤 1. 从Github下载Multi_Channel_Relay_Arduino库。
步骤 2. 参考如何安装库来为Arduino安装库。
步骤 3. 重启Arduino IDE。通过以下路径打开示例:文件 --> 示例 --> Multi Channel Relay Arduino 库 --> eight_channel_relay_control。
或者,您可以直接点击代码块右上角的图标 将以下代码复制到Arduino IDE中的一个新草图中。
#include <multi_channel_relay.h>
#define USE_8_CHANNELS (1)
Multi_Channel_Relay relay;
void setup()
{
Serial.begin(9600);
while(!Serial);
/* Scan I2C device detect device address */
uint8_t old_address = relay.scanI2CDevice();
if((0x00 == old_address) || (0xff == old_address)) {
while(1);
}
Serial.println("Start write address");
relay.changeI2CAddress(old_address, 0x11); /* Set I2C address and save to Flash */
Serial.println("End write address");
/* Read firmware version */
Serial.print("firmware version: ");
Serial.print("0x");
Serial.print(relay.getFirmwareVersion(), HEX);
Serial.println();
}
void loop()
{
/**
* channle: 8 7 6 5 4 3 2 1
* state: 0b00000000 -> 0x00 (all off)
* state: 0b11111111 -> 0xff (all on)
*/
/* Begin Controlling Relay */
Serial.println("Channel 1 on");
relay.turn_on_channel(1);
delay(500);
Serial.println("Channel 2 on");
relay.turn_off_channel(1);
relay.turn_on_channel(2);
delay(500);
Serial.println("Channel 3 on");
relay.turn_off_channel(2);
relay.turn_on_channel(3);
delay(500);
Serial.println("Channel 4 on");
relay.turn_off_channel(3);
relay.turn_on_channel(4);
delay(500);
#if(1==USE_8_CHANNELS)
Serial.println("Channel 5 on");
relay.turn_off_channel(4);
relay.turn_on_channel(5);
delay(500);
Serial.println("Channel 6 on");
relay.turn_off_channel(5);
relay.turn_on_channel(6);
delay(500);
Serial.println("Channel 7 on");
relay.turn_off_channel(6);
relay.turn_on_channel(7);
delay(500);
Serial.println("Channel 8 on");
relay.turn_off_channel(7);
relay.turn_on_channel(8);
delay(500);
relay.turn_off_channel(8);
#endif
relay.channelCtrl(CHANNLE1_BIT |
CHANNLE2_BIT |
CHANNLE3_BIT |
CHANNLE4_BIT |
CHANNLE5_BIT |
CHANNLE6_BIT |
CHANNLE7_BIT |
CHANNLE8_BIT);
Serial.print("Turn all channels on, State: ");
Serial.println(relay.getChannelState(), BIN);
delay(2000);
relay.channelCtrl(CHANNLE1_BIT |
CHANNLE3_BIT |
CHANNLE5_BIT |
CHANNLE7_BIT);
Serial.print("Turn 1 3 5 7 channels on, State: ");
Serial.println(relay.getChannelState(), BIN);
delay(2000);
relay.channelCtrl(CHANNLE2_BIT |
CHANNLE4_BIT |
CHANNLE6_BIT |
CHANNLE8_BIT);
Serial.print("Turn 2 4 6 8 channels on, State: ");
Serial.println(relay.getChannelState(), BIN);
delay(2000);
relay.channelCtrl(0);
Serial.print("Turn off all channels, State: ");
Serial.println(relay.getChannelState(), BIN);
delay(2000);
}
步骤 4. 上传演示程序。如果您不知道如何上传代码,请查看如何上传代码。
步骤 5. 通过点击 工具->串行监视器 打开Arduino IDE的串行监视器。或者同时按下 ++ctrl+shift+m++ 快捷键。
:::提示 如果一切顺利,您将看到结果。同时,您会看到板载LED灯交替亮起和熄灭。 :::
Scanning...
I2C device found at address 0x11 !
Found 1 I2C devices
Start write address
End write address
firmware version: 0x1
Channel 1 on
Channel 2 on
Channel 3 on
Channel 4 on
Channel 5 on
Channel 6 on
Channel 7 on
Channel 8 on
Turn all channels on, State: 11111111
Turn 1 3 5 7 channels on, State: 1010101
Turn 2 4 6 8 channels on, State: 10101010
Turn off all channels, State: 0
Channel 1 on
Channel 2 on
在此演示中,我们没有添加负载。如果您想检查如何添加负载,请查看[Grove - 2通道固态继电器](https://wiki.seeedstudio.com/Grove-2-Channel_Solid_State_Relay)。
功能描述
功能 | 描述 |
---|---|
changeI2CAddress(uint8_t old_addr, uint8_t new_addr) | 更改设备地址,其中 old_addr 是当前的地址; new_addr 是您想要使用的地址。只有输入正确的旧地址,才能成功设置新地址。 |
scanI2CDevice() | 获取 old_addr (当前地址) |
getChannelState() | 获取每个通道的状态,例如“状态:1111”,这表示所有继电器都已打开。 |
getFirmwareVersion() | 获取烧录在板载MCU(微控制器)上的固件版本 |
channelCtrl(uint8_t state) | 要立即更改您选择的所有通道, 状态参数列表如下: CHANNLE1_BITor 0x01 CHANNLE2_BIT 或 0x02 CHANNLE3_BIT 或 0x04 CHANNLE4_BIT 或 0x08 CHANNLE5_BIT 或 0x10 CHANNLE6_BIT 或 0x20 CHANNLE7_BIT 或 0x40 CHANNLE8_BIT 或 0x80 例如 channelCtrl(CHANNLE2_BIT|CHANNLE3_BIT),将打开通道2和通道3。 channelCtrl(0x01|0x02|0x08), 将打开通道1、通道2和通道4。 channelCtrl(0), 将关闭所有通道。 |
turn_on_channel(uint8_t channel) | 要打开单个通道。 例如: turn_on_channel(3), 将关闭通道3。 |
turn_off_channel(uint8_t channel) | 要关闭单个通道。 例如: turn_off_channel(3), 将关闭通道3。 |
如果您想更改地址,您需要在使用之前设置地址。例如,我们想要将其更改为0x2f。我们可以使用以下代码。
#include <multi_channel_relay.h>
Multi_Channel_Relay relay;
void setup()
{
Serial.begin(9600);
while(!Serial);
/* Scan I2C device detect device address */
uint8_t old_address = relay. ;
if((0x00 == old_address) || (0xff == old_address)) {
while(1);
}
Serial.println("Start write address");
relay.changeI2CAddress(old_address,0x2f); /* Set I2C address as 0x2f and save it to the EEPRom */
Serial.println("End write address");
/* Read firmware version */
Serial.print("firmware version: ");
Serial.print("0x");
Serial.print(relay.getFirmwareVersion(), HEX);
Serial.println();
}
常见问题解答
Q1: 如何烧录固件?
A1: 我们建议您使用J-Link烧录器和WSD接口来烧录固件。
您可以在这里下载固件:
我们推荐您使用J-Flash软件来进行操作:
在线原理图查看器
资源
- [Zip] Grove-88通道SPDT继电器 eagle 文件
- [Zip] 多通道继电器Arduino库
- [Bin] 出厂固件
- [PDF] G3MC202P的数据手册
- [PDF] STM32的数据手册
项目
这是该产品的介绍视频,里面有一些简单的演示,您可以尝试一下。
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供各种支持,以确保您在使用我们产品时的体验尽可能顺畅。我们提供多个沟通渠道,以满足不同的偏好和需求。