从直流电动机的控制要求出发,我们需要控制高电平输出的个数,即在某个周期内输出高电平的比例,称为PWM占空比。PWM占空比越大,电动机获得的能量就越大,电动机就转动的越快。
用单片机控制占空比的常用方法是用定时器来实现,用定时器输出固定的脉冲宽度,以此来计数,确定在某个周期内输出的脉冲个数。
占空比控制程序如下:
程序首先定义1个脉冲输出引脚和两个按钮,然后定义了3个变量,高电平脉冲数PWMH、周期数PWM、和计数变量COUNTER。
程序包括一个主程序,三个子程序:定时中断子程序和两个按钮处理程序。(www.xing528.com)
主程序设置了高电平脉冲数、计数初值和计数周期数。然后设计定时器参数并启动定时器。在无限循环中检测是否有按钮按下,若有按钮按下,执行按钮处理子程序。
定时中断程序中,首先给计数变量COUNTER加1,然后判断计数变量COUNTER是否等于计数周期数PWM,同时不等于高电平脉冲数PWMH,若符合条件,则计数变量COUNTER复位为1,输出电平为1(高电平)。否则,如果计数变量COUNTER等于设置的高电平脉冲数PWMH,则将输出变为0(低电平),即在周期内按设定的占空比输出高电平。此后,COUNTER计数值不断增加,只会输出低电平,直到到达本周期结束,COUNTER重新置为1,输出电平为1(高电平)。中断程序处理变量与输出电平关系,如图15-1所示。
图15-1 中断程序处理变量与输出电平关系
两个按钮处理子程序用于处理占空比即高电平脉冲数的改变,按钮1用于增加占空比,按钮2用于减小占空比。
当按钮1按下时,就会跳转到按钮1处理子程序。程序首先等待按钮放开,然后判断高电平脉冲数PWMH是否已等于周期数,因为PWMH最大不能超过周期数PWM。若没有超过,就将PWMH加1,然后再次判断是否等于周期数PWM,若已等于周期数,则停止定时器即停止中断处理,保持输出为高电平,因为高电平脉冲数等于周期数,即占空比为1,整个周期都是高电平。否则就开启定时器,继续定时中断处理。
当按钮2按下时,就会跳转到按钮2处理子程序。同样,程序等待按钮放开,然后判断高电平脉冲数PWMH是否等于1,若已等于1,则不作任何处理,因为高电平最小是1。若PWMH还大于1,则将PWMH减1,然后再次判断是否已等于1,若等于1,则停止定时器即停止中断处理,并保持输出为低电平,因为,占空比为最小,即整个周期为低电平。否则,开启定时器,继续中断处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。