可以将输出拉到地面的IC,也许不是门?


8

我的板上有四个继电器。它具有标准的Vcc,Gnd和In1-In4引脚。我想用Arduino或ESP32来控制它。但是,我注意到,当控制器上的输出引脚被拉至高电平时,当它被拉至低电平时,继电器将接合。

当板复位时,这是一个问题,因为所有继电器开关都将接合,直到这不是我想要的。经过一番挖掘,我做到了:

简单的逆变器

这可以按需工作,继电器上始终有5V电压,并且继电器一直处于断开状态。当我将信号输出到Q1的基座时,它将把输出拉到地,继电器将接合。

现在我有四个这样的继电器,不久以后我还会有更多的。所以,我想用IC解决这个问题。特别是,我一直在查看IC7404,它是一堆NOT门,但是,我不确定这能否解决我的问题。

那么,当输入端出现信号时,是否有IC可以将输出拉至地?7404是否可以工作,但我什么都没看到?:)

编辑:这是我正在使用的继电器模块。我找不到任何有用的数据表。


1
欢迎来到EE.SE。我将继续前进,并为您的示意图+1。它可以用逆变器解决,但是要回答我们,您需要了解您的输出功率要求。你知道你有多少负载吗?
温妮

1
如果要操作继电器,则可能需要在输出到5 V之间增加一个反向偏置的二极管。谷歌搜索续流二极管或续流二极管会给出更多的信息
科林

1
请提供继电器数据表的链接。我们需要知道他们需要多少电流。7404可能无法吸收足够的电流。
Elliot Alderson

您表示信号是什么?是“输入”节点上的+ 5v高压,什么是“信号不存在”,0V或未知/已断开?
R.Joshi

不清楚为什么继电器会在复位时处于活动状态,因为通常引脚处于高阻抗状态,除非您不明智地选择了模式捆绑引脚或自举程序中涉及的引脚。
克里斯·斯特拉顿

Answers:


2

令人担忧的是,当引脚应处于高阻抗模式时,继电器会在复位时动作,这是令人担忧的事情,您需要充分了解这一点才能验证系统并进行修复。

编辑:显然,这是代码中的软件错误,要解决启动过程中意外驱动为低电平的问题,请在将引脚设置为输出之前将引脚的输出数据寄存器位配置为高。

就是说,您最初的问题的字面上答案将是包含几个的筹码open collector inverters

74xx05是一个示例。

74xx06与之相似,但是即使超过电源电压也可以向输出施加可接受的电压,例如,您可以在3.3v电压下操作器件,但将输出电压从5v下拉。

但这不是您实际问题的解决方案。


您说对了,我必须检查启动程序。通常,我会设置所有I / O参数并初始化所有内容,然后再处理引脚的默认状态。当将该引脚设置为输出引脚时,它会自动进入LOW状态。在pinMode()和第一个digitalWrite()之间似乎有足够的时间将引脚设置为HIGH状态,从而阻止继电器接合。因此,我现在的解决方案是调用pinMode(),然后立即将引脚设置为HIGH。
BigWhale

将它设置为高之前,你把它的输出,而不是之后。
克里斯·斯特拉顿

您有继电器线圈的驱动程序,是吗?添加上拉电阻至其输入即可。
CrossRoads

1
@CrossRoads上拉电阻既不能解决问题,也不能完全改善问题。问题在于,问问者的软件执行顺序错误,在将引脚驱动为高电平之前将其驱动为低电平。错误的低驱动将克服您的上拉电阻。此外,这些可能是光耦合器LED的阴极-上拉实际上根本不做任何事情,所需要的不是错误地完成接地。
克里斯·斯特拉顿

当器件经过复位/引导过程且引脚悬空时,上拉电阻将使引脚保持高电平。
CrossRoads

0

最简单的解决方案是交换继电器的NO和NC引脚的连接。

下一个选择是反转该引脚的编程逻辑。您可以添加一些常量

#define RELAY_ON LOW
#define RELAY_OFF HIGH

为了在复位期间将继电器偏置到特定状态(输出引脚处于高阻抗状态),您可以根据需要添加上拉或下拉电阻。IO引脚将很容易使通过电阻器泄漏的电流过载,并且仍能正确切换继电器。

使用这两种技术,您可以将继电器的默认状态选择为无电状态。是因为它是大多数时候使用的那个,还是因为它是故障安全选项。


我想你错过了重点。OP不希望继电器在复位时被激活。
Elliot Alderson

0

这是您的继电器的“用户手册”。如果没有所有数据表,那么您绝对不应该设计一个系统。

从提供的原理图中可以清楚地看到,您可以将控制器直接连接到InX引脚。也就是说,不需要您设计的原理图。

由于光耦合器的输入能够在集电极开路模式下工作,因此我建议您在将继电器保持在NC时仅保持uC的相应引脚作为输入/高阻态

由于我对您的控制器不熟悉,因此这里有一些伪代码可以帮助您:

初始化,对于控制继电器的每个引脚:

Set direction to input
Set level to "0" (do NOT change direction to output)

命令中继到NO:

Set direction to output

命令中继回NC:

Set direction to input

通常,uC会将其引脚已经作为输入唤醒,因此初始化的第一行是多余的,但是执行它以确保系统处于已知状态始终是更安全的。确保您没有某些代码可以将所有引脚的通用初始值初始化为某些样板代码的一部分,众所周知,初学者会犯此错误。

PS对于您实际上需要反相电流驱动器的时间,只需使用ULN2003A之类的东西即可


3
“ ULN”不是一部分。显示实际的零件编号,不要隐藏在链接中
克里斯·斯特拉顿

这是我使用过的该系列的唯一部分,因此对我而言,它始终是“只是ULN”。
Equilibrius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.