[分享] 单片机io口输出电流范围及问题详解
2740 查看
7 回复
 楼主 | 发布于 2019-07-19 | 只看楼主
分享到:

 一、51单片机IO端口的四种输入输出模式

  1、准双向口输出

  准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。(准双向口有3个上拉晶体管适应不同的需要)准双向口读外部状态前,要先锁存为 „1‟,才可读到外部正确的状态。

  小结:

  灌电流能力强,拉电流能力弱

  读外部状态前要先锁存“1”(断开下拉晶体管)

  读IO口状态的原则是非高即低,只能准确识别外部的低电平信号,无法区分悬空和真正的高电平

  作为输入时,输入阻抗不为高阻,可能出现将外部低电平误读为高电平的情况(例上拉电阻10K,外部电阻100K,IO=5*100/110=4.54V)

单片机io口输出电流范围及问题详解

  准双向口(弱上拉)输出

  其应用方式参考:

单片机io口输出电流范围及问题详解

  准双向口用作输入时,可对地接按键,如图1,当然也可以去掉R1直接接按键,当按键闭合时,端口被拉至低电平,当按键松开时,端口被内部“极弱上拉”晶体管拉至高电平。

  当端口作为输出时,不应对地外接LED如图2控制,这样端口的驱动能力很弱(拉电流能力弱),LED只能发很微弱的光,如果要驱动LED,要采用图3的方法,这样准双向口在输出为低时,可吸收20mA的电流(灌电流能力强),故能驱动LED。图4的方法也可以,不过LED不发光时,端口要吸收很大电流。

  2、强推挽输出

  推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。

  如果当两个推挽输出结构相连在一起,一个输出高电平,即上面的MOS导通,下面的MOS闭合时;同时另一个输出低电平,即上面的MOS闭合,下面的MOS导通时。电流会从第一个引脚的VCC通过上端MOS再经过第二个引脚的下端MOS直接流向GND。整个通路上电阻很小,会发生短路,进而可能造成端口的损害。这也是为什么推挽输出不能实现“ 线与”的原因。

单片机io口输出电流范围及问题详解

  3、仅为输入(高阻)

  输入口带有一个施密特触发输入以及一个干扰抑制电路。

  小结:

  通过外部上拉电阻输出高电平

  若有外部上拉,可作为输入IO读取外部状态(同准双向IO,先锁存“1”)

  通过外部上拉电源进行电平转换与外部器件兼容

单片机io口输出电流范围及问题详解

  4、开漏输出配置(若外加上拉电阻,也可读)

  当口线锁存器为0时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到Vcc。如果外部有上拉电阻, 开漏的I/O口还可读外部状态,即此时被配置为开漏模式的I/O口还可作为输入I/O口。这种方式的下拉与准双向口相同。

  小结:

  电路无法流入流出,只能作为输入数据使用

单片机io口输出电流范围及问题详解

  二、单片机的io口输出最大电流

  传统单片机一般为10ma左右,现在的单片机一般20-25ma,但多个IO口加起来总电流有限制,根据厂家和封装不同而变化,有的不能超200ma,有的不能超400ma

  如果外设要求的驱动电流较大,少量IO口扩流可采用三极管,IO 口数量较多时,常用7406 TDG2003等驱动芯片。

  三、单片机的I/O口输出电流问题

  问:单片机除P0口外,其他输出都是5V吧?那么用来驱动数码管为什么还需要加三极管驱动?比方说加100欧的电阻,那么电流就高达5V/100欧=50mA,而数码管才20mA?再者三极管怎么都没标明电流放大倍数?

  答:这个类似于电源的内阻。输出电流越大,消耗在内部的电压压降就越大。输出电压=5V-内部压降。

  51单片机的上拉管典型阻值20k,若外部开路,在内部的压降=0,输出就是5V,如果IO接个5k电阻到GND,那么外部电阻的电压=5V÷(5+20)&TImes;5=1V,而外部5K电阻上的电流才1V/5k=200uA。

  所以你接100欧的电阻,IO的输出电压更本就很小了,根本达不到5V÷100欧=50mA的水平,

  一般来说高电平输出能力也就100-200uA,低电平输出能力8mA-10mA (AT89C2051等IO已强化,可吸入20mA电流)。这么小的电流驱动数码管,你就自己看吧,所以才加三极管驱动。数码管20mA的电流一般是偏大的,静态显示时,一般选5-15mA即可。动态显示可适当加大至20mA左右,不然亮度偏低。

  一般三级管的静态放大值取100就可以估算。比如驱动一个5V(额定电压)线圈继电器。线圈内阻是120欧,估算驱动电流有5V/120欧=40mA,单片机一般只能输出10mA,驱动不了。那么靠三极管驱动,基极驱动电流=40mA/100=400uA》200uA,

  若使用PNP型三极管,则使用低电平驱动,基极电阻=(5-0.7)V÷0.4mA=10k,

  若使用NPN型三极管,则使用高电平驱动,如上面所说,输出能力最多200uA,达不到400uA,要使用上拉电阻产生至少200uA电流,上拉电阻=(5-0.7)V/0.2mA=21.5k这些计算值都是临界值,要保险点就在这个值的基础上稍微选小一点就好。

(0 ) (1 )
回复 举报

回复于 2019-07-19 沙发

感谢分享
(0 )
评论 (0) 举报

回复于 2019-07-20 2#

感谢分享
(0 )
评论 (0) 举报

回复于 2019-07-22 3#

👍 👍
(0 )
评论 (0) 举报

回复于 2019-07-24 4#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-07-25 5#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-07-27 6#

支持下,谢谢分享!
(0 )
评论 (0) 举报

回复于 2019-08-07 7#

谢谢分享!!!
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部