IO引脚中采用上拉电阻搭配拉电流负载错在哪?
在单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”。单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”。
本文引用地址://m.amcfsurvey.com/article/201611/317465.htm那么这些电流一般是多少?最大限度是多少?
早期的51系列单片机的带负载能力,是很小的,仅仅用“能带动多少个TTL输入端”来说明的。P1、P2和P3口,每个引脚可以都带动3个TTL输入端,只有P0口的能力强,它可以带动8个。分析一下TTL的输入特性就可以发现,51单片机基本上就没有什么驱动能力。它的引脚甚至不能带动当时的LED进行正常发光。
图1
图1中的D1、D2就可以不经其它驱动器件,直接由单片机的引脚控制发光显示。虽然引脚已经可以直接驱动LED发光,但还是看看AT89C51单片机引脚的输出能力吧。
从AT89C51单片机的PDF手册文件中可以看到,稳态输出时,“灌电流”的上限为:
MaximumIOLperportpin:10mA;
MaximumIOLper8-bitport:Port0:26mA,Ports1、2、3:15mA;
MaximumtotalIforalloutputpins:71mA.
这里也就是说每个单个的引脚,输出低电平的时候,允许外部电路,向引脚灌入的最大电流为10mA。每个8位的接口(P1、P2以及P3),允许向引脚灌入的总电流最大为15mA,而P0的能力强一些,允许向引脚灌入的最大总电流为26mA。
全部的四个接口所允许的灌电流之和,最大为71mA。而当这些引脚“输出高电平”的时候,单片机的“拉电流”能力呢?结果竟然不到1mA。
结论就是:单片机输出低电平的时候,驱动能力尚可,而输出高电平的时候,就没有输出电流的能力。
由于芯片的内部引脚和地之间三极管的存在,所以引脚具有下拉的能力,输出低电平的时候,允许灌入10mA的电流。而引脚和正电源之间,有个几百K的“内部上拉电阻”,所以,引脚在高电平的时候,能够输出的拉电流很小。特别是P0口,其内部根本就没有上拉电阻,所以P0口根本就没有高电平输出电流的能力。
图1中的D1,是接在正电源和引脚之间的,这就属于灌电流负载,D1在单片机输出低电平的时候发光。这个发光的电流,可以用电阻控制在10mA之内。D2是接在引脚和地之间的,这属于拉电流负载,D2应该在单片机输出高电平的时候发光。但是单片机此时几乎没有输出能力,必须采用外接“上拉电阻”的方法来提供D2所需的电流。
外接电路如果是“拉电流负载”,要求单片机输出高电平时发挥作用,那就必须用“上拉电阻”来协助,产生负载所需的电流。
上拉电阻存在的问题
图1中可以看到,D2发光,是由上拉电阻R2提供的电流,D2导通发光的电压约为2V,那么发光的电流就是:(5-2)/1K,约为3mA。
而当单片机输出低电平(0V),D2不发光的时候,R2上拉电阻两端的电压,比LED发光的时候还高,达到了5V,其中的电流是5mA。LED不发光的时候,上拉电阻给出了更大的电流。并且,这个大于正常发光的电流,全部灌入单片机的引脚。
如果在一个8位的接口,安装了8个1K的上拉电阻,当单片机都输出低电平的时候,就有40mA的电流灌入这个8位的接口。如果四个8位接口,都加上1K的上拉电阻,最大有可能出现32×5=160mA的电流,都流入到单片机中。这个数值已经超过了单片机手册上给出的上限。如果此时单片机工作不稳定,就是理所当然的了。
从以上的文章中可以看到,在单片机IO驱动能力上,还是采用灌电流的模式比较合理,而拉电流负载和上拉电阻会造成电路中产生无效的电流。本文通过多方面的分析与论证帮助大家对理清上拉电阻在单片机电路中某些应用的弊端。
评论