前期的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位的接口,则每个引脚的电流就不要大于2~3mA。这样来看,上拉电阻最小应该在1.8K~2.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的电阻。
==================================
上述的各个电路,都是以扩大单片机的输出电流为主题。其实,许多数字%&&&&&%的输出端,都存在扩大电流输出才能的问题,这儿给出的电路,是遍及适用的。
这儿介绍的8050/8550能够输出1500mA的电流,假如要求更大的输出电流,一种办法替换三极管,别的也能够运用专用大功率驱动器材,如L298,固态继电器,IGBT等等