直接从Arduino数字引脚直接连接继电器的原因


8

在研究了通过Arduino控制继电器的各种原理图之后,我注意到,在大多数情况下,晶体管用于将单独的电源切换到继电器线圈中,而不是直接为继电器提供I的5伏输出。 Arduino的/ O引脚。例如,我有一个5伏的DPDT继电器和一个小型的直流电动机。我想使用Atmel328处理器直接从Arduino UNO(SMD克隆)驱动两者吗?进行下去是否明智?

如果不是(很可能):

  1. 有人可以提供详细的解释,还可以就当前的限制和内容提供重要的警告吗?

  2. 如何在不冒险接触Arduino的情况下控制此类组件?有哪些常用的方法可以做到这一点?

  3. 哪些其他设备通常会以类似方式损坏Arduino板(或任何微控制器单元)?

我只是一个初学者,他要非常谨慎。谢谢。


尽管最近在第一次接触Arduino时,我还是直接使用I / O引脚为玩具直流电动机供电,并通过以相同方式打开和关闭DPDT继电器来改变其方向。到目前为止,似乎没有什么不对。
DorkOrc 2015年

Answers:


8

处理器引脚具有严格限制的电流驱动能力。

  • 额定值可能会有所不同,具体取决于您需要的是高驱动器还是低驱动器。
  • 某些处理器只会提供几mA的电流,通常您通常会获得的最大电流在20至30 mA的范围内。

  • 通常,处理器有一个总电流限制,只有几个引脚可以同时提供峰值电流。

  • 处理器引脚具有显着的有效电阻,并且随着电流的增加,高电压将“下降”,而随着负载的增加,低电压将上升。引脚可能具有最大的短路电流,但此时高引脚将被拉低,低引脚将被拉高,因此短路电流的适用性受到限制。

即使每个引脚额定处理器的电流为25 mA,可用功率也很小。25 mA·4V(说5V Vcc下降1V)= 100 mW。大多数电动机仅需一根销钉,便会花更多的钱,只有很小的电动机才能运转良好。

电流中断时,电动机和电感器将产生相当高的电压-容易产生数十伏的电压,并且可能发生100伏以上的电压。将电感器的电动机直接连接到处理器引脚是破坏的诱因。墨菲通常会努力。


用于驱动典型的业余电动机的晶体管(双极或MOSFET)的成本为10美分(或没有报废的设备),并允许缓冲和“放大”端口引脚电流驱动。如果您有一个或几个处理器并且不希望它们半随机死亡,那么使用晶体管或其他缓冲器是一个非常好的主意。

MOSFET电机驱动器 - 从这里 -第8节。

以电压和部件号为例-选择适合的。
可以在NPN双极晶体管的晶体管基极上增加一个输入电阻器。

在此处输入图片说明

双向驱动器-如果您希望驱动器能够驱动高负载和低负载,则此电路将起作用。从这里开始
,输入门是内部处理器驱动器。两个MOSFET栅极直接连接到处理器引脚。Vdd通常不应高于处理器Vmax_drive_out。通过适当的设计,可以使其稍高一些。使用此电路(或类似电路)加上一个额外的晶体管可以驱动更高的电压负载。

在此处输入图片说明


诸如ULN2803(和其他系列成员)之类的缓冲器将驱动8个通道x 500 mA /通道,并且其中几个可以并联。


ULN2803本质上是8个“ Darlington”晶体管,其发射极连接到公共接地,8个“开放集电极”(未连接)的集电极和8个反激二极管以处理过电压尖峰(使用可选)。(有一个ULN280x系列,其输入特性略有不同)。

该器件提供了价格合理的方式来提供8 x 500 mA下拉驱动器。当输入引脚被驱动为高电平时,从输出端连接至V +的负载接通。使用几次后,您会发现它们非常容易使用并且非常有用。(还有一个ULN200x系列,每个封装具有7个通道)。

YouTube“操作方法”视频


驱动步进电机

在此处输入图片说明

也在这里


驱动小型直流电动机 -还有很多其他事情。

在此处输入图片说明 数不胜数的例子

Digikey-如果需要,可按1的价格购买$ 0.72 / 1,按1000的价格购买$ 0.29。

ULN2803数据表


在Sparkfun上出售 -可以便宜一些,但是有这些


7

I / O引脚的推荐输出(源或宿)为20 mA。绝对最大值为40 mA。您的继电器线圈可能会消耗更多的电量,尤其是在最初通电时。这会损坏您的输出引脚。然后它将最终失败。

到目前为止,似乎没有什么不对。

还没有。:)

如何在不冒险接触Arduino的情况下控制此类组件?有哪些常用的方法可以做到这一点?

使用晶体管或MOSFET。

哪些其他设备通常会以类似方式损坏Arduino板(或任何微控制器单元)?

超出数据表中记录的最大电压或电流限制的任何物体。特别是线圈(例如继电器和电动机中的线圈)在关闭时很可能具有较高的反向电压,这就是为什么需要缓冲二极管的原因

进行下去是否明智?

建议您注意我在上面写的内容,并阅读Web上有关如何从Arduino驱动电动机和继电器的许多文章。您不是第一个尝试此操作的人。


4

看看Arduino Playground 上此PDF上的简单电路。它显示了一个晶体管来驱动一个小的继电器。

正如罗素(Russell)在回答中所说,ULN2803或类似的芯片将使您能够驱动几个小型继电器,如果您想要的话,它比使用多个晶体管更整洁。

(还要注意,我链接的电路中的二极管“ D1”-您需要这样做,它是为了保护晶体管最终免受继电器关闭时产生的电感尖峰的损害。某些ULN风格的芯片内置了该二极管,这就是为什么您不总是在原理图中看到它的原因。)


3

为了真正保护您的arduino,值得在引脚上放置一个光电耦合器并以这种方式驱动电路。这样,杂散的感应电荷或短路都不会影响arduino。

它们也称为光电隔离器或光电耦合器。

http://forum.arduino.cc/index.php?topic=143954.0


1
您说得对,光隔离器是一个很好的选择。做到这一点的另一种方法是减少隔离,但仍然很方便,它是使用运算放大器(Op Amp)作为缓冲区。这些也称为“ folloer”运算放大器。请注意,您可以使用任何现成的OpAmp做到这一点,只需以特定方式布置电路即可。zh.wikipedia.org/wiki/Buffer_amplifier#Op-amp_implementation

3

让我们看一些基本问题,这些似乎是很多问题的基础:

接通电源时,电容器会汲取大量电流,该电流在充电时会逐渐减小。该曲线也称为RC时间常数(虽然接近但不完全精确,“ http://www.electronics-tutorials.ws/rc/rc_1.html ”会给出更好的解释)。

关断电容器时,电容器的放电速度将根据其值,充电电压和负载而以指数速率(RC时间常数)放电。这使它们在停电时短时间保持电源时非常有用。

电感器在首次接通时不会消耗任何电流,但是电流会呈指数增加,直到其电压达到电源电压为止。

当关闭时,电感器中的感应场会崩溃,从而导致极性反转。电压将无限上升,直到通常由外部对其进行限制为止。关闭越快,上升时间和电压就越快。当感应电荷消散时,能量将停止流动。猜猜当继电器等电感性负载连接到端口引脚时,电流会流向何处?

因此,您需要在感性负载两端放置一个二极管(通常称为飞轮二极管)。Google for:“电感器/电容器电荷曲线”,您会发现很多漂亮的图形来解释这一点。如果看电路,它的阴极+连接到电源的最正极。在这种配置下,除非将电压反向(当感性负载关闭时),否则它将不会导通。

另一个常见的误解是您可以最大程度地加载微处理器I / O。这是糟糕的设计。它们为您提供了每个引脚,每个端口和每个芯片的最大值。在室温下,您可能会暂时离开它。

假设我们有一个负载为40mA的端口。电源轨的输出为0.005。使用欧姆定律,我们在一个引脚上消耗了20毫瓦的功率。以这种负载速率,由于内部功耗而导致装置过热的时间不会太长。

当输出引脚改变状态时,它消耗更多电流,因为它必须对内部和外部电容进行充电或放电,“更多热量”,更快速度“更多热量”。

如果您看一些规格会给您最高温度,那是针对芯片上的结,而不是外壳温度。塑料是不良导体,因此散热不大。现在,将其与环境温度一起考虑。该额定值通常是在25°C的设备上给出的,请猜测温度升高时会发生什么。

玩得开心,

吉尔

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.