天天看点

Arduino入门001 - 舵机控制一、舵机介绍

Arduio基础入门篇001 - 舵机控制

一、舵机介绍

1,结构组成

一般来讲舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等。舵机的输入线共有三条,如图1所示,红色中间,是电源线,一边黑色的是地线。

Arduino入门001 - 舵机控制一、舵机介绍

图一

其工作流程为:控制信号→控制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈,如图二:

Arduino入门001 - 舵机控制一、舵机介绍

图二

2,工作原理

舵机内部有一个基准电路,产生周期为20ms、宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经过电路板IC方向判断,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到位。

舵机转动的角度是通过调节PWM「脉冲宽度调制」信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。不同厂家不同型号的舵机也会有所差异。

Arduino入门001 - 舵机控制一、舵机介绍

PWM控制

由于Arduino的驱动能力有限,当需要控制多个舵机时,需要外接电源以及使用专用的舵机控制板。

二、 实验材料

①:Uno R3开发板

②:配套USB数据线

③:配套连接线

④:舵机

三、实验步骤

1,搭建电路图

舵机红色线接开发板5V,棕色线接开发板GND,橙色信号线接开发板数字引脚9。如图:

Arduino入门001 - 舵机控制一、舵机介绍

实物连接如下:

Arduino入门001 - 舵机控制一、舵机介绍
2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
#include <Servo.h>

Servo myservo;  // 定义Servo对象来控制
int pos = 0;    // 角度存储变量

void setup() {
  myservo.attach(9);  // 控制线连接数字9
}

void loop() {
  for (pos = 0; pos <= 90; pos ++) { // 0°到90°
    // in steps of 1 degree
    myservo.write(pos);              // 舵机角度写入
    delay(10);                       // 等待转动到指定角度
  }
  for (pos = 90; pos >= 0; pos --) { // 从90°到0°
    myservo.write(pos);              // 舵机角度写入
    delay(10);                       // 等待转动到指定角度
  }
}
           
3,连接开发板设置好端口和开发板类型,进行验证上传。
Arduino入门001 - 舵机控制一、舵机介绍
4,实验现象
Arduino入门001 - 舵机控制一、舵机介绍
5. 库函数介绍

用Arduino控制舵机一般有两种方法:

通过Arduino的普通数字引脚产生占空比不同的方波,模拟产生PWM信号进行舵机控制。

直接利用Arduino自带的Servo库进行控制。

Servo库常用函数:

Attach(接口)—设定舵机接口。

Write(角度)—用于设定舵机旋转的角度,可设定范围0°—180°。

Read()—用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。

部分来自链接:https://www.jianshu.com/p/f3fee0082519