[应用相关] PWM 脉冲宽度调制

[复制链接]
863|10
 楼主| equivalent 发表于 2020-7-21 20:11 | 显示全部楼层 |阅读模式
介绍:
利用微处理器的数字输出来对模拟电路进行控制 (很厉害哦)
对模拟电平信号进行数字编码,只要带宽足够,任何模拟值都可以用PWM进行编码

 楼主| equivalent 发表于 2020-7-21 20:12 | 显示全部楼层
特点:
简单灵活 动态响应好
 楼主| equivalent 发表于 2020-7-21 20:12 | 显示全部楼层
应用:
电动机控制(比如机器人内的电机控制,STM32中一个芯片可以控制很多电机)、功率控制、
 楼主| equivalent 发表于 2020-7-21 20:13 | 显示全部楼层
转换原理:
988225f16dbcb27e22.png
将模拟的信号(连续的曲线)分割,计算每块地面积,转换成数字信号的面积(不同的面积有不同的宽度,这也就是宽度调制这个名字的由来)
 楼主| equivalent 发表于 2020-7-21 20:13 | 显示全部楼层
PWM输出源和输出数量
STM32除了TIM6,7(基本定时器),TIM1,8可以产生7路,共14路;通用定时器TIM2,3,4,5每个4路,共16路,所以STM32可以产生30路PWM输出。
 楼主| equivalent 发表于 2020-7-21 20:14 | 显示全部楼层
控制原理
480765f16dc0ed0d0b.png
占空比:高电平持续时间占总时间的比例。
STM32 的PWM是TIMx_ARR寄存器确定频率(周期)、由TIMx_CCRx寄存器确定占空比的信号
 楼主| equivalent 发表于 2020-7-21 20:14 | 显示全部楼层
PWM模式:
脉冲宽度调制模式可以产生一个由 TIM1_ARR 寄存器确定频率、由TIM1_CCRx寄存器确定占空比的信号。在 TIM1_CCMRx寄存器中的OCxM位写入“110”(PWM 模式 1)或“111”(PWM 模式 2),【模式1,2选择输出的高低电平】能够独立地设置每个通道工作在 PWM模式,每个 OCx 输出一路 PWM。必须通过设置 TIM1_CCMRx 寄存器 OCxPE 位使能相应的预装载寄存器,最后还要设置 TIM1_CR1 寄存器的 ARPE 位使能自动重装载的预装载寄存器(在向上计数或中心对称模式中)。
 楼主| equivalent 发表于 2020-7-21 20:15 | 显示全部楼层
向上计数配置
当 TIM1_CR1 寄存器中的 DIR 位为低的时候执行向上计数。
在 PWM 模式 1,当 TIM1_CNT【计数器值】< TIM1_CCRx 时 PWM 参考信号,OCxREF 为高,否则为低。如果 TIM1_CCRx中的比较值大于自动重装载值(TIM1_ARR),则 OCxREF 保持为“1"。如果比较值为 0,则 OCxREF 保持为“0"。 图 128 为 TIM1_ARR=8 时边沿对齐的 PWM 波形实例
【不同的模式,1和0代表的电平高低不同,不是1是高,0是低】
 楼主| equivalent 发表于 2020-7-21 20:16 | 显示全部楼层
16625f16dc6a374d5.png
第一行是采用模式1的,模式2与模式1原理相同不过1和0代表的高低电平相反
还有向下计数模式(与向上技术模式相反),中央对齐模式,
 楼主| equivalent 发表于 2020-7-21 20:16 | 显示全部楼层
最后,重点是要通过两个寄存器TIMx_ARR寄存器,TIMx_CCRx寄存器控制
 楼主| equivalent 发表于 2020-7-21 20:17 | 显示全部楼层

作者:停下浮躁的心
链接:https://www.jianshu.com/p/ccc319d46b28
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

274

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部