Arduino学习——舵机控制

舵机介绍

  • 结构控制
    舵机实际上是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。
  • 工作原理
    舵机内部有一个基准电路,产生周期为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的文章 他的文章做系统学习值得推荐 文章

猜你喜欢

转载自blog.csdn.net/Systemmax20/article/details/115253171