到目前为止,我遇到的问题是我无法切换继电器。 GPIO输出引脚不提供5V电压吗?我以为Pi是在GPIO上做的。
#1 楼
为什么不这样简单?Raspberry Pi在0和3V3之间切换,足以使Q1饱和,这接管了“繁重的”工作:打开/关闭+ 5V继电器。根据您使用的继电器,可能会对D1和Q1进行一些小的修改。
评论
很好的答案!这是一种非常安全的方法。
– Piotr Kula
2015年1月1日21:50
很好的答案,那应该彻底解决“继电器问题”。也许最好补充一下,Pi和继电器的电源电压应该相同或者至少共享一个公共GND。尽管这对于电气工程师来说似乎很明显,但对于初学者来说却是一个陷阱。
–加纳马♦
2015年3月4日14:57
R2的目的是什么?
–erikH
2015年11月5日在7:28
@erikH:该电阻将确保Q1的基极具有固定的电平(在这种情况下,接地),以防R1的输入浮动。如果您确定输入永远不会浮动,则不需要R2,但这是一种“保护措施”。如果输入可以浮动并且您没有连接R2,则晶体管可以不受控制的方式开始切换。
– GeertVc
2015年11月5日在16:33
激活继电器后,它将在线圈中积累能量。当继电器突然停用(即,开关Q1断开)时,需要释放能量。如果D1不存在,则Q1必须吸收所有能量。由于我们谈论的是巨大的电压尖峰(远远超过Q1允许的C-E电压),因此几乎可以肯定地损坏Q1。 D1防止了这种情况:它使能量“短路”,因此,能量将代替晶体管散发到继电器本身中。
– GeertVc
19年5月10日在15:02
#2 楼
#简介#OP希望使用Rpi安全地控制5个Sparkfun的Beefcake继电器模块库。他有一个问题,因为Rpi GPIO逻辑电平为3.3V,但他的继电器使用5V逻辑控制。他想知道如何修改Rpi来解决逻辑级差异问题。他的选择包括以下内容:使用晶体管BC5468来驱动继电器线圈;获取一个光电隔离继电器,并使用ULN2803驱动它;使用诸如UDN2981之类的源代码驱动程序,...
经过调查,我现在建议一些解决方案,各有其优缺点。在权衡风险,可靠性,成本等因素之后,OP可以选择一种解决方案。
#内容#
解决方案1-修改NPN晶体管的偏置电阻
解决方案2-使用UDN2981将Rpi的3.3V GPIO信号上移至5V
解决方案3-使用74HC03和74HC04将Rpi的3.3V GPIO信号上移至5V
4-使用74HCT125进行逻辑电平转换
解决方案5-使用TXS0102进行逻辑电平转换
方案6-使用2N2222进行逻辑电平转换
<解决方案7-使用2N7000进行逻辑电平转换
常见问题1-如何为Rpi和继电器模块供电,并将接地连接在一起
常见问题2-如何避免浮动输入问题
FAQ3-我的继电器始终打开,无论是高输入还是低输入,是因为Rpi Low信号不够低吗?
FAQ3-我的Rpi GPIO Low信号不能打开关闭继电器,但将GPIO设置为输入即可。如果这样做会伤害Rpi吗?
硬件故障排除建议
软件故障排除建议
参考文献
#解决方案1.修改NPN晶体管偏置以使其适应兼容3.3V的解决方案有两种通用类型:
(1)修改模块的5V逻辑电平输入电路以适应3.3V信号,
(2)使用3.3V至5V逻辑电平转换器将Rpi的3.3V信号上移至5V。
我现在从(1)开始。
调查
Sparkfun的Beefcake继电器模块具有一个NPN晶体管2N3904(Q2)驱动线圈( U1)。它设计用于Arduino的5V逻辑信号。
我有一个类似的NPN晶体管模块KY019,可以由Rpi的3.3V信号驱动。因此,我检查了其输入信号要求,以了解为什么KY019可以接受3.3V信号,但Beecake无法接受。
我发现KY-019的触发电平为2.5V和0.1mA。 NPN晶体管将该信号放大到50mA,该电流足够高以使线圈通电以激活继电器。
Rpi GPIO(具有2.8V以上的高电平,最大电流限制为16mA),可以舒适地提供4mA电流,直接驱动模块应该没有问题。
线圈的响应时间为10mS。我对Rpi GPIO引脚17进行了编程,使其以40mS的周期(25cps)切换继电器模块,并发现继电器按预期的方式发出了喀哒声。 (我为GPIO信号使用了2米长的连接线,因此继电器输入端的信号有点嘈杂。)
如何修改Beefcake模块使其与3.3V逻辑兼容
Beefcake NPN晶体管具有一个值为1K的限流电阻R2。该电阻器限制了Arduino 5V逻辑高电平的基本电流。放大后的极限范围内的基极电流(通常hFE> 100)足够大,可以使线圈充满能量。
计算到Beefcake继电器模块中的Arduino 5V GPIO电流:
但是,Rpi的逻辑高信号低于Arduino,因此相应的受限电流更小,并且放大后不足以驱动线圈。
Rpi电流i〜(((3V [Rpi高]-1V] / 1K = 2mA)
修改很简单-只需用一个较小的电阻(例如510R)替换1K R2。
Rpi电流i(修改后)=(3V-1V)/ 501R = 4mA
我正在基于电路分析和实验进行教学猜测,我想我的猜测是90%正确。
OP希望使用一种安全的方法,不会炸掉他的Pi,因此为了可靠性,最好使用诸如UDN2981之类的源驱动程序。
/ ...
#解决方案2-使用UDN2981驱动Beefcake继电模块#
评论指出,OP的Sparkfun Beefcake继电模块是高电平触发,因此常用的接收器驱动器ULN2803可以不被使用。驱动程序与ULN2803类似,但应使用电流源而不是电流吸收
我认为UDN2981是OP继电器模块的合适驱动器。
我成功验证了UDN2981驱动类似于Beefcak的高电平触发继电器模块,以及ULN2803触发了低触发信号。以下是摘要。
UDN2981控制高触发,NPN晶体管输入型继电器模块
我首先手动测试了UDN2981,但未连接Rpi来使4个LED闪烁,以使确保电路工作正常。
然后我设置了4个NPN晶体管输入型继电器模块(KY019),并将这4个继电器模块输入连接到4个UDN2981通道输出。
然后我将4个Rpi 3.3V GPIO引脚直接连接到4个UDN2981通道输入。
我使用以下python函数在以下位置切换4个继电器模块: 25 cps。
结果很好。 4个继电器模块发出咔嗒声,并且LED以预期的25cps闪烁。 Rpi GPIO输出信号保持在3.3V附近,而UDN输出信号保持在4.0V附近,这表明没有输入过载。
UD431298q
UDN2981控制高触发,光电隔离继电器模块
OP还考虑使用光电隔离继电器模块,因为它们更安全。
我已成功使用同一UDN2981控制4个高电平触发光电隔离继电器模块(MK055)。实际上,无论NPN晶体管还是光电隔离类型,UDN2981均可用于控制任何类型的高触发模块。
但是,对于低触发模块,无论是PNP晶体管还是光电隔离,源极驱动器UDN2981均不起作用,应使用ULN2803或其他漏极驱动器。
ULN2803控制低触发PNP晶体管输入或光电隔离继电器模块
我成功验证了ULN2083灌电流驱动器可以控制4个低触发光电隔离继电器模块。我首先测试了手动闪烁的4个LED,然后使用了与上面相同的python函数来测试这4个模块。结果也很好。
讨论
ULN2803和UDN2981优缺点
优点
ULN2803和UDN2981可以由具有3.3V或5V电源电压的TTL或CMOS逻辑信号直接驱动。
它们的额定500mA输出和钳位二极管适用于开关继电器和步进电机。
缺点
ULN2803尤其是UDN2981并不常见。
它们具有8个通道,因此具有更大的18引脚DIP封装尺寸。对于较少的通道,更常见的是带有14引脚DIP封装的74HC03 / 04或74HCT125更加常见并且更易于处理。.解决方案3-使用74HC03和74HC04上移RPi的3.3V GPIO信号#
使用UDN2981驱动继电器模块是一个很大的挑战,因为它们设计有内置的反激二极管来直接为继电器供电。
UDN2981不常见,也不适合初学者尝试。对于初学者来说,非常便宜的通用逻辑门IC,74HC03 Quad NAND门和HC04六角反相器可以完成与UDN2981相同的工作,可以填充3.3V逻辑信号。
我已经成功验证了HC03和HC04将3.3V逻辑电压升至5V,发现它可用于晶体管输入和光电隔离的高电平触发模块。
#参考编号#
R1。继电器如何工作? -TechyDIY
R2。继电器开关电路-电子教程
R3。牛肉蛋糕继电器控制连接指南-SparkFun
R4。数字缓冲器和三态缓冲器-电子教程
R5。上拉电阻器-电子教程
R6。逻辑级别教程-SparkFun
Arduino Voh 4.2V,Vol 0.9V
R7。 Rpi GPIO引脚电压和电流规范
Rpi Voh 2.4V,Vol 0.7V
R8。双极晶体管-电子教程
#使用HCT125的A.3逻辑电平转换器#
所以我测试了另一个上变频器HCT125。我很高兴发现它运作良好。连接到NPN晶体管驱动的继电器模块时,HCT125转换的5V0信号没有下降。
/ ...
附录末尾
** *长答案将被删除* **
这个长答案太长而混乱。我现在正在尝试删除不相关的段落,或者通过询问相关问题并回答自己来代替它们。
如何检查光电耦合器/光电隔离继电器模块
获取一根跳线。
将一端连接到继电器模块的信号/输入引脚。
握住另一端并触摸Vcc(+)和Gnd(-)引脚,然后检查以下结果。
2.1晶体管输入类型
对于流行的双极NPN晶体管输入类型,源极驱动器信号(3.3V至5V逻辑电平转换后的Rpi GPIO信号或RPi GPIO信号)通过串联的LED和偏置电阻到达晶体管的基极。
晶体管输入类型(BJT NPN)继电器模块的示例
还有其他不那么流行的继电器开关电路,如
本继电器开关教程所述
2.2光电耦合器输入类型
光电耦合器输入类型继电器具有光耦合器作为输入。光电耦合器驱动另一个晶体管,该晶体管又驱动继电器线圈。
附录C-使用TXS0102的逻辑电平转换器
现在我知道Rpi GPIO可以直接驱动继电器模块,但是有两个问题。首先,带有长连接线的GPIO信号有噪声,因此可靠性不高。其次,飞轮二极管1N4148可能无法完全抑制线圈反电动势,如果1N4148不幸发生故障或连接不正确(接触不良,干焊点等),则反电动势可能会损坏Rpi。
因此,我决定使用逻辑电平转换器将Rpi GPIO信号从3V3上移至5V。我首先尝试了TXS102转换器,并发现它运行良好。除了上移GPIO信号外,高电平噪声也大大降低了。
但是,我发现将转换后的5V GPIO信号馈入一个大问题继电器模块。继电器仍然使用3V3信号像以前一样打开和关闭,但是当我使用示波器检查波形时,我非常惊讶地发现5V信号下降了一半,降至2.2V。
我怀疑原因是TXS0102的吸收电流比向继电器模块提供电流要好得多。为了验证我的猜测,我将5V信号馈送到另一个继电器模块,即下拉型光电耦合器,型号为MK01。
这次我发现5V信号没有下降任何明显的数量。
所以我很快得出结论,NPN晶体管型继电器模块是一个不好的选择。我将从现在开始停止测试这种继电器,而继续使用光耦合器类型的继电器。
我还测试了另一个光耦合器驱动器模块MK101。该模块具有一个跳线,用于选择高电平触发或低电平触发。我发现对于低触发,TSX0102转换的5V信号电平不受影响。但是,当选择了低触发,转换后的5V信号电平下降到2.5V左右,尽管继电器仍然工作
/>附录E - 逻辑使用HC04的液位转换器不是很常见。因此,我尝试了另一种转换器电路,使用HC03四开漏极与非门和HC04十六进制反相器。当我测试HC04输出时,我发现它非常嘈杂。我猜到一个原因是我使用了直接电源,一个用于rpi,另一个用于转换器。即使我将电源的接地点连在一起也可以使噪声消失。然后我为rpi和转换器使用了一个电源,并且噪声消失了。
我尝试了HC04输出信号用于继电器模块处于低触发模式(需要吸收电流,而不是处于高触发模式(需要拉电流))。因此,我将添加HC04六角非门,它可以向继电器模块提供电流。 >
附录F-HC04液位转换器浮动输入问题
上一次当我第一次尝试在光耦合器继电器模块上使用基于HC03的电平转换器时,我发现如果我将输入悬空,该模块会拾取噪声,并且继电器会疯狂地打开和关闭。我认为频率可能是1kHz。我不确定这是否是某种正反馈振荡。但是当我使用示波器进行检出时,我惊讶地发现它是50Hz!我想这是一种共鸣。但是我不知道共振和振荡之间有什么区别。也许我应该再凝视一下。无论如何,我认为我需要在某处添加一个上拉/下拉电阻。
下面要缩短或删除
>#附录#
#A1。光电隔离/光电耦合器继电器模块板和示意图#
光电隔离继电器模块的光电耦合器为4针IC。下图显示了一个光电耦合器PC1(四个标记为1、2、3、4的绿色引脚)和一个晶体管Q1。 IC并非总是带有标记。在此图中,PC1是EL354,Q1是8050。
图链接
35: https://i.stack.imgur.com/cWkRi.jpg
评论
tlfong01:“因此Rpi的3V3 GPIO信号可以直接驱动继电器。”:您不应该这么说,因为阅读此行可能给非技术人员以印象,他们可以将RPi的GPIO引脚直接连接到Api的线圈。中继。带来了灾难性的后果...添加2N3904是有原因的...您应该说“因此RPi的3V3 GPIO信号可以直接驱动继电器模块” ...
– GeertVc
18年5月11日在8:27
感谢您指出我对粗心的非技术人员的粗心大意。当我进行更正时,我发现插入两个相同的KY019图片时又犯了一个错误。实际上,第一个应该是SparkFun模块的示意图。
–tlfong01
18年5月11日在13:40
没问题,我们在这里互相帮助... :-)
– GeertVc
18年5月11日在15:45
直接使用GPIO与使用移位器的GPIO存在差异的原因是移位器旨在提供特定的电压(5V)。另一方面,为3.3V逻辑引脚指定了阈值,该阈值指示高低之间的差异。对于pi而言,这意味着1.3V以上的电压都很高。如果您通过接地电阻(即上拉电流)下沉,则应获得3.3V电压,但这可能不是继电器输入的电压-它会浮动。
–金锁♦
18年5月11日在16:03
@goldilocks:是的,这令人困惑。 OA表示,他的继电器套件使用NPN晶体管触发继电器[线圈],似乎有一个答案建议修改晶体管[至BC5468]。另一个建议是使用darlington ULN2803,..我需要再阅读一次注释以澄清我的想法。
–tlfong01
18年5月13日在1:55
评论
没有Gpio引脚为3.3伏。那你知道我可以修改电路的方法吗?
这将需要5伏的电源,并记住将所有接地连接在一起-我这样做是为了切换塔式信号灯,例如ebay.com/itm/…
我建议先使其与单独的电源一起工作,然后解决Pi的电源需求和便携性的复杂性。就像他们说的,吃大象的最好方法是一次咬一口。
所有地面都绑在一起。 5v正极连接到达灵顿的公共端。我遵循了图。