七彩灯模拟PWM渐变设计谈:
T为PWM周期,设为1MS。
T1为PWM高电平周期(如果是要求低电平驱动就是低电平驱动。这里设为高电平驱动)
在这里采用死延时的方法来控制PWM的占空比,死延时的多少是基于T周期的占空比,也即T1与T的比。模拟PWM的T周期的产生是在一个程序循环当中实现,设T1x为T1的延时值,则通过一个定时中断即可定时刷新PWM的占空比,如果定时中断刷新T1X的值为渐增的,则PWM占空比是上升的,则LED产生渐亮的变化,反之,则LED则产生渐暗的变化效果,刷新的速度由定时器进行控制,也即LED渐变的速度是由定时器控制的。当然也可使用检测外部的交流过流来刷新灯渐变来代替定时器的上述的这个功能,如果使用这个功能,在一些不同的灯需要同步的场合,是一种比较好的选择。PWM的细分是由死延时参数T1X来决定的,越大则细分的越精确,当然如果仅控制LED,没有必要细分太细。
详细的程序操作过程:(仅讲述定时器作为刷新功能的设计)
先假设细分为100份,估且称为100单步,则T1X变化从0~100,时间T为1MS,则每10US变化1单步。
开启定时器刷新T1X值,只要变量时间T一直在循环,一到便将询问T1X变量为多少,从而决定高电平延时时间是多少单步,程序一进度渐变的循环则问T1X是否为0,如果为0,则说明占空比为0%,没有高电平,如果非0,则打开LED端口为高电平,延时T1X单步时间,延时时间完毕后,将LED端口清为0低电平,再延时T-T1X时间,即完成了一个T周期的控制,回到下一个T周期的开始。在定时器中渐增刷新T1X值,则LED起到了渐增的渐亮的效果。如此往复。
如果要实现一种颜色渐增同时另一种颜渐亮,只要在控制端口时控制即可。具体操作领会即可,在此不再赘述。
回复:彩灯渐变PWM方式设计方法谈
楼主,我现在也想用PWM方式充电,可是程序编写起来有点麻烦呀,能否交流一下?