了解舵机以及MG996R的控制方法

了解舵机以及MG996R的控制方法

1.舵机基础知识:

舵机是遥控航空、航天模型控制动作,改变方向的重要组成部件,舵机是一种位置(角度)伺服的驱动器。

舵机主要适用于那些需要角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿,车模和航模的方向控制。舵机的控制信号实际上是一个脉冲宽度调制信号( PWM信号),该信号可由FP-GA器件、模拟电路或单片机产生。

2.舵机的构造:

舵机主要是由外壳、电路板、驱动马达、减速器与位置检测元件所构成。

引脚接线说明

  • 红色:供电;

  • 粽色:地线;必须与控制器, 如SMT32芯片共地;

  • 橙色:PWM信号线;

3.工作原理:

由接收机发出讯号给舵机,经由电路板上的 IC驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻值便可知转动的角度。

大多数舵机PWM控制协议,都已经标准化。舵机一般有三根引线,分别为电源线、地线、信号线。通过PWM来控制舵机输出轴的旋转角度,下图是MG996R舵机PWM控制波形。

img

 

  1. PWM信号周期: 20000 us

  2. 0度时,高电平时长: 500 us

  3. 180度时, 高电平时长:2500 us

  4. 每增加1 °,需增加高电平时长:(2500-500)÷180 = 11.1 us

    (ps: 脉冲宽度(W),简称“脉宽”,是脉冲高电平持续的时间。占空比(D),脉宽除以脉冲周期的值。)
  5. 某角度值A,需要的总高电平时长:(A x 11.1 +500)us

    注意:

    ①PWM波其实就是一种脉宽可连续调节的矩形脉冲波。

    ②占空比其实就是描述脉宽与脉冲周期的比值,是量化值。

    ③占空比调节就是脉宽调节,表达不一样,但本质是一样的。

4.舵机类型:

 

 

 

5.舵机的使用:

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

 

 

将舵机从0°~90°再回转的控制代码如下:

#include <Servo.h>
​
Servo myservo;  // 定义Servo对象来控制
int pos = 0;    // 角度存储变量pos
void 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转动到指定角度
  }
}
连接开发板设置好端口和开发板类型,进行验证上传即可驱动舵机。

 
posted @ 2023-02-24 15:05  slowlydance2me  阅读(1336)  评论(0编辑  收藏  举报