舵机介绍
- 结构控制
舵机实际上是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。 - 工作原理
舵机内部有一个基准电路,产生周期为20ms、宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经过电路板IC方向判断,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到位。
舵机转动的角度是通过调节PWM「脉冲宽度调制」信号的占空比来实现的。标准的PWM信号的周期固定为20ms,理论上脉宽分布应该在1ms到2ms之间,实际上可由0.5ms到2.5ms之间,脉宽与转角0°—180°相对应。不同厂家不同型号的舵机也会有所差异。
- 外部接线
舵机一般都外接三根线,分别用棕、红、橙三种颜色进行区分,由于品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线
由于开发板的供电能力有限,要驱动多个舵机,需要连接外部电源
连接电路
编写程序
需要的文件库
#include<Servo.h>
使用Servo定义对象进行
,例如:
Servo 对象名;//定义控制对象
在setup函数中使用attach进行连接针脚
对象.attach(针脚值);
在loop函数内使用write对对象进行角度的控制
对象.write(角度值);
对两个舵机进行控制的实例代码
#include <Servo.h>
Servo up_se; // 定义上角度对象来控制
Servo do_se; // 定义下角度对象来控制
int pos = 0; // 角度存储变量
void setup() {
up_se.attach(9); // 控制线连接数字9
do_se.attach(8); // 控制线连接数字8
}
void loop() {
pos++;
up_se.write(pos); // 舵机角度写入
do_se.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
if(pos == 180){
pos = 0;
}
}
一个舵机的实例代码:
#include <Servo.h>
Servo myservo; // 定义Servo对象来控制
int pos = 0; // 角度存储变量
void setup() {
myservo.attach(9); // 控制线连接数字9
}
void loop() {
for (pos = 0; pos <= 180; pos ++) {
// 0°到180°
// in steps of 1 degree
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
for (pos = 180; pos >= 0; pos --) {
// 从180°到0°
myservo.write(pos); // 舵机角度写入
delay(5); // 等待转动到指定角度
}
}
实例图片:
注 本文章参考TonyIOT的文章 他的文章做系统学习值得推荐 文章