PWM调速的实现
产生PWM信号可以由定时器来完成,但是由于51内部只提供了两个定时器,因此,如果要向三个或更多的直流电机输出不同占空比的信号,要反复设置定时器,实现较为复杂,我们采用一种比较简单的方法不仅可以实现对更多的直流电机提供不同的占空比输入信号,而且只占用一个定时器资源。这种方法可以简单表述如下:
在内存的某段空间内存放各个直流电机所需的输入信号占空比信息,如果占空比为1则保存0FFH(11111111B);占空比为0.5则保存0F0H(11110000B)或任何二进制数中包括4个0和4个1。即占空比=1的个数/8。
具体选取什么样的二进制数要看输出频率的要求。若要对此直流电机输出PWM信号。只要每个时间片移位一次取出其中固定的一位(可以用位寻址或进位标志C实现)送到电机端口上即可。另外,移位算法是一种对以前结果依赖的算法,所以定期检查或重置被移位的数,防止移错导致一直错下去。这种算法的优点是独立进程,可以实现对多个电机的控制,缺点是占用资源较大,PWM频率较低。