51+TA8435h驱动步进电机时候总遇到问题。
单片机能正常输出信号,一连上后面光耦,直接把电平拉低了,经过一番了解,才知道原来是用51单片机的拉电流来驱动不了光耦,难怪频频出现问题。
在不改变原有已经焊好的电路的基础上做如上图修改就可以解决问题。(由于部分原因我也没试试)
当然也可以直接以灌电流(即光耦led负极接51IO口)来驱动光耦。但是需要修改后面的电路。
另外从网上找来类似这方面的讲解,供大家看看。
单片机的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。但是程序控制不了单片机的输出电流。单片机的输出电流,很大程度上是取决于引脚上的外接器件。
单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载;单片机输出高电平时,则允许外部器件,从单片机的引脚拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载”。
这些电流一般是多少?最大限度是多少?这就是常见的单片机输出驱动能力的问题。每个单个的引脚,输出低电平的时候,允许外部电路,向引脚灌入的最大电流为 10 mA;每个 8 位的接口(P1、P2 以及 P3),允许向引脚灌入的总电流最大为 15 mA,而 P0 的能力强一些,允许向引脚灌入的最大总电流为 26 mA;全部的四个接口所允许的灌电流之和,最大为 71 mA。而当这些引脚“输出高电平”的时候,单片机的“拉电流”能力呢?可以说是太差了,竟然不到 1 mA。
结论就是:单片机输出低电平的时候,驱动能力尚可,而输出高电平的时候,输出电流的能力很弱(这也是驱数码管时最好接上拉电阻)。
综上所述,灌电流负载,是合理的;而“拉电流负载”和“上拉电阻”会产生很大的无效电流,并且功耗大。
那么,把上拉电阻加大些,可以吗?
回答是:不行的,因为需要它为拉电流负载提供电流。对于 LED,如果加大电阻,将使电流过小,发光暗淡,就失去发光二极管的作用了。在图右,假如单片机输出的高电平时3V,此时R2两端的电压差为5V-3V=2V。经过R2的电流为I=2V/1000=2ma,这一部分电流将全部流入LED。如果加大电阻,上拉电阻提供的电流将会减小。上拉电阻的大小一般选择在1K-10K之间就行。
设计单片机的负载电路,应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗