Arduino 第十二章:舵机
一、舵机概述
舵机是一种常见的执行机构,在机器人、航模、自动化控制等领域应用广泛。它能够根据输入信号精确地控制转动角度,具有控制简单、精度较高、扭矩较大等优点。舵机通常由直流电机、减速齿轮组、角度传感器和控制电路组成。
二、工作原理
舵机的控制基于脉冲宽度调制(PWM,Pulse Width Modulation)信号。控制信号是一个周期性的脉冲序列,周期一般为 20ms(50Hz),而舵机的转动角度由脉冲的高电平持续时间(脉冲宽度)决定。常见的舵机转动角度范围是 0° - 180°,对应脉冲宽度范围通常为 0.5ms - 2.5ms,具体对应关系如下:
- 脉冲宽度为 0.5ms 时,舵机转到 0°位置。
- 脉冲宽度为 1.5ms 时,舵机转到 90°位置。
- 脉冲宽度为 2.5ms 时,舵机转到 180°位置。
舵机内部的控制电路会根据输入的脉冲宽度,调整直流电机的转动方向和角度,同时角度传感器会实时反馈舵机的实际角度,形成闭环控制,确保舵机准确到达指定位置。
三、硬件连接
(一)所需材料
- Arduino 开发板(如 Arduino Uno)
- 舵机
- 杜邦线若干
(二)引脚说明
舵机一般有三根线:
- 红色线:电源正极,通常接 5V。
- 棕色线(或黑色线):电源负极,接地(GND)。
- 橙色线(或黄色线):控制信号线,连接到 Arduino 的一个数字引脚。
(三)连接方式
将舵机的红色线连接到 Arduino 的 5V 引脚,棕色线连接到 Arduino 的 GND 引脚,橙色线连接到 Arduino 的一个数字引脚,这里选择数字引脚 2。
(四)连接图
四、代码实现
(一)使用 Servo 库
Arduino 提供了 Servo
库,方便我们控制舵机。以下是一个简单的示例代码,让舵机在 0° - 180°之间来回转动:
#include <Servo.h>// 创建一个舵机对象
Servo myServo;// 定义舵机控制引脚
const int servoPin = 2;void setup() {// 将舵机控制引脚连接到舵机对象myServo.attach(servoPin);
}void loop() {// 舵机从 0° 转到 180°for (int angle = 0; angle <= 180; angle++) {myServo.write(angle);delay(15);}// 舵机从 180° 转到 0°for (int angle = 180; angle >= 0; angle--) {myServo.write(angle);delay(15);}
}
(二)代码解释
- 库的引入:
#include <Servo.h>
:引入Servo
库,该库提供了控制舵机的函数和方法。
- 变量定义:
Servo myServo;
:创建一个Servo
类的对象myServo
,用于控制舵机。const int servoPin = 9;
:定义舵机控制信号线连接到 Arduino 的数字引脚 9。
setup()
函数:myServo.attach(servoPin);
:将舵机对象myServo
与指定的控制引脚servoPin
关联起来。
loop()
函数:- 第一个
for
循环:for (int angle = 0; angle <= 180; angle++)
,让舵机从 0° 逐渐转动到 180°。myServo.write(angle);
函数用于设置舵机的转动角度,delay(15);
用于控制舵机转动的速度,避免转动过快。 - 第二个
for
循环:for (int angle = 180; angle >= 0; angle--)
,让舵机从 180° 逐渐转动到 0°。
- 第一个
五、注意事项
- 电源供应:舵机在转动时需要较大的电流,特别是在启动和负载较大的情况下。如果直接使用 Arduino 的 5V 引脚为舵机供电,可能会导致 Arduino 电源不足,影响其正常工作。可以使用外部电源为舵机供电,但要注意将外部电源的地与 Arduino 的地连接在一起,以保证信号的一致性。
- 角度范围:不同型号的舵机转动角度范围可能有所不同,大多数舵机是 0° - 180°,但也有一些舵机可以达到 270° 甚至连续旋转。在使用时要根据舵机的实际规格进行设置。
- 负载能力:舵机有一定的负载能力,在使用时要确保负载不超过舵机的额定扭矩,否则可能会导致舵机无法正常转动或损坏。
六、应用拓展
(一)机器人关节控制
在机器人的设计中,舵机可以作为关节的驱动部件,通过控制多个舵机的转动角度,实现机器人的各种动作,如手臂的伸展、弯曲,腿部的行走等。
(二)航模控制
在航模(如飞机、轮船、汽车模型等)中,舵机用于控制模型的舵面(如机翼、尾翼等),实现模型的转向、升降等操作。
(三)自动化设备
在一些自动化设备中,舵机可以用于控制阀门的开关、物料的抓取和放置等操作,实现自动化生产和控制。