PWM是如何实现?PWM基本原理

基本原理
pwm的全称是脉冲宽度调制(pulse-width modulation),是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式;
所以根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效的获得所需要合成的相应幅值和频率的波形;
具体如下图所示;
由上图可知,脉冲宽度调制使用一个脉冲宽度会被调制的方波,并且波型的平均值会有所变化。
如果我们考虑一个周期为  的脉冲波  ,低值 ,高值为  ,跟占空比(duty cycle),此波的平均值为:
当  是一个脉冲波,它的值在  是  而在 是
上式的描述可以变为:
以上公式可以在很多状况下被简化,当  及 。
从这里可以看出,波型的平均值非常明显地直接与占空比  有关。
占空比:
图中存在三种占空比状态,25%,50%和75%占空比状态,不难发现,假设占空比为d,则满足:
其中是pwm的周期,通常和载波的周期相同;
pwm是如何实现?
pwm实现的原理是通过锯齿波/三角波(载波)所需要合成的波形(调制波)进行比较,然后确定pwm所需要输出的极性,通常是on或者是off,因为一般都是作用到开关元器件上;如下图所示;
振荡器和比较器
振荡器输出的锯齿波和参考值  进行比较,然后就可以输出pwm波形了;
在matlab的simulink中搭建了一下仿真,具体如下图所示;
simulink
最终输出波形如下:
50%占空比
这里简单说明一下:
锯齿波(图中橙色波形)最大为10,然后我希望输出平均为5的波形(图1中红色的水平直线);
那么通过比较,当锯齿波小于5时;pwm输出低电平,即为off;
当锯齿波大于5时,pwm输出高电平,即为on;
所以再换一个思路,如果我希望输出一个电压逐渐升高的波形呢,该如何设计呢?
其实很简单,只要把需要调制的波形设置为斜坡输出的波形就可以了,具体如下图所示;
占空比逐渐增大
可以看到,最终占空比逐渐从0%增大到100%;
然后我们继续想,能不能调制出其他的波形,比如调制一个正弦波sin wave,那也就是我们常说的spwm,其实是可以的,具体如下图所示;
spwm
分类
参考stm32中pwm的配置,根据载波波形的形状,假设三角波最大值是10,那么它的变化过程可能存在以下两种情况:
完整周期包括两个过程,先递增,再递减:增加增加减少减少,这种也叫中央对齐pwm;
完整周期只有递增过程:增加增加;
中央对齐pwm
脉冲波的中心将会被固定在时间窗格的中心,同时脉冲波的两边可以移动,使得波的宽度被延伸或压缩,具体如下图所示;
中央对齐pwm
另一种类型的pwm脉冲波形如下图所示;
程序实现
现在的mcu大部分都自带硬件pwm发生器,即配置好相应的寄存器,就能直接产生pwm,下面的例子基于nucleo-f767zi,通过cubemx配置了三路pwm输出,然后实现了呼吸灯的效果;
int main(void){ hal_init(); mx_gpio_init(); mx_tim4_init(); mx_tim3_init(); mx_tim12_init(); int32_t time_stamp = 0; int32_t time_stamp_old = 0; int32_t ccr_val = 0; uint8_t add_flag = 1; hal_tim_pwm_start(&htim4, tim_channel_2); hal_tim_pwm_start(&htim12, tim_channel_1); hal_tim_pwm_start(&htim3, tim_channel_3);  while (1) {   time_stamp = hal_gettick();   if(time_stamp - time_stamp_old > 5){   time_stamp_old = time_stamp;   if(add_flag){    ccr_val+=25;    if(ccr_val >= 0xffff){    ccr_val = 0xffff;    add_flag = 0;   }   }else{    ccr_val-=25;    if(ccr_val ccr2 = ccr_val;   tim12->ccr1 = ccr_val;   tim3->ccr3 = ccr_val;   } }}
整体效果如下:
呼吸灯
通过示波器看其中的一路pwm输出的占空比也是随时间变化;
pwm变化情况
总结
本文简单介绍了pwm的原理,以及如何产生pwm,可以通过锯齿波作为载波和调制波经过比较强,产生相应的pwm输出波形,最后结合stm32实现了一个呼吸灯的简单程序。


Hold住潘通流行色 玩转兰玉时尚品味
基于NE555驱动的氦氖激光器电路
汽车网关的信息安全分析
德州仪器推出三款新型D类音频放大器_破解智能家居音频设计难题
12V汽车电池充电器电路原理图
PWM是如何实现?PWM基本原理
MIT研发便携设备,可检测脂肪肝详细情况
为何毫米波需要采用不同的DPD方法?如何量化其值?
天箭惯性因撤回上市申请,被上交所终止审核
全差分连续共模反馈增益提高电路图
电力设备及工业控制行业产品生命周期和投资框架
VM系列振弦采集模块频率计算与质量评定
紫外照射装置的透视窗采用什么玻璃?
代号“武松” MTK又一神级处理器曝光
单片机C语言中变量的定义方法解析
常见的ADC类型及原理,以及可能容易掉进去的坑
美国物理学家如何证明多维度空间概念?
用于健康监测的植入式柔性传感器
2019年SSD回顾:TLC NAND仍然是主流
电话网络报警系统连接器电路设计详解