单片机IO引脚驱动能力提升篇
现在常用的 AT89C51 单片机引脚的输出能力已经大多了,从 PDF 手册文件中可查出:
单片机输出低电平的时候,单个的引脚,向引脚灌入的最大电流为 10 mA;
一个 8 位的接口(P1、P2 以及 P3),灌入的总电流最大为 15 mA,P0 允许灌入的最大总电流为 26 mA;
全部的四个接口所允许的灌电流之和,最大为 71 mA。
但是当引脚输出高电平的时候,它们的“拉电流”能力可就差多了,竟然还不到 1 mA。
单片机的输出特性和很多常用的LS系列TTL器件的输出特性是相同的,都有灌电流较大的特点。
实际上,现在常用的单片机IO引脚驱动能力,就和早期的单片机增加了“总线驱动芯片”的效果基本是相同的。现在的单片机输出低电平的时候,就已经可以直接驱动LED发光了。
上述的数值,也并非是不可逾越的破坏性极限数值。当略超过这些数值范围的时候,单片机IO引脚的电压,就会发生变化,造成“高电平不高”、“低电平不低”,这就会缩小外接器件的噪声容限。如果环境再稍有干扰,外接器件就无法正确判定单片机送来的高、低电平,将会胡乱动作。
==================================
为了合理利用IO引脚的低电平能力强的特点,在外接耗电较大的器件(如LED数码显示器、继电器等)的时候,应该优先选用低电平输出来驱动外部器件。使用IO口输出高电平驱动负载,就是一个错误的选择。
下图是一个直接利用单片机IO引脚驱动LED的电路。
图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。
图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。
这种电路,给单片机IO引脚带来了很大的电流,一个8位的接口最大有可能被灌入40mA的电流,远远超过了容许的数值。上拉电阻能够增加大量不需要的电流,不仅会造成单片机工作不稳定,还会导致电源效率的严重下降,发热,纹波增大。这说明,高电平输出、加上拉电阻,就是一个不合理的驱动方式。
如果只是一个引脚的电流取值稍大一些,还算可以;但是综合考虑一个8位的接口,则每个引脚的电流就不要大于2~3mA。这样来看,上拉电阻最小应该在1.8K~2.5K之间,不宜再小,以免总电流超过接口所容许的电流。
在网上看到一篇“51单片机P0口上拉电阻的深入研究”的文章,对上拉电阻的最小选择,写的很低,甚至说可以选200欧姆!呵呵,这会烧毁单片机引脚的。
==================================
驱动更大电流的负载,可以使用三极管来扩充电流,也可使用集成芯片ULN2003(或ULN2008),另外也可使用专用的驱动器件L298、各种型号的IGBT等等。
集成芯片的引脚比较密集,维修检查较困难,更换的时候更是不便。做而论道比较喜欢使用三极管,它的耐压和电流承受能力都远远超过集成芯片,在PCB上布线也很灵活方便。
8550(PNP)和8050(NPN):它们是一组可以配对使用的三极管,特点是集电极允许的电流很大,Icm竟然能达到1500mA!而且还不需要使用散热片。它们的集电极反向击穿电压BVceo为25V,Pcm为0.5W。
2N5401(PNP)和2N5551(NPN):它们也是一组可以配对使用的三极管,它们的特点是耐压比较高,集电极反向击穿电压BVceo可达160V!它们的最大集电极电流Icm为0.6A,Pcm为0.6W。
不同厂家的产品,参数会稍有不同。
==================================
下面以常见的继电器为负载继续说明驱动方法。继电器线圈的驱动电流往往要有40mA以上,单片机的引脚肯定是不能承受了,必须用三极管来扩充输出能力。
+5V的大电流负载,用8550(PNP型)驱动电路可见下图。
P3.7输出低电平的时候,在R1中形成Ib约有2mA,经过8550的放大,Ic足够驱动继电器了。
用这个电路,不仅可以驱动继电器,也驱动蜂鸣器、扬声器、多个LED等等,甚至驱动小型的直流电机,也是可以的。一般来说,电机的工作电流要大一些,只要不超过8550可以输出的最大电流是1500mA即可。驱动电机时,图中电阻R1的取值应该再小一些。
==================================
用这个电路,可以各种大电流负载,
单片机IO引脚驱动能 相关文章:
- 单片机IO引脚驱动能力与上拉电阻(11-19)
- 关于51单片机IO引脚的驱动能力与上拉电阻设计方案(11-19)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)