ARM嵌入式学习笔记(5)产生PWM控制舵机
PWM基本知识
PWM 即脉冲宽度调制是英文“Pulse Width Modulation”的缩写,简称脉宽调试。是利用微
处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信
到功率控制与变换的许多领域中
例如上图中,矩形脉冲是 stm32 输出的数字信号,当这个信号接到外设上时,效果可以等效为这个正弦波。
一个周期内高电平的持续时间占总周期的比例成为占空比,通过修改占空比,可以改变输出的等效模拟电压。例如输出占空比为 50%,频率为 10Hz 的脉冲,高电平为 3.3V.则其输出的模拟效果相当于输出一个 1.65V 的高电平。
此外 PWM 输出的频率也会影响最终的 PWM输出效果,PWM 输出的频率越高,最终输出的“连续性”越好,越接近模拟信号的效果,频率低则会增强离散性,最终的输出效果会有比较强的“突变”感。
脉冲调制有两个重要的参数,第一个就是输出频率,频率越高,则模拟的效果越好。第二个就是占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。
舵机使用的 PWM 信号一般为频率 50Hz,高电平时间 0.5ms-2.5ms 的 PWM 信号,不同占空比的 PWM 信号对应舵机转动的角度,以 180 度舵机为例,对应角度图如下图所示。
CubeMX配置PWM
我们打开PWM通道1然后配置定时器频率为50Hz
这里的Pulse就是PWM的占空比,我们在程序中修改这个值,即可改变PWM的占空比,最大值为ARR的值。
代码
首先开启定时器
HAL_TIM_Base_Start(&htim2);
然后开启PWM通道
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
改变ARR的值即可改变PWM占空比
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, “ARR的值”);