早期的51单片机,驱动能力很低。p1、p2和p3口只能驱动3个lsttl输入端,p0口可驱动8个。如果想要驱动更多的器件,就要用到“总线驱动芯片”。经常用的就是74ls244(单向)和74ls245(双向)。
现在常用的 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位的接口,则每个引脚的电流就不要大于23ma。这样来看,上拉电阻最小应该在1.8k2.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的取值应该再小一些。
用这个电路,可以各种大电流负载,但是做而论道为什么单单要用继电器,来说明问题呢?
因为在网上,发现很多不适当的继电器驱动电路,这些电路都是一个特点,即使用了射极输出电路结构。射极输出电路要求输入的动态范围要大,而且输出的电压范围永远比输入小0.7v。射极输出电路就不能有效的利用+5v的电源,实际上,加到继电器上的电压,不足+4v,除非是使用4v的继电器,否则这就是不稳定的隐患。
做而论道给出的电路是共射极结构,有电压放大能力,所以对输入的要求较低,输出动态范围大。
对于大于+5v的负载,如+12v,上面的电路就不行了。
如果只是简单的把电源由+5v改为+12v,那么单片机输出的高、低电平,还是只有0~5v的变化幅度,这对8550射极的+12v来说,都是低电平。8550将不能截止。
对于大于+5v的负载,只能使用npn型的8050三极管来驱动,先以单片机输出高电平来驱动。电路如下:
在上述电路中,上拉电阻r2也会带来无谓的电流,其害处前面已经讨论过。
更重要的缺点是:在开机单片机复位后,自然输出的高电平,会使继电器吸合,或者是使电机转动。(使用uln2003等芯片扩充输出电流的时候,也存在这个问题。)
虽然编程的时候,可以先进行接口的初始化,令其马上就输出0。但是每次开机,还是会有瞬间的大电流冲击,这往往是不允许的。
改进一下,可以再加上个8550,进行倒相,这就可以让单片机用输出低电平来驱动负载。
上图中倒相用的8550,也可以使用“光耦”器件,这样一来,又增加了电气隔离的功能,这就是最完美的单片机输出驱动电路。电路见下图。
图中的4n25经过实际测量,当led的电流大于等于4.5ma时,输出端的光电管即可为q4提供足够的基极电流。所以图中的r3,可以使用810~1k的电阻。
上述的各个电路,都是以扩充单片机的输出电流为主题。其实,很多数字ic的输出端,都存在扩充电流输出能力的问题,这里给出的电路,是普遍适用的。
这里介绍的8050/8550可以输出1500ma的电流,如果要求更大的输出电流,一种方法更换三极管,另外也可以使用专用大功率驱动器件,如l298,固态继电器,igbt等等。
因产地与实际宣传不符 夏普公司在国内被告上法庭
5W电源管理ic U62113满足小家电的微需求
机器视觉检测中如何提高检测图像处理速度
互感器作用和特点分析
从技术市场等角度对激光雷达进行概述
利用单片机IO引脚驱动LED电路
浅谈硬件电路设计中晶体、晶振、负载电容
海康威视双千兆无线路由器开售,采用7*6dBi高增益全向天线设计
浅谈影响UVLED深层光固化的因素
华为无惧“芯片禁令” 任正非早就留了“后手”
基于RK3588平台的会议平板即将发布
浅析特征点匹配的自适应目标跟踪算法
Intel揭开14nm至强与凌动服务器芯片神秘面纱
天线计量的测试方法
怎样调整地磅万能遥控器的四角误差
认识电子管
电动机正回转操控电路原理
家庭云NAS是什么,有哪些优势
具有心电图功能的新版Huawei Watch GT 2 Pro将在中国上市
Type-C接口或将成为未来智能手机的主流