继电器模块 Arduino 接线与安全指南

Cartoon of a red relay module with blue screw terminals wired between an Arduino Uno and a 12V fan

继电器模块让 Arduino 或 ESP32 的小信号去开关一个完全独立的电路——12V 风扇、5V 水泵、LED 灯条。控制侧接 5V、GND 和一个 GPIO,负载接在公共(COM)和常开(NO)上,先在低压直流上练熟,再谈 240V 市电的事。本文讲的就是 MakerHub 在卖的这款板子——包括让很多人误以为“继电器反了”的 HIGH/LOW 触发跳线。

继电器模块到底是做什么的?

继电器模块就是一个电控开关:线圈把触点从一个位置吸到另一个位置,板上的光耦和驱动三极管让微控制器引脚可以安全地控制这个线圈。MakerHub 板子上那块蓝色继电器是 Songle SRD-05VDC-SL-C,它的 5V 线圈吸合时大约消耗 71mA——远超 GPIO 引脚应该输出的电流,这正是这个模块存在的意义。

三个输出端子可以想象成一条走廊、两扇门:

端子 含义 继电器闲置时的状态
COM 公共(Common)——活动触点 始终在电路中
NO 常开(Normally Open) 断开——线圈吸合之前负载保持关闭
NC 常闭(Normally Closed) 接通——线圈吸合之前负载保持开启

几乎所有项目都该用公共(COM)加常开(NO),这样在你的代码打开负载之前它一直是断电的。这颗继电器是单刀双掷(SPDT):COM 任何时候只贴着其中一扇门,绝不会同时碰两扇。

卡通门的类比图:继电器公共触点 COM 在常开与常闭两扇门之间选择
COM 是走廊;常开(NO)是那扇开着的门,常闭(NC)是关着的那扇。线圈吸合时,COM 贴的门就换了一扇。

该买哪一款继电器模块?

下面的 1 路和 2 路继电器模块是同一套电路——同样的红色 PCB、接线端子、光耦、指示 LED 和触发选择跳线——按你要开关几路负载来选就行。Arduino Uno 兼容板(CH340G)带哪一款都轻松。

HIGH/LOW 触发跳线是干什么的?

HIGH/LOW 触发跳线——三针排针上一个小黑帽,旁边标着 H 和 L——决定哪个逻辑电平让继电器吸合。跳线帽在 L 位时,板子是低电平触发:IN 被拉低(LOW)时继电器吸合;在 H 位时,则是 IN 被驱动为高(HIGH)时吸合。

网上大多数教程默认的是老式固定低电平触发的板子,所以它们的程序在跳线放 H 位的板子上会反着跑——而且出厂位置每批货都可能不一样。别靠猜;看清楚你手上这块板的跳线帽压在哪一对针上。

接任何负载之前先做一分钟测试:输出端子空着,给板子上电,用程序切换 IN,一边看通道 LED 一边听咔哒声。如果动作和代码相反,就挪跳线帽,或对调程序里的 ON/OFF 常量——什么都没接的时候,继电器反着动作毫无代价。

红色继电器模块 PCB 上高低电平触发选择跳线两种位置的卡通特写
触发选择跳线:同一块板,两种性格。相信任何程序之前,先确认跳线帽压在哪一对针上。

继电器模块怎么接 Arduino Uno?

继电器模块的引脚是六个螺丝位:控制侧 DC+、DC− 和 IN,输出侧 NO、COM 和 NC——两边都是接线端子(screw terminal),不是排针。IN 只驱动光耦内部的 LED——每通道 15–20mA 的负载——而线圈那约 71mA 走的是 DC+;Uno 的 GPIO 每个引脚只标称 20mA,这就是为什么线圈绝不挂在引脚上。

继电器端子 Arduino Uno 用途
DC+ 5V 线圈和光耦供电(每路吸合约 71mA)
DC− GND 接地
IN D7 触发信号(15–20mA,光耦输入)

先从低压负载开始——带独立电源的 12V 风扇最合适;同样的接法也用来驱动我们 Arduino 自动浇花项目里的 5V 水泵。

说明
12V 电源(+) 继电器 COM 电源从这里进入开关
继电器 NO 风扇红线 常开(NO)让风扇默认保持关闭
风扇黑线 12V 电源(−) 完成负载回路
Arduino Uno 通过带接线端子的红色继电器模块控制 12V 风扇的卡通接线总览
两个独立的回路:Uno 的线在控制侧,风扇和 12V 电源在触点侧。它们只在继电器内部“见面”。

下面的程序两种跳线位置都能用——把两个常量改成和你的板子一致:

// 继电器模块 + Arduino Uno——开关 12V 风扇
// 控制侧:DC+ -> 5V,DC- -> GND,IN -> D7
// 负载侧:12V 电源(+)-> COM,NO -> 风扇(+),风扇(−)-> 电源(−)

const int RELAY_PIN = 7;

// 按你的触发跳线位置修改这两个常量:
// 跳线在 L(低电平触发):引脚为 LOW 时继电器吸合(用 LOW / HIGH)
// 跳线在 H(高电平触发):引脚为 HIGH 时继电器吸合(用 HIGH / LOW)
const int RELAY_ON  = LOW;
const int RELAY_OFF = HIGH;

void setup() {
  digitalWrite(RELAY_PIN, RELAY_OFF);  // 在引脚开始驱动前先定义好 OFF 状态
  pinMode(RELAY_PIN, OUTPUT);
}

void loop() {
  digitalWrite(RELAY_PIN, RELAY_ON);   // 风扇开 5 秒
  delay(5000);
  digitalWrite(RELAY_PIN, RELAY_OFF);  // 风扇关 5 秒
  delay(5000);
}

ESP32 的 3.3V 能触发 5V 继电器模块吗?

ESP32 的 3.3V 逻辑电平在实际使用中可以可靠触发这类 5V 光耦板:DC+ 从开发板的 5V/VIN 引脚取电,两边共地,IN 直接接 3.3V 的 GPIO。光耦只需要点亮内部 LED 的那一点电流,对这种板子来说 3.3V 通常够用。

两句实话。DC+ 千万别接 3.3V 引脚——线圈是按 5V 绕的。另外,光耦输入电阻各批次会有差异,所以拿到新板先做空载咔哒测试;偶尔会有批次就是偏好真 5V 触发。3.3V 与 5V 逻辑电平的来龙去脉,我们在 ESP32、ESP8266 与 Uno 对比里讲得很清楚。

这个继电器模块能开关 240V 市电吗?

Songle 继电器外壳上印着 10A 250VAC / 10A 30VDC,这个额定值是真的——但它说的是那块密封的蓝色继电器本体,而不是把整块裸模块当成品用。模块有裸露的接线端子,没有外壳,PCB 布局也没有针对马来西亚潮湿环境做爬电距离设计,所以它本身只是一个元件,不是电器开关。数据手册自己的表格还比外壳印字更保守:

额定值 出处 对你意味着什么
10A 250VAC / 10A 30VDC 印在继电器外壳上 触点本身的认证上限
10A 125VAC / 7A 240VAC / 7A 28VDC 数据手册,Form C 阻性负载 在马来西亚的 240V 下,按 7A 规划——不是 10A
3A(cosΦ=0.4,120VAC/28VDC 条件下) 数据手册,感性负载——240VAC 感性额定值根本没有公布 电机、水泵和电磁阀能用的预算低得多

还有法律这一层:根据马来西亚《1994 年电力条例》(Electricity Regulations 1994),即便是住家的单相布线,也必须在 Suruhanjaya Tenaga(能源委员会)注册的合格人员——持牌 wireman(注册电工)或电气承包商——的监督下进行。固定的 240V 布线是他们的工作,不是周末实验。

如果项目确实需要开关市电电器,成熟的做法是:装外壳、加保险丝、用额定规格足够的电缆、通电时绝不触碰端子——而且市电部分由合格人员施工或检查。我们刻意不发布 240V 的操作教程;请在 12V 上把逻辑练熟,在那里犯错是学费,而不是事故。下面这条视频冷静地讲了开关交流电到底涉及什么:

裸继电器模块与装壳加保险丝的市电开关成品的卡通对比图
桌上的裸模块,对比装壳、加保险丝的成品——只有后者才有资格靠近 240V,而且即便如此,布线也要由持牌 wireman(注册电工)签核。

为什么电机和电磁阀要格外小心?

电机、水泵、电磁阀和变压器会把能量存在磁场里,继电器触点断开的瞬间,这些能量会在触点间隙拉出电弧。电弧会把触点烧出麻点,最终把触点焊死,这正是数据手册把感性额定值降到 3A 的原因。用量要远低于外壳印的数字;直流感性负载要并联一个续流二极管,交流负载则在触点两端加 RC 缓冲电路(snubber)来压住电弧。(模块自己的线圈已经带了二极管——这里说的是你要开关的那个负载。)

真实客户常犯的错误

因为教程这么写,就默认板子是低电平触发。经典的“继电器反着动作”反馈,几乎都是触发跳线的位置和程序常量相反。先查跳线,再查代码。

负载接到了常闭(NC)而不是常开(NO)。症状是一通电负载就转,代码说开它反而停。把线从 NC 挪到 NO;用万用表的通断挡分别量 COM 与各端子之间,几秒钟就能看出区别。

DC+ 接了 3.3V 引脚。继电器抖动、嗡嗡响,或干脆不吸合。光耦输入受得了 3.3V,线圈受不了——DC+ 永远给 5V。

把绝缘皮夹进了接线端子。接线端子(screw terminal)喂什么夹什么,包括塑料。剥出 5–6mm 铜线,插到底,拧紧,然后每根线都拉一下测试——夹住绝缘皮的接头在台面上能用,之后会突然失效。

让电机跑满外壳印的额定值。10A 是阻性负载的天花板,不是电机的预算。感性负载按 3A 算并加缓冲电路,或者换一个余量足够大的继电器。

常见问题

继电器模块需要单独的电源吗?

在 Uno 的 5V 上带一两路,不需要——按每路吸合约 71mA 做预算。如果多路继电器同时保持吸合,或者继电器一咔哒板子就掉电重启,就给 DC+ 单独配一路 5V 电源,并把两边的地连在一起。

这个 5V 继电器模块能用 12V 供电吗?

不能。线圈按 5V 绕制,数据手册限定线圈电压最高为标称值的 120%——也就是 6V。12V 系统里,把电源降压到 5V 供给 DC+,负载的 12V 留在触点侧——那才是它该在的地方。

用这个模块开关烧水壶或电饭锅安全吗?

裸板放桌上直接开关,不安全。市电电器是 240V 级别的活:要外壳、保险丝、额定规格足够的电缆,并且按马来西亚法规,布线要由持牌 wireman(注册电工)施工或检查。先在 12V 负载上搭出同样的逻辑——代码原封不动就能搬过去。

1 路和 2 路模块有什么区别?

按单路看是同一套电路——同样的 Songle 继电器、光耦输入、触发跳线、接线端子。2 路板多了一块继电器和一个 IN2 端子,两路同时吸合时,约 71mA 的线圈预算要算两份。

最后更新:2026年8月。有问题?WhatsApp 联系我们

Leave a Reply

Your email address will not be published. Required fields are marked *