PWMPWM(Pulse Width Modulation)简称脉宽调制是应用在LED调光上非常广泛的技术之一,通过单片机I/O口输出一个PWM脉宽调制信号来控制输送到LED灯的电压变化,从而实现控制发光二极管亮度的效果。也广泛应用在测量、通信、工控等方面。
PWM的频率:
是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);
也就是说一秒钟PWM有多少个周期
单位: Hz
表示方式: 60Hz 120Hz
PWM的周期
T=1/f,T是周期,f是频率。
如果频率为60Hz ,也就是说一个周期是20ms,那么一秒钟就有 60次PWM周期。
占空比
是一个脉冲周期内,高电平的时间与整个周期时间的比例,单位是% (0%-100%)
一个周期的长度。
如上图,脉宽时间占总周期时间的比例,就是占空比。
比方说,周期的时间是10s,脉宽时间是6s,那么占空比是6/10= 60%,这就是占空比为60%的脉冲信号。
PWM就是脉冲宽度调制,通过调节占空比就可以调节脉冲宽度。
如何实现PWM信号输出
实现PWM信号输出有两种方式可实现:一是可以直接通过芯片内部模块输出PWM信号,前提是这个I/O口要有集成模块,只需要配置好频率和占空比,简单几步就好了。这种自带有PWM输出的功能模块在程序设计更简便,同时数据更精确。
二、是通过软件模拟实现PWM输出。如果对PWM频率要求不是很高的话,可以利用I/O口设置一些参数来输出PWM信号。因为PWM信号其实就是一高一低的一系列电平组合在一起。具体方法是通过定时器控制I/O的高低电平,对于你要求输出的PWM信号频率与你的定时器一致,用定时器中断来计数,通过调整计数值来改变占空比,当然如果要求不高也可以通过软件延时来实现。
PWM原理
以单片机为例,其IO口只能输出高电平和低电平。
假设高电平为5V、低电平则为0V,那么要输出不同的模拟电压就要用到PWM。通过改变IO口输出的方波的占空比,从而获得使用数字信号模拟成的模拟电压信号。
电压是以一种脉冲序列被加到模拟负载上去的,接通时是高电平1,断开时是低电平0。接通时直流供电输出,断开时直流供电断开。通过对接通和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值5V的模拟电压。
比方说,占空比为50%那就是高电平时间一半,低电平时间一半。在一定的频率下,就可以得到模拟的2.5V输出电压。那么75%的占空比,得到的电压就是3.75V,如下图。
也就是说,在一定的频率下,通过不同的占空比即可得到不同大小的输出模拟电压,PWM就是通过这种原理实现数字模拟信号转换的。
PWM信号应用--LED调光
交流调光电路,高电平占多一点,也就是占空比大一点亮度就亮一点,占空比小一点亮度就减弱,前提是PWM的频率要大于我们人眼识别频率,要不然会出现闪烁现象。
那么我们平时见到的LED灯,当它的频率大于50Hz的时候,人眼就会产生视觉暂留效果,基本就看不到闪烁了,而是一个常亮的LED灯,
你在1秒内,高电平0.5秒,低电平0.5秒,(频率1Hz)如此反复,那么你看到的电灯就会闪烁,
但是如果是10毫秒内,5毫秒打开,5毫秒关闭,(频率100Hz) 这时候灯光的亮灭速度赶不上开关速度(LED灯还没完全亮就又熄灭了),由于视觉暂留作用 人眼不是感觉电灯在闪烁,而是感觉灯的亮度少了 因为高电平时间(占空比)为50% 亮度也就为之前的50% ,
频率很高时,看不到闪烁,占空比越大,LED越亮;
频率很低时,可看到闪烁,占空比越大,LED越亮。
所以,在频率一定下,可以用不同占空比改变LED灯的亮度。