了解舵机以及MG996R的控制方法
1.舵机基础知识:
舵机是遥控航空、航天模型控制动作,改变方向的重要组成部件,舵机是一种位置(角度)伺服的驱动器。
舵机主要适用于那些需要角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。舵机的控制信号实际上是一个
2.舵机的构造:
舵机主要是由外壳、
引脚接线说明:
红色:供电;
粽色:地线;必须与控制器, 如SMT32芯片共地;
橙色:PWM信号线;
3.工作原理:
由接收机发出讯号给舵机,经由电路板上的 IC驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻值便可知转动的角度。
大多数舵机PWM控制协议,都已经标准化。舵机一般有三根引线,分别为电源线、地线、信号线。通过PWM来控制舵机输出轴的旋转角度,下图是MG996R舵机PWM控制波形。

PWM信号周期: 20000 us
0度时,高电平时长: 500 us
180度时, 高电平时长:2500 us
每增加1 °,需增加高电平时长:(2500-500)÷180 = 11.1 us
(ps: 脉冲宽度(W),简称“脉宽”,是脉冲高电平持续的时间。占空比(D),脉宽除以脉冲周期的值。)
某角度值A,需要的总高电平时长:(A x 11.1 +500)us
注意:
①PWM波其实就是一种脉宽可连续调节的矩形脉冲波。
②占空比其实就是描述脉宽与脉冲周期的比值,是量化值。
③占空比调节就是脉宽调节,表达不一样,但本质是一样的。
4.舵机类型:

5.舵机的使用:
使用Arduino编译平台中的servo.h舵机库进行对舵机的控制

将舵机从0°~90°再回转的控制代码如下:
#include <Servo.h>Servo myservo; // 定义Servo对象来控制int pos = 0; // 角度存储变量posvoid setup() { myservo.attach(9); // 控制线(橙色)连接数字引脚9接受PWM信号}void loop() { for (pos = 0; pos <= 90; pos ++) { // 角度pos从0°到90° // in steps of 1 degree myservo.write(pos); // 舵机角度写入 delay(10); // 等待10ms转动到指定角度 } for (pos = 90; pos >= 0; pos --) { // 从90°到0° myservo.write(pos); // 舵机角度写入 delay(10); // 等待10ms转动到指定角度 } }