单片机IO引脚驱动能力的提高

早期的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。

单片机的输出特性和很多常用的LSTTL器件的输出特性是相同的,都有灌电流较大的特点。
实际上,现在常用的单片机IO引脚驱动能力,就和早期的单片机增加了“总线驱动芯片”的效果基本是相同的。现在的单片机输出低电平的时候,就已经可以直接驱动LED发光了。

上述的数值,也并非是不可逾越的破坏性极限数值。
当略超过这些数值范围的时候,单片机IO引脚的电压,就会发生变化,造成“高电平不高”、“低电平不低”,这就会缩小外接器件的噪声容限。如果环境再稍有干扰,外接器件就无法正确判定单片机送来的高、低电平,将会胡乱动作。
==================================
为了合理利用IO引脚的低电平能力强的特点,在外接耗电较大的器件(如LED数码显示器、继电器等)的时候,应该优先选用低电平输出来驱动外部器件。使用IO口输出高电平驱动负载,就是一个错误的选择。

下图是一个直接利用单片机IO引脚驱动LED的电路。
图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。

图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/d50c2638856466b43b87cee9.html

图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。
这种电路,给单片机IO引脚带来了很大的电流,一个8位的接口最大有可能被灌入40mA的电流,远远超过了容许的数值。
上拉电阻能够增加大量不需要的电流,不仅会造成单片机工作不稳定,还会导致电源效率的严重下降,发热,纹波增大。这说明,高电平输出、加上拉电阻,就是一个不合理的驱动方式。

如果只是一个引脚的电流取值稍大一些,还算可以;但是综合考虑一个8位的接口,则每个引脚的电流就不要大于2~3mA。
这样来看,上拉电阻最小应该在1.8K~2.5K之间,不宜再小,以免总电流超过接口所容许的电流。
在网上看到一篇“51单片机P0口上拉电阻的深入研究”的文章(http://hi.baidu.com/20070210030205/blog/item/95e5ab83a62d089df703a649.html),
对上拉电阻的最小选择,写的很低,甚至说可以选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的取值应该再小一些。
此种电路经过多位网友的验证,链接之一如下:
http://zhidao.baidu.com/question/126746121.html?fr=qrl&cid=203&index=3
==================================
用这个电路,可以各种大电流负载,但是做而论道为什么单单要用继电器,来说明问题呢?
因为在网上,发现很多不适当的继电器驱动电路,比如:
http://hi.baidu.com/xu331019485/blog/item/4a7e548dd9e5871ab21bba7d.html
http://hi.baidu.com/wangnizone/blog/item/1cf31594733bd717d31b70b4.html
http://hi.baidu.com/brave%5Fxixi/blog/item/b18a133d81f6ec04baa16718.html
http://hi.baidu.com/x378719409/blog/item/f2bec611de89157bca80c488.html
这些电路都是一个特点,即使用了射极输出电路结构。射极输出电路要求输入的动态范围要大,而且输出的电压范围永远比输入小0.7V。射极输出电路就不能有效的利用+5V的电源,实际上,加到继电器上的电压,不足+4V,除非是使用4V的继电器,否则这就是不稳定的隐患。
做而论道给出的电路是共射极结构,有电压放大能力,所以对输入的要求较低,输出动态范围大。
==================================
对于大于+5V的负载,如+12V,上面的电路就不行了。
如果只是简单的把电源由+5V改为+12V,那么单片机输出的高、低电平,还是只有0~5V的变化幅度,这对8550射极的+12V来说,都是低电平。8550将不能截止。

对于大于+5V的负载,只能使用NPN型的8050三极管来驱动,先单片机以输出高电平来驱动。电路如下。

上述的电路,完全可以工作,也经过了多位网友的验证,链接之一如下:
http://zhidao.baidu.com/question/132323883.html
==================================
在上述电路中,上拉电阻R2也会带来无谓的电流,其害处前面已经讨论过。
更重要的缺点是:在开机单片机复位后,自然输出的高电平,会使继电器吸合,或者是使电机转动。(使用ULN2003等芯片扩充输出电流的时候,也存在这个问题。)

虽然编程的时候,可以先进行接口的初始化,令其马上就输出0。但是每次开机,还是会有瞬间的大电流冲击,这往往是不允许的。

改进一下,可以再加上个8550,进行倒相,这就可以让单片机用输出低电平来驱动负载。

上述的电路,完全可以工作,也经过了多位网友的验证,链接之一如下:
http://zhidao.baidu.com/question/121793139.html?fr=qrl&cid=203&index=2

上图中倒相用的8550,也可以使用“光耦”器件,这样一来,又增加了电气隔离的功能,这就是最完美的单片机输出驱动电路。电路见下图。

图中的4N25经过实际测量,当LED的电流大于等于4.5mA时,输出端的光电管即可为Q4提供足够的基极电流。所以图中的R3,可以使用810~1K的电阻。
==================================
上述的各个电路,都是以扩充单片机的输出电流为主题。其实,很多数字IC的输出端,都存在扩充电流输出能力的问题,这里给出的电路,是普遍适用的。
这里介绍的8050/8550可以输出1500mA的电流,如果要求更大的输出电流,一种方法更换三极管,另外也可以使用专用大功率驱动器件,如L298,固态继电器,IGBT等等。这些器件做而论道都使用过,等以后再给大家介绍。

原文链接:http://hi.baidu.com/do_sermon/item/2fb8058a887395d25f0ec174

论单片机IO引脚驱动能力的提高相关推荐

  1. 单片机IO引脚驱动能力的提高

    早期的51单片机,驱动能力很低.P1.P2和P3口只能驱动3个LSTTL输入端,P0口可驱动8个.如果想要驱动更多的器件,就要用到"总线驱动芯片".经常用的就是74LS244(单向 ...

  2. 51单片机与STM32的区别(为何51单片机IO引脚的驱动能力弱)

    1.51单片机的特性 51单片机之所以成为经典,成为易上手的单片机主要有以下特点: 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位.不但能对片内某些特殊功能寄存器 ...

  3. 单片机IO直接驱动段式LCD详细说明+代码

    常规原理说明可看其他博主,下面说一下调试过程遇到的问题点. 1.注意段式LCD的供电电压,选与供电电压接近的电压供电.驱动电压注意是是1/2偏压还是1/3偏压. 2.注意LCD的观察方向,12点方向还 ...

  4. 单片机5V输出驱动控制24V外设电路设计方案

    单片机5V输出驱动控制24V外设电路设计方案 一般的单片机供电电压是3.3V或者5V供电,输出的电平也是在3.3V或5V电压,如果要想去去控制一个更高电压的外设设备,那么就需要外加其他驱动,来间接控制 ...

  5. m0单片机io口_51单片机蜂鸣器

    蜂鸣器实验 * 蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电子设备.电话机.定时器等电子产品中作发声器件.蜂鸣器主要分为压电 ...

  6. 【自学51单片机】9 -- 步进电机原理、蜂鸣器原理,单片机IO口的结构,上下拉电阻

    目录 1.单片机IO口的结构 2.上下拉电阻 3.电机 3.1 电机分类 3.2 28BYJ-48型步进电机 3.2 28BYJ-48电机转动原理 3.3 28BYJ-48电机工作模式 3.4 步进电 ...

  7. 51单片机有几个通用io口_51单片机IO端口基础知识及应用

    文章目录 89C51单片机引脚信息单片机IO端口内部结构单片机IO引脚输出应用单片机IO引脚输入应用总结 89C51单片机引脚信息 我们在学习使用任何芯片到时候,可能第一个要注意的就是芯片的引脚信息了 ...

  8. 一种提高单片机i/o口驱动能力的方法

    一.简述问题 当你用单片驱动发光二极管的时,你还感觉不到P0.P1口的区别.(10-20mA之间,其中P0驱动能力最强,但对于驱动直流电机依然很弱,其结果就是电机不转).那么有什么办法提高驱动能力吗? ...

  9. 单片机的单个IO口可以发送数据吗_关于51单片机各个引脚它的功能你了解多少?...

    对于40引脚双列直插51单片机各个引脚功能情况分析. P0端口一默认是开漏准双向IO口,没有输出没有驱动能力,要做逻辑输出要在外部接上拉电阻. P0端口除了作为普通的输入输出功能,还可以用来当做数据总 ...

最新文章

  1. Java Character 类
  2. python完全支持面向对象编程_[Python] 类与面向对象编程
  3. mysql基础知识整理_MYSQL基础知识整理
  4. ubuntu下定时任务的执行
  5. android modbus 串口,android modbus RTU jssc连接
  6. edxp显示未安装_EPLAN因缺少加密狗驱动而无法安装解决方案
  7. 随机森林回归树官方例子小结
  8. 【IOS】iphone逻辑分辨率
  9. pro android python with sl4a,Pro Android Python with SL4A
  10. 学习笔记96—WIN7/WIN8/WIN10 安装 MSDE SQL2000 卡住不动的解决办法
  11. Postgresql 使用 Pl/python实现邮件监控
  12. jmeter分布式操作之远程启动功能
  13. 如何从华为云服务器上找回手机,华为云服务怎么样使用手机找回功能
  14. 更新最大内码,金蝶开发
  15. 韩国中产的今天!76岁的快递员,70岁的站街女......
  16. 波音 737 连续坠毁,AI 要背锅?
  17. office打开不了服务器文件,Office常见打开问题及解决 -电脑资料
  18. 【3D 目标检测】Not All Points Are Equal Learning Highly Efficient Point-based Detectors for 3D LiDAR Point
  19. 编写程序计算圆的面积和周长。
  20. Onlyoffice 添加中文字体,并修改字体大小显示为小四、四号等中文

热门文章

  1. Python3 Mac剪切板存取内容-xerox
  2. KWS_关键词命名+识别率和误识别率
  3. 什么样的程序员适合去创业公司
  4. 平分肥宅快乐水(C++)
  5. [bzoj2563] 阿狸和桃子的游戏 贪心
  6. Java线程池并发执行多个任务
  7. 【PyTorch】关于函数 datasets.IMDB.splits()
  8. 海关179接口终极解决方案
  9. 数据库中查询经纬度距离远近
  10. 计算机网络实验(三个部分--验证性、Wireshark、CPT)