课程目标
- 舵机的组成与工作原理
- 舵机的控制方式与应用
相关知识
**舵机:**是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
**舵机的结构组成:**一般来讲舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等。
**舵机工作原理:**舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达。
舵机角度控制: 舵机转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。不同厂家不同型号的舵机也会有所差异。
电路搭建
所需材料:
ArduinoUNO * 1
SG90舵机 *1
杜邦线若干
电路连接:
舵机一般都外接三根线,分别用棕、红、橙三种颜色进行区分,由于品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线。Arduino如果需要控制多个舵机,需要外接电源以及使用专用的舵机控制板。
程序编写
练习一:舵机往返运动
编写控制程序,实现舵机在0°和180°间不间断转动。
图形化方式:
代码方式:
/* 项目名称:舵机0~180°往返运动
* 项目时间:2022.03.22
* 项目作者:MRX
*/
#include < Servo.h >
Servo myservo; // 定义Servo对象来控制
int pos = 0; // 角度存储变量
void setup() {
myservo.attach(6); // 控制线连接数字6
}
void loop() {
for (pos = 0; pos <= 180; pos ++) { // 0°到180°
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
for (pos = 180; pos >= 0; pos --) { // 从180°到0°
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
}
练习二:可控的舵机
通过旋转电位器来控制舵机的转动角度。
电路连接:
舵机连接到UNO的6号脚,电位器连接UNO的A0。
图形化方式:
代码方式:
/* 项目名称:电位器控制舵机运动
* 项目时间:2022.03.22
* 项目作者:MRX
*/
#include < Servo.h >
Servo myservo; // 定义Servo对象来控制
int pos = 0;
void setup() {
myservo.attach(6); // 控制线连接数字6
pinMode(A0,INPUT);
}
void loop() {
pos = map(analogRead(A0),0,1024,0,180);//将电位器读取的值映射为舵机选择角度
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
程序分析:
用Arduino控制舵机一般有两种方法:
- 通过Arduino的普通数字引脚产生占空比不同的方波,模拟产生PWM信号进行舵机控制。
- 直接利用Arduino自带的Servo库进行控制。
Servo库常用函数:
- Attach(接口)—设定舵机接口。
- Write(角度)—用于设定舵机旋转的角度,可设定范围0°—180°。
- Read()—用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。
-
电位器
+关注
关注
14文章
1003浏览量
66666 -
控制电路
+关注
关注
82文章
1704浏览量
135728 -
舵机
+关注
关注
17文章
264浏览量
40913 -
伺服驱动器
+关注
关注
22文章
473浏览量
31415 -
Arduino
+关注
关注
187文章
6456浏览量
186486
发布评论请先 登录
相关推荐
评论