舵机其实是一种伺服马达,通过改变PWM的占空比来改变舵机的位置,PWM周期为20毫秒。
180度舵机占空比和位置的对应关系如下:
t = 0.5ms——————-舵机会转动 0 °
t = 1.0ms——————-舵机会转动 45°
t = 1.5ms——————-舵机会转动 90°
t = 2.0ms——————-舵机会转动 135°
t = 2.5ms——————-舵机会转动180°
如果使用STM32控制舵机,可以使用硬件PWM。以STM32F103为例,TIM3产生四路硬件PWM,这四路硬件PWM的周期是一样的为20ms, 占空比每一路都可以单独调节,这样就产生了四路PWM来控制舵机,注意占空比定义在0.5ms-2.5ms。
四路硬件PWM对应的管脚如下, SERVO01-SERVO04:
程序中通过修改四路PWM的占空比就可以分别控制四路舵机,注意为了保持舵机控制的平滑最好是缓慢改变占空比。比如从 0 ° 改变到 180 °,不是直接改变占空比到2.5ms而是缓慢增加占空比到2.5ms。这个改变速度需要和舵机联调,保证舵机转动的平滑。
如果使用STC15单片机控制舵机,因为STC15只有三路硬件PWM,所以只能采用软件模拟PWM。用定时器产生50us中断,那么50us就是修改占空比的最小值,周期还是20ms。
这样在定时器中断中改变占空比就可以控制舵机转动,实测50us中断中控制四路舵机是毫无压力的,同STM32控制一样,占空比需要慢慢改变而不是一下修改到目标值。
技术支持请加Q,一起学习新知识。删除& —等特殊字符277&94一3&652。