0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PWM脉冲宽度调制的基本原理及实现方法

凡亿PCB 来源:小麦大叔 作者:菜刀和小麦 2022-06-10 17:06 次阅读

目录

  • 基本原理

  • PWM是如何实现?

  • 分类

  • 程序实现

  • 总结

基本原理

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

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

具体如下图所示;

4cbc2e8c-d1ae-11ec-bce3-dac502259ad0.png

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

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

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

上式的描述可以变为:

4d1a55e8-d1ae-11ec-bce3-dac502259ad0.png

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

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

占空比

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

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

PWM是如何实现?

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

4d428e32-d1ae-11ec-bce3-dac502259ad0.png振荡器和比较器

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

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

4d71233c-d1ae-11ec-bce3-dac502259ad0.pngsimulink

最终输出波形如下:

4dc5c4a0-d1ae-11ec-bce3-dac502259ad0.jpg50%占空比

这里简单说明一下:

  • 锯齿波(图中橙色波形)最大为10,然后我希望输出平均为5的波形(图1中红色的水平直线);
  • 那么通过比较,当锯齿波小于5时;PWM输出低电平,即为OFF
  • 当锯齿波大于5时,PWM输出高电平,即为ON

所以再换一个思路,如果我希望输出一个电压逐渐升高的波形呢,该如何设计呢?

其实很简单,只要把需要调制的波形设置为斜坡输出的波形就可以了,具体如下图所示;

4e15736a-d1ae-11ec-bce3-dac502259ad0.jpg占空比逐渐增大

可以看到,最终占空比逐渐从0%增大到100%

然后我们继续想,能不能调制出其他的波形,比如调制一个正弦波sin wave,那也就是我们常说的SPWM,其实是可以的,具体如下图所示;

4e44f342-d1ae-11ec-bce3-dac502259ad0.jpgSPWM

分类

参考STM32中PWM的配置,根据载波波形的形状,假设三角波最大值是10,那么它的变化过程可能存在以下两种情况:

  • 完整周期包括两个过程,先递增,再递减:增加增加减少减少,这种也叫中央对齐PWM;
  • 完整周期只有递增过程:增加增加

中央对齐PWM

脉冲波的中心将会被固定在时间窗格的中心,同时脉冲波的两边可以移动,使得波的宽度被延伸或压缩,具体如下图所示;

4e56ab82-d1ae-11ec-bce3-dac502259ad0.png中央对齐PWM

另一种类型的PWM脉冲波形如下图所示;

4ea9404a-d1ae-11ec-bce3-dac502259ad0.png

程序实现

现在的MCU大部分都自带硬件PWM发生器,即配置好相应的寄存器,就能直接产生PWM,下面的例子基于NUCLEO-F767ZI,通过cubemx配置了三路PWM输出,然后实现了呼吸灯的效果;

intmain(void)
{

HAL_Init();

MX_GPIO_Init();
MX_TIM4_Init();
MX_TIM3_Init();
MX_TIM12_Init();

int32_ttime_stamp=0;
int32_ttime_stamp_old=0;
int32_tccr_val=0;
uint8_tadd_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;
 }
}
}

整体效果如下:

4ebbdb56-d1ae-11ec-bce3-dac502259ad0.gif呼吸灯

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

4f2ef91a-d1ae-11ec-bce3-dac502259ad0.gifPWM变化情况

总结

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

原文标题:天哪!原来PWM这么简单,看完这篇就懂了

文章出处:【微信公众号:凡亿PCB】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5140

    浏览量

    213360
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354694
  • 脉冲宽度调制

    关注

    7

    文章

    81

    浏览量

    13716

原文标题:天哪!原来PWM这么简单,看完这篇就懂了

文章出处:【微信号:FANYPCB,微信公众号:凡亿PCB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    认知里的PWM脉冲宽度调制

    针对PWM,官方的解释是这样:PWM,也称脉冲宽度调制,它是一种模拟控制方式
    的头像 发表于 07-07 14:37 1653次阅读
    认知里的<b class='flag-5'>PWM</b><b class='flag-5'>脉冲宽度调制</b>

    脉冲宽度调制PWM原理

    脉冲宽度调制PWM原理PWM脉冲宽度调制Pulse Width Modulation)原理:     
    发表于 11-27 11:51

    脉冲宽度调制PWM是什么?有哪些应用?

    目录一、什么是PWM信号二、PWM信号是如何产生的三、PWM有什么优点?四、PWM的应用一、什么是PWM信号
    发表于 07-05 07:11

    脉冲宽度调制PWM基本原理控制方式是什么

    一、PWM介绍PWM——脉冲宽度调制脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来
    发表于 03-02 06:53

    数字脉冲宽度调制器的实现

    数字脉冲宽度调制器的实现
    发表于 08-01 09:51 2427次阅读
    数字<b class='flag-5'>脉冲宽度调制</b>器的<b class='flag-5'>实现</b>

    主板用的DC to DC脉冲宽度调制PWM)电路图

    主板用的DC to DC脉冲宽度调制PWM)电路图 pwm原理图
    发表于 10-28 08:49 2992次阅读
    主板用的DC to DC<b class='flag-5'>脉冲宽度调制</b>(<b class='flag-5'>PWM</b>)电路图

    什么是脉冲宽度调制PWM)或脉冲频率调制(PFM)

    什么是脉冲宽度调制PWM)或脉冲频率调制(PFM) 所谓脉冲宽度调制方法是一种在整个工作过
    发表于 04-15 08:30 8627次阅读
    什么是<b class='flag-5'>脉冲宽度调制</b>(<b class='flag-5'>PWM</b>)或<b class='flag-5'>脉冲</b>频率<b class='flag-5'>调制</b>(PFM)

    脉冲宽度调制

    脉冲宽度调制
    发表于 04-15 10:19 1120次阅读
    <b class='flag-5'>脉冲宽度调制</b>器

    PWM脉冲宽度调制)的工作原理、分类及其应用

    脉冲宽度调制脉冲宽度调制PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应
    发表于 06-01 11:23 5.5w次阅读
    <b class='flag-5'>PWM</b>(<b class='flag-5'>脉冲宽度调制</b>)的工作原理、分类及其应用

    什么是脉冲宽度调制技术_脉冲宽度调制是什么含义

    实现变频变压的方法有多种,目前应用较多的是脉冲宽度调制技术,简称PWM技术。PWM控制是指在保持整流得到的直流电压大小不变的条件下,利用半导
    发表于 01-25 16:05 3.5w次阅读
    什么是<b class='flag-5'>脉冲宽度调制</b>技术_<b class='flag-5'>脉冲宽度调制</b>是什么含义

    基于数字电路的实验脉冲宽度调制

    我们还是先从脉冲宽度调制的基础说起。脉冲宽度调制,英文缩写为:PWM(Pulse Width Modulation),是通过数字信号实现对模拟电路控制的一种非常有效的技术,常被广泛应用
    的头像 发表于 03-22 09:08 4435次阅读
    基于数字电路的实验<b class='flag-5'>脉冲宽度调制</b>

    MPC82系列MCU的PWM脉冲宽度调制)采样代码

    MPC82系列MCU的PWM脉冲宽度调制)采样代码免费下载。
    发表于 07-01 10:26 0次下载
    MPC82系列MCU的<b class='flag-5'>PWM</b>(<b class='flag-5'>脉冲宽度调制</b>)采样代码

    脉冲宽度调制(PWM)的基本术语

    脉冲宽度调制 (PWM) 的良好定义就在名称本身。为了更好地理解 PWM 是什么,让我们首先看一些基本术语。
    的头像 发表于 11-23 16:49 2283次阅读
    <b class='flag-5'>脉冲宽度调制</b>(<b class='flag-5'>PWM</b>)的基本术语

    PWM脉冲宽度调制产生方波时,调制波可否采用三角波?为什么?

    PWM脉冲宽度调制产生方波时,调制波可采用三角波。
    的头像 发表于 03-10 15:12 6292次阅读
    <b class='flag-5'>PWM</b><b class='flag-5'>脉冲宽度调制</b>产生方波时,<b class='flag-5'>调制</b>波可否采用三角波?为什么?

    PWM脉冲宽度调制原理

    脉冲宽度调制原理 在GPIO的数字输入和输出模式中,只有高低电平,高电平一般是3.3V或者5V,低电平就是0V,如果我想要一个折中一点的电压怎么办呢?PWM大家了解一下。 PWM,全称是脉冲宽
    的头像 发表于 11-27 11:37 966次阅读
    <b class='flag-5'>PWM</b><b class='flag-5'>脉冲宽度调制</b>原理