亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用您的 Arduino 控制多达 65,280 个继电器!

组件和用品

Arduino Nano R3
× 1
IO 扩展器
IO 扩展器
× 1
中继扩展器
× 1
IO 扩展器
× 1
Arduino 16 继电器板
× 1

应用和在线服务

Arduino IDE

关于这个项目

使用 IO 扩展器和继电器扩展器控制多达 65,280 个继电器。

需要在您的项目中添加大量继电器吗?那么您需要带有继电器扩展器的 IO 扩展器。每个 IO 扩展器最多可以控制 16 个菊花链式继电器扩展器,总共 256 个继电器。然后将 255 个 IO 扩展器连接在一起,您可以有选择地控制多达 65,280 个继电器。

带有单个 IO 扩展器的控制继电器

功能列表

  • 使用便宜的 <15 美元 Arduino 16 继电器板。
  • 易于使用的继电器控制命令。
  • 一次控制单个继电器或银行。
  • 无需驱动程序。节省代码空间。
  • 没有数据空间来维持中继状态。
  • 无需额外的电源。

构建继电器组所需的部件

  • IO 扩展器
  • IO 扩展器
  • 中继扩展器
  • Arduino 16 继电器板

接线图

注意: 在上面的接线图中,IO 扩展器和 Arduino Nano 由第一个继电器板供电。所有继电器扩展器都由它们所连接的继电器板供电。

/* IO Expander
*
* 控制 64 个继电器
*
*/
#include
# include "IOExpander.h"
#include
//#define SERIAL_DEBUG
#define MAX_RELAYS 64
#ifdef SERIAL_DEBUG
SoftwareSerial swSerial( 8,7);
#endif
char cmd[10];
void setup()
{
Serial.begin(115200);
# ifdef SERIAL_DEBUG
swSerial.begin(115200);
swSerialEcho =&swSerial;
#endif
wdt_enable(WDTO_8S);
sprintf(cmd, "eb%d", MAX_RELAYS / 16);
SerialCmdDone(cmd);
}
void loop()
{
static int i =1;
sprintf(cmd, "e%df", i);
SerialCmdDone(cmd);
if (i++>=MAX_RELAYS) i =1;
sprintf(cmd, "e%do", i);
SerialCmdDone(cmd);
delay(100);
wdt_reset();
}

多个 IO 扩展器控制继电器

另一种控制继电器的方法是使用多个 IO 扩展器。这使我们能够将传感器和继电器分配到中央或星型网络,但仍将所有 IO 扩展器互连到单个串行总线上。如果您必须将 IO 扩展器分开长达 4000 英尺,请使用如下所示的 IO 扩展器和标准的蓝色 Cat5 网络线。

接线图

注意: 在上面的接线图中,所有 IO 扩展器和 Arduino Nano 都由第一个继电器板通过串行总线供电。所有继电器扩展器都由它们所连接的继电器板供电。

/* IO 扩展器
*
* 带有 IO 扩展器的 Relay Bonnaza!
*
*/
#include
#include "IOExpander9Bit.h"
#include
#define MAX_BOARDS 4
char cmd[10];
void setup()
{
Serial9Bit.begin(115200, SERIAL_9N1);
Serial9Bit.write(0); // 将 IO 扩展器设置为 9 位
wdt_enable(WDTO_8S);
for (int board =1; board <=4; board++)
SerialCmdDone(board, "eb1");
}
void loop()
{
static int board =1;
static int relay =1;
sprintf(cmd, "e%df" ,relay);
SerialCmdDone(board, cmd);
if (++relay> 16) {
relay =1;
if (++board> MAX_BOARDS) board =1;
}
sprintf(cmd, "e%do", relay);
SerialCmdDone(board, cmd);
delay(100);
wdt_reset( );
}

那么为什么我需要控制这么多继电器?

一种这样的应用是在鱼菜共生或水培中。许多传感器和设备需要自动化到每个种植床或单个植物。这需要极高的 IO,而 IO 扩展器可以提供。

因此,立即获取您的 IO 扩展器并构建您的系统!

代码

  • 使用单个扩展器控制 64 个继电器
  • 使用多个扩展器控制 64 个继电器
使用单个扩展器控制 64 个继电器C/C++
/* IO Expander * * Control 64 Relays * */#include #include "IOExpander.h"#include //#define SERIAL_DEBUG#define MAX_RELAYS 64#ifdef SERIAL_DEBUGSoftwareSerial swSerial(8,7);#endifchar cmd[10];void setup(){Serial.begin(115200);#ifdef SERIAL_DEBUG swSerial.begin(115200); swSerialEcho =&swSerial;#endif wdt_enable(WDTO_8S); sprintf(cmd, "eb%d", MAX_RELAYS / 16); SerialCmdDone(cmd);}void loop(){ static int i =1; sprintf(cmd, "e%df", i); SerialCmdDone(cmd);如果 (i++>=MAX_RELAYS) i =1; sprintf(cmd, "e%do", i); SerialCmdDone(cmd);延迟(100); wdt_reset();}
使用多个扩展器控制 64 个继电器C/C++
/* IO 扩展器 * * 带有 IO 扩展器的 Relay Bonnaza! * */#include #include "IOExpander9Bit.h"#include #define MAX_BOARDS 4char cmd[10];void setup(){ Serial9Bit.begin(115200, SERIAL_9N1); Serial9Bit.write(0); // 将 IO 扩展器设置为 9 位 wdt_enable(WDTO_8S); for (int board =1; board <=4; board++) SerialCmdDone(board, "eb1");}void loop(){ static int board =1;静态 int 中继 =1; sprintf(cmd, "e%df", 中继); SerialCmdDone(board, cmd);如果(++继电器> 16){继电器=1;如果(++板> MAX_BOARDS)板=1; } sprintf(cmd, "e%do", 中继); SerialCmdDone(board, cmd);延迟(100); wdt_reset();}

示意图


制造工艺

  1. 对吊扇启用 Alexa Control
  2. 使用 Arduino 控制硬币接收器
  3. Arduino 控制中心
  4. Arduino 带蓝牙控制 LED!
  5. Arduino 加湿器控制
  6. Arduino Nano:使用操纵杆控制 2 个步进电机
  7. 使用 Cortana 控制 LED
  8. ThimbleKrox - 用手指控制鼠标
  9. 使用智能手机控制您的灯光系统
  10. 用 30 美元以下的 Arduino 控制蟑螂
  11. 使用 Arduino Uno 和蓝牙进行汽车控制
  12. 25 kHz 4 Pin PWM 风扇控制与 Arduino Uno