• 了解舵机以及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 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转动到指定角度
      }
    }
    复制代码
    连接开发板设置好端口和开发板类型,进行验证上传即可驱动舵机。

     

    __EOF__

  • 本文作者: slowlydance2me
  • 本文链接: https://www.cnblogs.com/slowlydance2me/p/17151523.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    孔乙己第一问之服务通信知多少?
    《计算机操作系统-第五章》之线程与多线程模型
    【eigen】解决报错 return type of RCmpEQReturnType Eigen::operator== is not ‘bool’
    MySQL高级语句
    YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享
    动态规划 -背包问题-详解
    Linux TCP 单机优化
    第2/100天 阅读笔记
    【微信小程序】数字化会议OA系统之投票模块(附源码)
    C++ Reference: Standard C++ Library reference: C Library
  • 原文地址:https://www.cnblogs.com/slowlydance2me/p/17151523.html