了解舵机以及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; // 角度存储变量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转动到指定角度 } }
连接开发板设置好端口和开发板类型,进行验证上传即可驱动舵机。
hello my world
本文来自博客园,作者:slowlydance2me,转载请注明原文链接:https://www.cnblogs.com/slowlydance2me/p/17151523.html