当前位置:首页 > > 小麦大叔
[导读]PWM的全称是脉冲宽度调制(Pulse-width modulation),是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式;所以根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效的获得所需要合成的相应幅值和频率的波形。

目录

  • 基本原理

  • PWM是如何实现?

  • 分类

  • 程序实现

  • 总结

基本原理

PWM的全称是脉冲宽度调制Pulse-width modulation),是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式;

所以根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效的获得所需要合成的相应幅值频率的波形;

具体如下图所示;

由上图可知,脉冲宽度调制使用一个脉冲宽度会被调制的方波,并且波型的平均值会有所变化。

如果我们考虑一个周期为 的脉冲波 ,低值 ,高值为 ,跟占空比 (duty cycle),此波的平均值为:

是一个脉冲波,它的值在 而在

上式的描述可以变为:

以上公式可以在很多状况下被简化,当

从这里可以看出,波型的平均值非常明显地直接与占空比 有关。

占空比

图中存在三种占空比状态,25%50%75%占空比状态,不难发现,假设占空比为D,则满足:

其中 是PWM的周期,通常和载波的周期相同;

PWM是如何实现?

PWM实现的原理是通过锯齿波/三角波(载波)所需要合成的波形(调制波)进行比较,然后确定PWM所需要输出的极性,通常是ON或者是OFF,因为一般都是作用到开关元器件上;如下图所示;

振荡器和比较器

振荡器输出的锯齿波和参考值 进行比较,然后就可以输出PWM波形了;

matlabsimulink中搭建了一下仿真,具体如下图所示;

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 <= 0){
     add_flag = 1;
     ccr_val = 0;
    }
   }
   TIM4->CCR2 = ccr_val;
   TIM12->CCR1 = ccr_val;
   TIM3->CCR3 = ccr_val;
   }
 }
}

整体效果如下:

呼吸灯

通过示波器看其中的一路PWM输出的占空比也是随时间变化;

PWM变化情况

总结

本文简单介绍了PWM的原理,以及如何产生PWM,可以通过锯齿波作为载波和调制波经过比较强,产生相应的PWM输出波形,最后结合STM32实现了一个呼吸灯的简单程序。

—— The End —

推荐好文   点击蓝色字体即可跳转
 太难了,炸机后才去注意PWM的死区时间
 当心!别再被大小端的问题坑了
 PID微分器与滤波器的爱恨情仇
 简易PID算法的快速扫盲
 增量式PID到底是什么?
 三面大疆惨败,因为不懂PID的积分抗饱和

原创不易,欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!





免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

脉冲宽度调制(Pulse Width Modulation,简称PWM)是一种利用微处理器数字输出实现模拟电路控制的核心技术,广泛应用于测量、通信、功率控制与变换等诸多领域。在单片机等数字系统中,IO口仅能输出高、低两种...

关键字: PWM 频率

‌PWM(Pulse-width modulation)是脉冲宽度调制的缩写。脉冲宽度调制是一种模拟信号电平数字编码方法。脉冲宽度调制PWM是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式。

关键字: 脉冲宽度调制

在电子工程领域,脉冲宽度调制(PWM)技术已成为控制模拟电路的核心手段。从电机调速到LED调光,从电源管理到通信系统,PWM通过数字方式精确控制模拟信号,实现了高效与灵活的电子设计。

关键字: PWM LED

在工业控制领域,脉冲宽度调制(PWM)技术是电机驱动、电源转换和LED调光等场景的核心。FPGA凭借其并行处理能力和可重构特性,成为实现高精度PWM信号的理想平台。本文聚焦死区控制与占空比精度调整两大关键技术,结合硬件架...

关键字: FPGA 工业控制 PWM

在显示技术领域,背光均匀性直接影响画面色彩还原、对比度及视觉舒适度。传统背光方案因光源分布离散、动态响应滞后等问题,常导致画面边缘暗角、高光溢出等缺陷。随着LED技术与调光策略的深度融合,分区控制与PWM调光技术已成为优...

关键字: 显示设备 背光均匀性 LED PWM

脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。

关键字: 脉冲宽度调制

在数字化电源设计浪潮中,数字电源控制芯片的选型直接决定了系统的效率、动态响应与智能化水平。从PWM分辨率、环路补偿灵活性到通信接口兼容性,工程师需在性能、成本与开发周期间找到最优解。本文结合TI、ADI、Infineon...

关键字: 数字电源 控制芯片 PWM

在电力电子技术飞速发展的今天,开关电源凭借高效、小型化、轻量化等优势,广泛应用于通信、计算机、工业控制等领域。而三端 PWM 开关作为开关电源的核心控制部件,其性能直接影响着开关电源的整体表现。本文将深入探讨三端 PWM...

关键字: PWM 开关电源 控制器

PWM(脉宽调制)调速系统是现代电机控制中广泛采用的一种技术,它通过改变脉冲信号的占空比,实现对电机转速的精确控制。这种技术不仅具有调速范围广、精度高、响应速度快等优点,而且能够显著降低电机运行时的能耗和温升,提高系统的...

关键字: PWM 电机

PWM小负载情况下的效率相对较低,而PFM则存在其局限性,它所能支持的输出电流较小,且电感的电流呈现线性上升趋势。此外,PWM调制方式具有较小的纹波电压,且其开关频率保持稳定,这使得噪声滤波器的设计更为简单,同时也简化了...

关键字: PWM PFM
关闭