有一种电机可以在程序的控制下,在一定范围内连续改变输出轴角度并且可以保持住。 这种电机最早被用在航模和船模等遥控模型中,控制各种舵面的转动,这就是舵机。 现在舵机除了运用在遥控模型中,也大量的运用在各种机器人、机械臂的关节以及智能小车的转向机构中。 下图就是一种标准舵机的外形。
6.1. 舵机分类
- 按照舵机的控制电路可以分为:模拟舵机和数字舵机。模拟舵机和数字舵机的机械结构可以说是完全相同的, 模拟舵机的控制电路为纯模拟电路,需要一直发送目标信号,才能转到指定的位置,响应速度较慢,无反应区较大; 数字舵机内部控制电路则加上了微控制器,只需要发送一次目标信号,即可到达指定位置,速度比模拟舵机更快,无反应区也更小。
- 按照使用对象的不同,可以分为:航模舵机、车模舵机、船模舵机和机器人舵机。航模舵机一般要求速度快、精度高, 而车模和船模用的舵机一般要求具有大扭矩和防水性好。
- 按照内部机械材质,又可分成:塑料齿舵机和金属齿舵机。塑料齿舵机内部的传动齿轮是塑料的,重量轻价格便宜, 但是扭矩一般较小无法做大;金属齿舵机的扭矩更大,舵机更结实耐用,但是相比塑料齿更重也更贵。
- 按照外部接口和舵机的控制方式,又可分为:PWM舵机和串行总线舵机。
6.2. 舵机结构
舵机主要由以下几个部分组成:外壳、舵盘、直流电机、减速齿轮组、角度传感器、控制驱动电路和接口线缆等。常见的舵机内部结构如下图所示。
其中角度传感器负责舵机的位置反馈,直接装在舵机的主输出轴上,将轴旋转后产生的角度变化变成电压信号发回控制电路,当前轴角度; 控制驱动电路用来接收外部接口传来的信号和角度传感器反馈的电压值,以及驱动直流电机旋转; 减速齿轮组则是降低直流电机的转速并且放大扭矩,这一部分就跟前面介绍的直流减速电机差不多了。
市面上常见的廉价舵机通常采用小型的直流有刷电机和塑料材质减速齿轮组,传感器一般使用电位器返回模拟电压。而一些稍贵的则会使用金属齿轮组。 一些高端的舵机内部甚至会采用无刷电机和磁电编码器。
6.3. 舵机工作原理
模拟舵机和数字舵机内部电路不同,所以原理上稍有差别,这里以模拟舵机进行讲解。模拟舵机内部的控制驱动电路板从外界接收控制信号, 经过处理后变为一个直流偏置电压,在控制板内部有一个基准电压,这个基准电压由电位器产生并反馈到控制板。将外部获得的直流偏置电压与电位器的电压进行比较获得电压差, 并输出到电机驱动芯片驱动电机,电压差的正负决定电机的正反转,大小决定旋转的角度,电压差为0时,电机停止转动。大致原理框图如下图所示。
从图中可以看到,舵机内部是闭环控制的,所以这一类电机实际上是一种位置(角度)伺服的简化版伺服电机,将工业伺服电机的三闭环控制简化成了只有一个位置闭环。 舵机这个名字是国内起的一种俗称,本质上属于伺服电机,它的英文就直接叫Servo,或者RC Servo。
6.4. 舵机控制原理
舵机的输入有三根线,一般的中间的红色线为电源正极,咖啡色线的为电源负极,黄色色线为控制线号线。 如下图所示。
舵机的控制通常采用PWM信号,例如需要一个周期为20ms的脉冲宽度调制(PWM), 脉冲宽度部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。 当脉冲宽度为1.5ms时,舵机旋转至中间角度,大于1.5ms时 舵机旋转角度增大,小于1.5ms时舵机旋转角度减小。舵机分90°、180°、270°和360°舵机, 以180°的舵机为例来看看脉冲宽度与角度的关系,见下图所示。
上图中脉冲宽度与舵机旋转角度为线性关系,其他舵机控制脉冲也类似,0.5ms对应0度,2.5ms对应最大 旋转角度,脉冲宽度与旋转角度也是线性关系。
6.5. 舵机几个参数介绍
舵机速度的单位是sec/60°,就是舵机转过60°需要的时间,如果控制脉冲变化宽度大,变化速度快, 舵机就有可能在一次脉冲的变化过程中还没有转到目标角度时,而脉冲就再次发生了变化, 舵机的转动速度一般有0.16sec/60°、0.12sec/60°等,0.16sec/60°就是舵机转动60°需要0.16秒的时间。 舵机的速度还有工作电压有关,在允许的电压范围内,电压越大速度越快,反之亦然。
舵机扭矩的单位是KG*CM,这是一个扭矩的单位,可以理解为在舵盘上距离舵机轴中心水平距离1CM处, 舵机能够带动的物体重量,如下图所示。
通常说的55g舵机、9g舵机等,这里的55g和9g指的是舵机本身的重量。
6.6. 舵机基本控制实验
6.6.1. 硬件设计
本实验使用MG996R舵机来演示,这款舵机的规格如下。
- 尺寸:40.5*20*41mm
- 重量:55g
- 速度:4.8V@ 0.12±0.01sec/60°——6.0V@ 0.11±0.01sec/60°
- 扭力:4.8V@ 11kg-cm——6.0V@ 13kg-cm
- 电压:4.8V-6V
- 空载工作电流:220±20mA
- 堵转工作电流:2000±30mA
- 响应脉宽时间≤5usec
- 角度偏差:回中差≤1°,左右各45°误差≤3°。
- 齿轮:5级金属齿轮组
- 连接线长度:300mm
- 接口规格:JR/FP通用。
电机开发板上预留了两个舵机接口,本实验只使用其中一个,舵机由TIM4的通道1控制,接口原理图如下图所示。
6.6.2. 软件设计
这里只讲解核心的部分代码,有些变量的设置,头文件的包含等并没有涉及到,完整的代码请 参考本章配套的工程。我们创建了四个文件:bsp_general_tim.c、bsp_general_tim.h文件用来 存定时器驱动和舵机控制程序及相关宏定义