一、什么是PWM
脉冲宽度调制(PWM),简称脉宽调制,系指借助微处理器数字输出对模拟电路实施控制的一种高效方法,其在从测量、通信至功率控制与转换等多个领域具有广泛应用。
二、PWM的参数
PWM的频率与周期
PWM的频率是指在1秒钟内,信号从高电平到低电平再回到高电平的次数,即一秒钟内PWM的周期数,单位为赫兹(Hz)。
PWM的周期T与频率f之间的关系为:
T=1/f
若频率为50Hz,即一个周期为20毫秒,那么一秒钟内就有50个PWM周期。
占空比
占空比是指在一个脉冲周期内,高电平时间与整个周期时间的比例,单位为百分比(0%-100%)。如下图中所示,周期是脉冲信号的时间,一秒钟内的周期T次数等于频率f。脉宽时间是指高电平时间。
在上图中,脉宽时间占总周期时间的比例即为占空比。例如,若周期时间为10毫秒,脉宽时间为8毫秒,那么占空比为8/10=80%,这就构成了占空比为80%的脉冲信号。
PWM就是脉冲宽度调制,通过调节占空比就可以调节脉冲宽度。
三、PWM原理
以STM32单片机为例,其输入输出(IO)口能够输出高电平和低电平。假设高电平为5V,低电平为0V,若要输出不同范围的模拟电压,则需利用脉宽调制(PWM)技术。通过调整IO口输出方波的占空比,进而实现数字信号向模拟电压信号的转换。在此过程中,电压以脉冲序列形式加到模拟负载上。接通时,输出高电平1;断开时,输出低电平0。在接通状态下,直流供电输出;在断开状态下,直流供电中断。通过控制接通与断开时间,理论上可以输出任意不大于最大电压值5V的模拟电压。
举例来说,当占空比为50%时,高电平时间占一半,低电平时间占一半。在一定频率下,可得到2.5V的模拟输出电压。当占空比为75%时,得到的电压为3.75V。
总之,在一定频率下,通过调整不同的占空比,便可获得不同大小的输出模拟电压。脉宽调制(PWM)正是基于此原理实现数字信号与模拟信号的转换。
四、PWM Generator模块
从simulink模块库拖入一个PWM Generator模块,其参数配置如下所示:
PWM Generator模块通过比较载波和占空比来确定输出高波或低波。当占空比大于载波计数器值时,PWM发生器模块输出1,否则输出0。占空比作为模块外部输入,即DC端口。载波则通过模块内部参数Carrier counter设定。
PWM Generator模块支持三种载波计数器来改变PWM输出的初始输出或相位。
1. 上行计数器(Up counter)
PWM输出信号在周期开始时初始化。这张图显示了载波计数器信号和相应的PWM输出。
2. 下行计数器(Down counter)
PWM输出信号在周期末初始化。这张图显示了载波计数器信号和相应的PWM输出。
3. 上下行计数器(Up-down counter)
PWM输出信号在周期的中途初始化。这张图显示了载波计数器信号和相应的PWM输出。
模块其他参数解释
Timer period-定时器周期
当“载波计数器”选择“上行计数器”或“下行计数器”时,“定时器周期(秒)”参数设置为1/f。
其中f为开关频率。
以控制LED灯为例,一般人眼睛对于80Hz以上刷新频率则完全没有闪烁感,那么我们平时见到的LED灯,当它的频率大于50Hz的时候,人眼就会产生视觉暂留效果,基本就看不到闪烁了,而是误以为是一个常亮的LED灯。假设f=50HZ,f的物理意义为LED灯每秒闪烁50次。那么Timer period=1/f=0.02s,即每0.02s闪烁一次。
如果选择“载波计数器”为“上下行计数器”,则“定时器周期(秒)”参数为1/2f。
Timer period=1/2f=0.01s。
Phase delay (s)-相位延迟(秒)
相位延迟,单位是秒。添加一个相位延迟来改变计数器的初始状态。
值默认为0,非负数。
Sample time-块采样时间
对于连续时间模拟,设置为零。对于离散时间仿真,为了保证生成的信号有足够的分辨率,指定一个小于或等于Tper/10的正值,其中Tper为Timer period(s)。
若采用上面的设置Timer period=0.02s,则Sample time可设置为0.002。
需要注意的是,模型中各个模块的采样步长必须为模型指定的固定步长的整数倍。
即这里的固定步长 *n(n=1,10,100)应等于Sample time。
仿真
设定好模块参数后,根据输入占空比的变化就可以得到变化的PWM波。
假设使用PWM波控制LED灯在开关关闭后5秒内亮度逐渐变小最后熄灭。模型搭建如下:
通过一个倒计时模块,在5S内改变DC的值从1变为 0。
开关由1跳变为0时倒计时开始,每执行一次减法DC减少0.0004,这个值由仿真步长、采样时间Sample time和延时熄灭时间T=5s共同决定。仿真步长为0.002s,5s则需要2500步,Sample time与仿真步长相同,每一个步长执行一次采样,则DC从1到0需要执行2500步,每一步自减1/2500=0.0004。
结果如下:
五、 参考:
PWM原理及其应用