理论上,PNP和NPN都可以用于驱动继电器

我在设计控制器时,主要做了以下几点考虑,并最终选择由NPN三极管组成的达林顿芯片ULN2003。

1)可以实现控制器与继电器驱动电源的隔离

如果选择PNP三极管,所有继电器的驱动电源都需要用控制器提供,控制器需要同时驱动16个继电器,按照继电器的规格书,继电器的线圈电阻为650欧@24v,电流大概为36mA,当16个继电器同时吸合时,总的线圈电流大概为0.567A,也就是给控制器供电的电源需要额外给继电器线圈提供0.5A的电流。

当继电器的线圈电压为12V或者9V时,所需要的电流更大,达到几安。

由控制器提供电源给继电器,无疑会增加控制器的发热量。而且控制器如果是内置电源,无疑会增加内置电源的功耗,并导致散热问题,可靠性下降。

不采用PNP三极管驱动的原因是,没有办法将控制器的电源和继电器的线圈电源分开,继电器只能由控制器的电源供电,而无法由其它电源供电。

2)可以驱动不同线圈电压的继电器

如果是PNP三极管驱动,而驱动的继电器的线圈电压需要和控制器提供的电压一致。

而如果采用NPN三极管驱动,控制器只提供地端,电源端可以根据线圈电压选择不同的供电电源。

可以实现同一控制器驱动不同线圈电压的继电器。

3)降低发生短路故障的概率

为了安全考虑,一般情况下,控制系统中的地会与大地接在一起。对于继电器的驱动输出有时并不会做短路保护,在发生短路故障时可能会损坏驱动的三极管。

当从控制器接线到继电器时,控制器的接线接触到大地的概率远远大于接触到其它导线的概率。

如果是PNP三极管驱动,导线接触到大地,就会发生短路故障,而NPN三极管驱动,导线触碰到电源才会发生短路故障。

4)便于实现通过检测输出电流进行短路保护

当通过检测输出电流来实现输出的短路、过载保护时,如果是PNP驱动,通过专用的运放,在高端采集电流并送入单片机进行检测,而如果是NPN驱动,只需要在低端串入采样电阻,通过简单的 R、C滤波之后接入到单片机,不需要差分运放进行检测。

更简单的做法,只需要将NPN三极管的C极电压通过 R、C滤波之后接入到单片机,通过C、E极的饱和导通电压判断是否发生短路故障。

5)有些大功率的中间继电器,线圈驱动电流可能高达数百mA。一个三极管的C极电流放大倍数在高温时可能仅为30倍左右,单片机直接控制单个三极管驱动继电器,可能继电器的线圈电流达不大要求,无法驱动。

比如下图的驱动电路:

为什么不用PNP而是NPN三极管来驱动继电器

当三极管B极电阻选择为1k,单片机输出高电平为3.3V,那么三极管B极电流大概为2.6mA。

以功率三极管2SD313为例,其电流放大倍数与C极电流的关系曲线如下:

为什么不用PNP而是NPN三极管来驱动继电器

可见,当三极管C极电流增大时,其电流放大倍数急剧下降,最低到30左右。

所以我们考虑温度、电流极限情况以及初始误差,将电流放大倍数定为30。

此时,C极的电流仅为2.6*30=78mA,无法驱动线圈电流为几百mA的继电器。

所以,我们不选用NPN单管或者PNP单管驱动继电器。

而是选择由两个NPN三极管组成的达林顿管进行驱动。

达林顿管电路如下:

为什么不用PNP而是NPN三极管来驱动继电器