如何正确使用带有 Arduino/Raspberry 的 JD-VCC 的继电器模块?

电器工程 Arduino 中继 树莓派
2022-01-11 05:21:39

我有两个 4 继电器模块,我可能做错了什么,因为它们似乎都不起作用:

我的第一次尝试是使用面包板 5v 电源,将 VCC 和 In1 连接到 5V,将 GND 连接到 GND。我期待第一个继电器切换,但什么也没发生。我尝试了所有 In 引脚但没有

该模块似乎有一些 LED 来指示继电器何时应该打开,它们不亮。

我还尝试了 3v 而不是 5,并将 JD-VCC 连接到另一个电源。我用万用表测试没有任何效果,我连接的所有引脚都通电,所以要么我遗漏了一些东西(很可能),要么我的两个板都坏了

我注意到的另一件事是,如果我应用 5v 和 GND,那么所有 IN 似乎都在 3v 左右

继电器型号:JQC3F-5VDC-C

继电器模块图片

[编辑]

我的模块是通用的,我找不到官方原理图。非常感谢@tlfong01 指点我这个,这似乎是正确的: 电路原理图

1个回答

OP 有一个类似于下图所示的 4 通道继电器模块。该模块在右下角有一个黄色跳线,标记为JD-Vcc它是什么以及如何使用它?


jdvcc继电器


致谢及更新 2020nov01hkt1609

非常感谢@Circuit fantasist 指出,在下面简短答案的示意图中,“短路地线是多余的”。

我同意这种对地线的短路具有误导性并导致混淆。
我最初的计划是画出多余的线,然后用以下内容将其划掉:

笔记:

(1) 通常如果继电器模块有外部电源,重要的是要将Arduno/Rpi信号地与外部电源地短接,使Rpi信号与外部电源地具有公共地。

(2) 但是,对于这种“全光隔离配置”,Rpi 地不应短接到外部电源地,因为 Rpi 使用的光耦合器独立于继电器模​​块的任何电气部分。Rpi Vcc 通过 1k 向 LED 提供电流,LED 将光信号输入到另一侧的光电晶体管。没有电流接地用作参考。在 Rpi 由电池供电的情况下,Rpi 的接地可以是“浮动的”并且不与继电器模块电气连接。


简短的回答

OP的4通道继电器模块是“ Low Logical Level Triggerable ”(低触发),带有“ JD-Vcc跳线”,以适应继电器电源和控制信号电平的不同配置。一种非常简单的接线方法如下所示。


jdvcc接线


以 3V3 Raspberry Pi(或 3V3 Arduino)为例,Songle 继电器开关电源来自外部 5V 电源,Vcc 连接到 Rpi 的 3V3 逻辑电源,IN 连接到 Rpi GPIO 引脚输出模式。

如果 IN 处的信号为低电平(0V,接地),则电流从 Vcc 流(吸收)到 IN,光耦合器 EL817C 被激活,Songle 开关被激活(通电),触点 COM 连接到 NO(常开)。

如果信号为高(~3V),则电流吸收太小而无法激活光耦合器,因此松乐开关断电,继电器关闭。


长答案

内容

Part A - Simple High Low Trigger Relays Without Opto Isolation 

Part B - High and Low trigger relay modules with optical isolation

Part C - Boot time Relay Module Status, relay switch spec and misuse of NC terminal

Part D - Confusion between JD-Vcc jumper and High/Low Level Select Jumper Relays

Part E - Using The JD-Vcc Jumper for Total Optical Isolation / to continue, ...

Part F - Discussion and Recommendation - / to continue, ...

References - / to continue, ...

Appendices - / to continue, ...

介绍

上面简短回答中描述的简单接线和操作不涉及 JD-Vcc 跳线,这是一种非常巧妙的电子电路设计。下面的长答案详细描述了 JD-Vcc 电路,从带和不带光隔离的高低触发继电器的最基本思想开始。


A 部分 - 不带光隔离的简单高低电平触发继电器模块

为了解释低触发继电器和高触发继电器的概念,让我们从无光学方法开始,并查看下面的相应示意图。


低高触发继电器


高触发继电器


B 部分 - 带光隔离的高低触发继电器模块

过度简化的原理图粗略地了解了高和低触发电路的操作。真正的电路必须有一个“反激二极管”来在关断激励电流时吸收反激电流的能量。光隔离器”通常用于防止/减少返回信号源 (Raspberry Rpi) 的 EMI(电磁干扰)噪声。噪声通常也会通过地线。这就是为什么“ JD-Vcc跳线”进来,做“全光隔离”(更多关于他的后文)。

我只是做出有根据的猜测,即 OP 的继电器是低电平触发的。他的模块实际上是高电平触发的可能性很小,如下图。在该电路中,高信号激活/打开继电器开关。


高触发光电


C 部分 - 启动时间继电器模块状态、继电器开关规格和误用 NC 端子

一个重要的说明是,无论模块是高电平还是低电平触发,如果 Rpi/Arduino 未通电,或者 GPIO 引脚在启动或其他情况下处于输入模式,则没有电流驱动或吸收来激活光耦合器,继电器始终关闭.

对新手的一个相关警告是,您始终使用 NO 引脚,而不是 NC 引脚,否则继电器在启动时打开或 GPIO 在输入模式下。

另一个混淆是在“继电器开关”和“继电器模块”之间。蓝色的小方块是继电器开关,通常标有“Songle”或通灵或WV等其他品牌。不幸的是,继电器模块几乎总是没有品牌或型号标记。

另一个令人困惑的是光耦合器。

需要注意的是,光耦输入仅为5mA左右,而松乐继电器开关激活电流约为70mA下面的图片可以帮助澄清一些事情。


继电器开关规格

继电器开关迟滞

光耦合器


D 部分 - JD-Vcc 跳线和高/低电平选择跳线继电器之间的混淆

在详细研究 OP 的 JD-Vcc 跳线继电器及其控制方法之前,区分 JD-Vcc 跳线和 H/L 电平选择跳线很重要。H/L 选择跳线继电器的示意图如下所示。 该继电器允许用户选择继电器作为高电平或低电平触发

该示意图是对您对不同类型继电器的透彻理解的测试。注意 - 您需要研究上面 C 部分中所示的 EL354 双向输入光耦合器的规格。

H/L 选择跳线继电器

/ 接着说, ...


参考

(1) SunFounder 4 通道 5V 继电器模块,带光耦和 JD-Vcc 跳线,用于单独的信号电源(Rpi/Arduino Vcc = 3V3 或 5V)和继电器开关电源(单个继电器开关 JD-Vcc = 5V、12V 或 24V)

(2) Songle SRD 系列继电器开关规格

(3) Forbes Low Level Trigger Relay Module with JD-Vcc jumper Basics - rpi.org.forum 2018jul14

(4) Forbes Low Level Trigger Relay Module with JD-Vcc jumper Wiring - rpi.org.forum 2018jul14

(5)锁定 Frying Rpi 示例 1/2

(6)锁定 Frying Rpi 示例 2/2

(7) Rpi GPIO EE(电压和电流)规格 - Mosiac Documentation Web

(8)闩锁 - 维基百科

(9)寄生结构的闭锁 - 维基百科

(10)晶体管负载线分析 vue教程

(11) Rpi 无法使用光隔离器和 JD-Vcc 跳线激活 5V 继电器 - 询问 2019mar27,查看 2k 次

(12) SunFounder JD-Vcc 原理图


附录

附录 A - 缩写“ JD ”是什么意思,如何使用这个 JD-Vcc/Vcc 跳线?

嗯,继电器的中文是“继电器”,字面意思是“通电装置”。在“拼音”中,汉语拼音如下:

极点奇

所以我猜想设计电路的中国人使用以下缩写:

JD-Vcc 是连接到 [external] 继电器 (JD) 电源的引脚,而 Vcc 是连接到 Arduino 或 Raspberry Pi 电源轨/电源的引脚

现在,如何使用 JD-Vcc 跳线:

(1) 如果您对 (a) 继电器模块的控制电路和 (b) Songle 继电器开关使用相同的 Arduino/Rpi 的 5V 电源/导轨,则将 JD-Vcc 跳线盖住,将 Vcc 引脚短接到JD-Vcc 引脚。

(2) 如果您使用单独的电源,即 (a) Arduino/Rpi 的 3V3/5V 电源/导轨用于控制电路,以及 (b) 外部 5V/12V/24V/48V (注 1) 用于 Songle 继电器开关,那么你不应该盖住JD-Vcc跳线,即断开Vcc引脚与JD-Vcc引脚的连接,否则会熔化或炸毁。:)

注 1 - 对于工业应用,包括汽车应用,继电器通常使用 12V/24V 电源,因为更高的电压意味着 (a) 更少的电流,(b) 更少的噪音问题。


附录 B - 如何测试/故障排除/解决方法 低电平可触发继电器(带或不带光电隔离,带或不带 JD-Vcc 跳线)

介绍

虽然 OP 的问题是关于他的继电器,它是低电平触发、光耦合、JD-Vcc/Vcc 跳线可配置电源,但我们需要了解高/低触发电路的光耦合器 (EL817C) 偏置的基础知识。

这个非常悲伤的故事开始于美好的过去,当我们这些爱好者只玩 5V Arduino 并且所有逻辑电平都是 5V TTL 时,生活很轻松。

只有当 3V3 Raspberry Pi 出现,后来也出现了 3V3 Arduino(Pro Mini 328 3V3 8MHz),生活变得混乱,特别是对于只知道 Arduino/TTL 5V 逻辑的老手/新手。

要理解为什么所有(嗯,几乎)新手都会感到困惑,我们需要仔细查看以下逻辑级别图,显示新手 3V/5V 悲伤的根本原因。


逻辑层次图


让我们关注最左边的两列,TTL 和 Arduino。那个时候,我的 Arduino 小伙伴们都以为 Arudino 帝国从此过上幸福的生活,没想到像 Rpi 这样的大人物很快就会出现。所以故事比 Arduino 工程师设计了一个新的逻辑级标准/规范:

High level means at least 4.2V

Low level means at most 0.8V

结果是大多数设备,比如执行器,包括继电器,螺线管,蜂鸣器,你说出来的,都符合这个规范,(后面的 Rpi 家伙吓人)要求使用高电平做某事,你需要提供 4.2V 或更高.

当然这让后来出生的Rpi的生活,很凄惨,因为他们都是弱3V3的家伙,他们的High一般都是2.4V到最多3.2V。这就是我通常所说的

低触发继电器始终开启,因为 Rpi 的高电平不够高问题


附录 C - JD-Vcc 跳线如何解决 3V3 Arduino/Ri 的 High-Not-High Enough、Relay-always-on-can't-off-off 问题?


arduino继电器问题


采用独立(Vcc和JD-Vcc)电源的JD-Vcc电路解决了“ Rpi's High not enough ”,导致“ Relay always on and cannot off off ”的问题。

jdvcc继电器接线

说明- 如果 Vcc = 5V,Rpi 大约 3V 的高电平不够高(需要 3.5V ~ 4.2V),不足以使 LED 灌电流小到足以关闭对面的光电晶体管。如果 Vcc 降低到 3V3,即使 Rpi High 仍然是 3V,电压差 3V3 - 3V = 0.3V,限制了灌电流 LED 电流太小而无法激活其相反的光电晶体管。

注 1 - 还有其他几种方法可以解决“Rpi-High-4Not-High_Enough = Low Trig Relay Always On”的问题。这些方法包括 (1) 通过 NPN BJT(例如 2N2222 集电极开路上拉)将 Rpi 高信号从 3V 转换为 5V(2)使用 MOSFET 对(例如 2N7000 或 TBX010x 逻辑电平转换模块)将 Rpi GPIO 3V3 逻辑电平转换为 5V。

但是,使用JD-Vcc电路,不仅仅是通过逻辑电平移位来解决问题,实际上是一石二鸟。要解释一块石头如何杀死 4 只鸟,我们需要逐只鸟看 4 只鸟。第一个鸟是如何通过以下两个技巧之一关闭始终开启的继电器:

1.  Change the GPIO pin from output mode to input mode, or  

2.  Clean up (all) the GPIO pins.

此技巧或解决方法在以下附录中进行了描述。


附录 C - 如何关闭始终开启(低触发)继电器(不使用 JD-Vcc 跳线)

介绍

这是一个常见的 Rpi/3v3 Arduino Mini Pro 新手的悲哀。许多新手错误地购买了为 Arduino 设计的低触发继电器,发现继电器始终开启。以下是对现实生活中悲伤故事的简短描述。(我正在使用这个非常简单的 Arduino 继电器来解释解决方法。这个问题中描述的 JD-Vcc 继电器实际上可以使用相同的技巧。)

照片显示 Arduino 继电器无法与 Rpi 配合使用。


继电器


继电器总是在问题 1


原理图(不完全匹配,带有额外的蓝色 LED,PNP BJT 2N5401 实际上是 CS9012)


继电器总是在问题 2

说明- 如何关闭 5V Arduino 低触发始终开启继电器

这是一个众所周知的新手。根本原因是 3V3 Arduino 和 3V3 Rpi 的 High(高于 3V)不够高(需要 3.5V ~ 4.2V)导致一些电流仍然激活 PNP BJT(或 JD-Vcc 继电器外壳中的光电耦合器 LED),等等松乐继电器电流不关,一直开。

现在新手的解决方法是通过将 GPIO 引脚从输出模式更改为输入模式来切断激活电流的蛮力方法。在输入模式下,没有电流可以流入 GPIO 引脚,因此 PNP BJT(或照片 LED)会断开。使用 GPIO 清理具有将 GPIO 返回到默认输入状态的相同效果。

但是,蛮力解决方法有一个严重的问题:“通过电阻将 5V 电源连接到 GPIO 引脚,可能会导致锁存效应,如下图所示(附录 D)


附录 D - 锁定问题、烧坏 Rpi 或缩短其寿命

介绍

遗憾的是,Rpi 新手没有得到足够的警告,他们不应该将任何 GPIO 引脚连接到 5V 电源轨如果他们这样做,Rpi 将立即被炸毁。

并且将 GPIO 引脚连接到 5V,即使通过电阻器,也可能是致命的,如下文所述。


闭锁问题


所以我们现在应该被警告,将 GPIO 引脚设置为输入模式以关闭继电器的新手解决方法也可能导致闩锁并烧毁 Rpi,尽管可能性很小。

闭锁问题


附录 D - 继电器分类

我们从 OP 的 Low Trigger 继电器,带 JD-Vcc 跳线开始,描述了如何使用 JD-Vcc 跳线进行两个电源配置,从而解决了 Rpi-High-Not-High-Enough、Low-Trig-Relay - 始终开启无法关闭问题。

然后我们以简单的低触发继电器为例来说明如何使用 Switch-To-Input-Mode-To-Turn-Off-Relay 的解决方法。我们还解释了这种解决方法可能存在闩锁问题,并且可能会烧毁 Rpi,因此不推荐。

到目前为止,我们还没有接触到另一大类继电器,即高触发继电器。为了让事情不那么混乱,我制作了以下 Excel 图表。

继电器分类


附录 E - 为什么高触发继电器永远不会出现 Rpi-High-Not-High-Enough-and-Relay-Cannot-Turn-Off 问题?

我们将使用下面的高触发继电器来解释为什么没有这种无法关闭继电器的问题。

ky019 -1


ky019- 2


ky019 -3


下图显示了为什么对于 Arduino High (> 4.2V) 触发继电器,即使 Rpi 的 High (> 2.4V) 仍然足以触发继电器。


高触发继电器操作


附录 F - 为什么低触发继电器(JD-Vcc 或其他)经常出现 Rpi 高不够高的问题?

参考(10)晶体管负载线分析 vue教程

很难解释。您需要对比 High trig NPN 和 Low trig PNP 电路和 VI 特性(窄截止,宽活动/饱和带),以了解很难偏置 Low trig 继电器,使得 Arduino High 的 4.2V 和 Rpi 2.4 ~ 3.2V可以切断继电器。

pnp 与 npn cct

/ 接着说, ...