PWM例程
工程中经常会用到PWM,例如控制电机转速等等,这一节我们讲一下PWM例程。
0. PWM生成原理
这里仅做简单的示意,CNT他可以是直角三角形也可以是等腰三角形的,即可以up或者down或者up+down计数。具体的原理可以在网上搜一下学习。
1. 示例一: PWM_base例程
1.1 CubeMX初始化设置
cubemx的设置如下,这里设置了TIM2 PWM CH3输出, 对应了引脚PA2, 然后解释一下CubeMX的设置参数:
- 分频和计数, 上一讲说过了;
mode1和mode2, 分别是不同的比较模式
pulse为载波值,即上图PWM原理中的红色的比较线的值,可以动态的调整它来调节占空比.
- CH Polarity指的是通道输出的极性,它决定了PWM波形的有效电平。例如,当CH Polarity设置为High(高电平)时,PWM信号在计数器达到比较值之前会输出高电平。
1.2. 代码测试
设置完后生成代码,然后打开TIM,参考仓库中示例的程序,然后烧录后测试,我们拿到逻辑分析仪进行分析。
pulse设置为300时, 波形如下图
sConfigOC.Pulse = 300;
pulse设置为300时, 波形如下图
sConfigOC.Pulse = 800;
2. 示例二: PWM互补输出带死区例程
这里多用于数字电源中的MOS管桥臂的GS端的信号给定,上下管需要互补且带死区防止直通,可以拿到仓库的例程自行摸索,因为深入的东西需要自行摸索了,这里我只带一下大致的。
3. 课后作业
- 熟悉完成仓库给的PWM例程.
- 用PWM动态调节载波,实现呼吸灯.
- 自行学习更多的更复杂的PWM操作.