什么是脉冲宽度调制?
那先搬出一段概念: 脉冲宽度调制 (英语:Pulse Width Modulation,缩写: PWM ),简称 脉宽调制 ,是将模拟信号变换为脉冲的一种技术,一般变换后脉冲的周期固定,但脉冲的占空比会依模拟信号的大小而改变。
那大家肯定又会问,什么是占空比?其实占空比就是指有效电平占整个输出信号的比例。PWM在实际应用中有什么作用呢,我们以呼吸灯为例,为大家演示PWM的具体用法与实际作用。
详细程序讲解
首先,配置定时器,将定时器配置为约100us中断一次。同时在主函数我们使PWM的占空比(在这里即OUT的值)不断改变,从0自加到100,再从100 自减到0。50MS的延迟控制灯亮暗的频率。大家还可以使用按键来控制PWM的占空比,来实现亮度控制。
在定时器中断函数里,我们设置一个计数位,不断从0增加到100,同时在计数位大于设置的占空比OUT时,输出高电平(P1=0xFF),小于设置值OUT输出低电平(P1=0X00)。那么PWM波的频率也就是1s/(100us*100)=100Hz,(1s除以每次中断时间*count)。
这个时候io口输出的其实是按图中所示的由高低电平组成的波形。一个高电平加一个低电平即为一个周期。
效果展示
实际运行效果,LED灯逐渐变亮又逐渐变暗,如果调节变化的速率,还会有新的发现,大家可以试一试。
以上为使用定时器生成PWM波的方法,现在许多比较新的单片机自带PWM输出,例如stc12c5a60s2,stm32等,配置的方法各不相同,但是都能实现PWM的输出与控制。PWM作为一种十分常用的工具,在灯光,电机控制方面有非常广泛的应用,大家如果不满足于简单的呼吸灯,还可以通过电机驱动控制电机,用PWM来实现电机调速,希望大家可以通过动手实践,掌握PWM的使用方法。