首页 > 技术文章 > 弱上拉,灌电流,拉电流

wgang171412 2016-01-22 14:23 原文

补充:

输出电压=VCC就是高电平,输出电压=GND(一般是0V)就是低电平,分别用1和0来表示,这个是理想值。但实际上它也有一个范围,这个会在单片机的datasheet里说明。比如你的单片机供电压(VCC)=5V,那么,datasheet里会说明高电平最低要达到多少伏,比如给出的是3.7V,那么在3.7~VCC的范围内,单片机都会识别成高电平。低电平会说明最高能达到多少伏,比如0.8V,那么GND~0.8V这个范围内的电压都会被识别为低电平。中间状态(0.8V~3.7V)识别状态不定,可能是高电低也可能是低电平。

单片机正常工作时引脚电压是:

  1. 工作电源如果是5V就是高电平接近5V 低电平接近0V。
  2. 工作电源如果是3V同理就是高电平接近3V 低电平接近0V。
  3. 工作电源如果是1.5V同理就是高电平接近1.5V 低电平接近0V。

注:单片机正常工作时引脚电压是高电平接近1工作电源电压, 低电平接近0V。

       

 

       弱上拉,通俗说法是:比较弱的上拉(上拉电阻阻值小:强上拉,上拉电阻阻值大:弱上拉)。一般用在和外围器件的通讯上,如IIC总线等,但不能用于需要驱动能力的上拉应用中,如驱动电机,LED灯等。

弱上拉,推挽,开漏是3种输出方式.

(1)当设置为弱上拉输出方式,此时各个I/O口与VDD之间约有100K电阻.如输出逻辑电平为1(通常是引脚置1),则输出端有接近VDD或VCC的电平出现;如输出为0,则弱上拉电路自动关闭.当输出端处于模拟量输入状态时,弱上拉电路也会自动关闭.

(2)当设置为漏及开路,应外接上拉电阻(10K),使I/O口输出为1时,有3.5V以上的高电平输出

(3)当设置为推挽输出,至少可驱动20多个LS TTL门电路.可直接驱动外设接口,无须外加驱动总线的芯片(如74LS244,74LS245等),其总线驱动能力比C8051大大加强,而且灵活.

以51单片机的IO口设计按键电路为例,在单片机IO口内部,也有一个上拉电阻的存在。按键接到P2口上,P2口上电默认是准双向IO口,现在了解一下这个准双向IO口的电路,如图8-7所示。

 


图8-7 准双向IO口结构图

(内部电阻R的范围一般在10k-100k左右,所以在没有外部上拉电阻的情况下是处于弱上拉状态,此时驱动能力不强。而加了外部上拉电阻后,两个电阻处于并联情况,属于强上拉,驱动能力符和运用要求)

现在绝大多数单片机的IO口都是使用MOS管而非三极管,但用在这里的MOS管其原理和三极管基本是一样的。

8-7方框内的电路都是指单片机内部部分,方框外的就是外接的上拉电阻。当要读取外部按键信号的时候,首先单片机必须得给个‘1’,也就是高电平才能正常的读取外部的按键信号。下面作出分析:

当内部输出是高电平,经过一个反向器变成低电平,NPN三极管不会导通,那么单片机IO口从内部来看,由于上拉电阻R的存在,所以是一个高电平。当外部没有按键按下将电平拉低的话,VCC也是+5V,他们之间虽然有2个电阻,但是没有压差,就不会有电流,线上所有的位置都是高电平,这个时候我们就可以正常读取到按键的状态了。

当内部输出是个低电平,经过一个反相器变成高电平,NPN三极管导通,那么单片机的内部IO口就是个低电平,这个时候,外部虽然也有上拉电阻的存在,但是两个电阻是并联关系,不管按键是否按下,单片机的IO口上输入到单片机内部的状态都是低电平,我们就无法正常读取到按键的状态了。

这个和水流其实很类似的。内部和外部,只要有一边是低电位,那么电流就会顺流而下,由于只有上拉电阻,下边没有电阻分压,直接到GND上了,所以不管另外一边是高还是低,那电位肯定就是低电位了。

这里得到一个结论,这种具有上拉的准双向IO口,如果要正常读取外部信号的状态,必须首先得保证自己输出的电平是‘1’,如果输出‘0’,则无论外部信号是高是低,这个引脚读进来的都是低。

 

拉电流负载和灌电流负载:

 

 

       图左是灌电流负载。单片机输出低电平时,LED亮,;输出高电平的时候,那就什么电流都没有,此时就不产生额外的耗电。

       图右是拉电流负载。单片机输出低电平的时候,LED不亮,此时VCC通过R2把电流全部灌进单片机IO口,并且电流时5ma。

单片机输出高电平的时候,VCC通过R2将电流注入到LED中,led亮(说法不对,应该是P1.0引脚的电压Vcc直接通过发光二极管将特大电流注入二极管)。注意到了吗? LED 不发光的时候,上拉电阻给的电流全部灌入单片机的引脚。如果在一个 8 位的接口,安装了 8 个 1K 的上拉电阻,当单片机都输出低电平的时候,就有 40mA 的电流灌入这个 8 位的接口。如果四个 8 位接口,都加上 1K 的上拉电阻,最大有可能出现 32 × 5 = 160mA 的电流,都流入到单片机中。这个数值已经超过了单片机手册上给出的上限。此时单片机就会出现工作不稳定的现象。而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快...等。

综上所述,灌电流负载,是合理的;而“拉电流负载”和“上拉电阻”会产生很大的无效电流,并且功耗大

     如果加大上拉电阻呢?

     答:这也不行,因为需要它为拉电流负载提供电流。对于 LED,如果加大电阻,将使电流过小,发光暗淡,就失去发光二极管的作用了。在图右,假如单片机输出的高电平时3V,此时R2两端的电压差为5V-3V=2V。经过R2的电流为I=2V/1000=2ma,这一部分电流将全部流入LED。如果加大电阻,上拉电阻提供的电流将会减小。

所以应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗。

推荐阅读