1)舵机的用途
伺服舵机,一般也称为舵机,是一种能够精确控制位置的电机系统。它可以通过控制指令输出指定的旋转角度。
与普通直流电机的主要区别在于,直流电机是绕圈旋转的,而舵机只能在一定角度内旋转,到达指定位置后停止;舵机一般都有最大旋转角度,不能360旋转。普通直流电机一般旋转一整圈,适合动力使用。舵机用于控制物体旋转一定角度。它们适合控制转向、姿态或作为移动关节。
2)舵机参数
扭矩,由于舵机的动力来自于电机和减速齿轮组,所以它的输出扭矩比较大。常见的玩具级9g舵机也能提供1.5kg/cm~1.8kg/cm的扭矩,如下图:
舵机的另一个重要参数是速度,也就是上图中的Operating Speed参数。主要代表舵机能够转动的最快角速度。如上图所示,在6V电压、空载的情况下,该舵机可以在0.1s内转过60角度。
3)舵机工作原理
舵机内部由直流电机、减速齿轮组、传感器和控制电路组成。它是一个闭环控制系统。其原理框图如下:
舵机轴上连接有一个电位器作为位置检测传感器。当舵轴转动时,电位器输出的电压会发生变化(即通过电压可以知道舵轴的角度)。当外部控制信号输入时,控制电路会将控制信号与舵轴位置进行比较,看是否有偏差。如果不同,则控制电机驱动舵轴到预定位置,直至控制信号与舵轴位置相同。这种控制系统一般采用PID来实现。
当我们使用舵机时,我们不需要考虑它内部是如何工作的。我们只需要根据规则给出适当的控制信号即可。
舵机对外接口一般为三线:
正负极用于供电;信号线用于接收控制信号。该控制信号一般为PWM波。 PWM波的占空比用于控制舵机的输出角度。
具体控制规则为:PWM波的周期为20ms,脉冲高电平一般为0.5ms~2.5ms。舵机在0.5ms输出最大负角度,舵机在2.5ms输出最大正角度。中间的脉冲宽度与角度线性对应,如下图所示:
了解了上面的驱动规则之后,就不难理解为什么很多成品航模遥控设备的通道输出既可以连接电调,也可以连接舵机,因为电调和舵机都可以通过PWM波控制。
4)舵机驱动编程练习
现在我们就写一个程序来实现舵机的驱动,或者使用stm32f103C8t6最小系统板作为硬件。
舵机负极接GND,正极接5V,信号线接单片机的PB1引脚。
在cubemx中创建一个工程,设置如下,使用定时器3的ch4输出pwm:
PWM波的参数配置为20ms周期,初始脉冲宽度0.5ms,生成keil工程。
然后在keil工程中添加代码:
在Tim.c文件中添加修改PWM脉冲宽度的函数。调用该函数可以方便地修改定时器3的ch4输出的PWM脉冲宽度:
,
在Main.c文件中,在main函数初始化时,添加一个启动PWM输出的函数,并在主循环中每隔1秒修改一次PWM的宽度,看能否驱动舵机运动:
编译上述代码,下载到开发板并运行。可以看到舵机每1 秒就会移动到一个新位置。移动到最大角度后,下次会回到初始位置。
下一篇
智嵌物联接线(智嵌云控)