打印

PWM相关知识

[复制链接]
443|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LOVEEVER|  楼主 | 2023-12-16 16:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

什么是PWM?

PWM:Pulse Width Modulation,脉冲宽度调制。

关于PWM,网上的解释很多,通过下图,你就能够直观地理解PWM,其实就是高低电平组成的脉冲信号。




通过改变其中频率(脉冲周期)、占空比,就能应用在很多场合。




PWM常见输出方式

通过上面描述,PWM就是一个IO口以不同的时间周期输出高、低电平。

1、新手(菜鸟)级别



while循环中,阻塞延时,控制IO口高低输出:



while(1)
{
  IO口高电平
  Delay阻塞延时
  IO口低电平
  Delay阻塞延时
}


阻塞延时可以是:软件模拟延时,定时器阻塞延时等。

2、入门(初级)级别



while循环中,非阻赛延时,控制IO口高低输出:



while(1)
{
  IO口高电平
  Delay非阻塞延时
  IO口低电平
  Delay非阻塞延时
}


非阻赛延时可以是定时器标识检测、RTOS(系统)延时等。



3、熟悉(中级)级别



定时器中断控制IO高低电平输出:



定时器中断配置——>启动定时器——>响应中断,控制IO高低电平···


4、熟练(中级+)级别

定时器PWM硬件控制输出:

配置PWM对应的IO,以及定时器PWM输出——>启动PWM自动输出···


void AppTask(void *p_arg)
{
  PWM_TIM_Configuration();

  PWM_Output(频率, 占空比);

  while(1)
  {
    //自己的应用代码
  }
}


5、比较

上面几种PWM输出方式,前面三种都会CPU干预PWM的输出,也就是会占用CPU资源,特别是前面两种方式,不仅占用CPU,误差还比较大。

使用第三种中断方式,如果频率比较高,CPU消耗的也比较严重。这种情况适合于没有硬件PWM输出的单片机。

第四种就是单片机自带硬件PWM输出功能,只需要简单配置就可以自动输出PWM波形,无需CPU干预。


使用特权

评论回复
沙发
tpgf| | 2024-1-4 15:48 | 只看该作者
为什么现在都是脉宽调试而不是幅值调制呢

使用特权

评论回复
板凳
drer| | 2024-1-4 16:27 | 只看该作者
pwm都可以控制哪种类型的电机呢

使用特权

评论回复
地板
wiba| | 2024-1-4 19:20 | 只看该作者
脉冲信号后端还需要有驱动机构吧

使用特权

评论回复
5
kxsi| | 2024-1-4 19:55 | 只看该作者
三相pwm如何进行配合输出呢

使用特权

评论回复
6
coshi| | 2024-1-4 20:31 | 只看该作者
通过定时器控制io和控制pwm的区别是什么呢

使用特权

评论回复
7
qcliu| | 2024-1-4 21:04 | 只看该作者
pwm的频率肯定受到单片机引脚的响应速度的限制

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

278

主题

1879

帖子

4

粉丝