STM32驱动SM-S4306R 360度舵机
本文描述了如何使用stm32的PWM驱动SM-S4306R 360度舵机。
舵机简介
- 01
1、什么是舵机 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。
- 02
2、工作原理 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。 舵机一般结构如下图:
- 03
3、舵机的控制 舵机的控制一般需要一个20ms左右的脉冲,高电平一般为0.5ms~2.5ms范围。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms----------- 0度 1.0ms----------- 45度 1.5ms----------- 90度 2.0ms-----------135度 2.5ms-----------180度 小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需要更快速的反应,就需要更高的转速了。舵机上有三根线,分别为VCC、GND、信号线。而不需要另外接驱动模块,直接用单片机的管脚控制就行了。如果要更为精确的控制舵机(转动角度差<=1度),则需要控制输出PWM信号的占空比,例如:可以把0~180分为1024份,范围为0.5ms~2.5ms,则可以得到0.09度/us,计算出PWM输出脉宽值period=0.5+angle/0.09/1000(angle是角度,单位为°;period是脉宽,单位为ms),可控制舵机转动0~180度间的任意角度。
- 04
4.gokit STM32驱动舵机实例 舵机型号:SM-S4306R采用周期为20ms的PWM驱动,PWM脉宽在0.5ms-2.5ms之间;舵机5V工作电压,电流80mA左右,STM32输出3.3V可直接驱动起来;定时器时钟为64MHz,使用Time1的channel1作为PWM的输出通道;预分频prescaler设置成6400-1,则输出PWM周期为20ms;period设置成200-1.pulse初始值是15时处在中间位置;200个period对应20ms,可得到以下对应关系:脉 宽------------角 度--------pulse0.5ms------------0 度---------5;1.0ms------------45 度---------10;1.5ms------------90 度---------15;2.0ms-----------—135度---------20;2.5ms------------180度---------25;
- 05
开启定时器PWM:
- 06
测试代码: