14-STM32 PWM脉冲宽度调制
PWM&呼吸灯
在一组方波信号中
一个周期内包括高点平和低电平
假设高电平和低电平各占0.5ms 则一个周期为1ms
占空比:
数字信号与模拟信号:
PWM:用数字信号模拟模拟信号,实现线性功能。
通过调整占空比,模拟出不同的电压值,PWM就可以在宏观上实现类似正弦波等不同的波形信号
如何让STM32输出PWM信号:
需要借助定时器的另一种模式:输出比较模式。
在输入捕获模式下:检测到上升沿时会将计数器中的值捕获到捕获寄存器中
在输出比较模式下:变成了比较寄存器
通常我们会使用向上计数模式
对于有效电平和无效电平的解释输出控制器也反向输出
总之:
通过调节比较值,就可以控制占空比,进而调节宏观上的电压值
小灯对应的通道:
在PWM模式1 中Pulse设置的越小在占空比就越小
入将Pulse设置为50,则会输出3.3/2=1.6V左右的电压。小灯会更暗一点。
启动PWM输出
c
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
停止PWM输出
c
HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1);
修改PWM的比较的值
c
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,50);
舵机使用SG90
1.SG90是一种简易的伺服电机系统
给一个PWM不同的占空比即可控制点击旋转到指定角度。
绝大多数舵机通常使用50Hz,也就是周期为20ms的PWM信号进行控制,且占空比都是2.5% ~ 12.5%
输出占空比为2.5%的占空比PWM信号,舵机就会旋转到0°位置。
输出占空比为7.5%的占空比PWM信号,舵机就会旋转到90°位置。
输出占空比为12.5%的占空比PWM信号,舵机就会旋转到180°位置。
对于自动重装载值为200,设置比较寄存器的值为5,则舵机会旋转到0°。设置比较寄存器的值为15,则舵机会旋转到90°.设置比较寄存器的值为25,则舵机会旋转到180°
舵机的三根线
棕色:地线,接地。
红色线:火线,用于连接5V正极。
黄色线:数据线,用于接收单片机发送的PWM信号。
连接好线路,找到黄色线对应GPIO口的定时器通道,如
将tim3设置为pwm生成模式,将周期设置为50hz,即20ms , (内部时钟源为72Mhz) 72000000/(7200*200) = 50MH 7200X200 / 72000000= 0.02s
开启 TIM3的通道2
c
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
3.设置比较寄存器的值
c
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,5);