arduino如何控制舵机及详细步骤

电子说

1.2w人已加入

描述

  舵机控制方法

  舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。脉冲的参数有最小值,最大值,和频率。一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。如下图:

舵机

  角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制。脉冲的长短决定舵机转动多大角度。例如:1.5毫秒脉冲会到转动到中间位置(对于180°舵机来说,就是90°位置)。当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。

  当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。如下图:

舵机

  Arduino控制舵机的两种方法

  1、第一种是通过Arduino的普通数字传感器接口产生占空比不同的方波,模拟产生PWM信号进行舵机定位。

  2、第二种是直接利用Arduino自带的Servo函数进行舵机的控制,这种控制方法的优点在于程序编写,缺点是只能控制2路舵机,因为Arduino自带函数只能利用数字9、10接口。Arduino的驱动能力有限,所以当需要控制1个以上的舵机时需要外接电源。

  arduino如何控制舵机及详细步骤

  工具/原料:

  Arduino 实验套件(Arduino UNO控制器,面包板,跳线,USB数据线)

  80度旋转舵机 * 1 个

  双头等长标准 2.54mm 排针 * 若干

  方法/步骤:

  1、准备实验需要用到的硬件,如图所示:

舵机

  2、如下图所示进行硬件的连接,此步我们先不连接任何其他元件,只需将Arduino UNO控制器连接到电脑

舵机

  3、如下图所示,我们先不使用电位计控制,只是使用程序来控制一个舵机,将下列程序复制到Arduino IDE中或者可以直接在最后一步中提供的百度网盘地址中直接下载代码和 Fritzing 电路图

  #include 《Servo.h》

  Servo myservo;

  int pos = 0;

  void setup()

  {

  myservo.attach(9);

  }

  void loop()

  {

  for(pos = 0; pos 《= 180; pos += 1)

  {

  myservo.write(pos);

  delay(15);

  }

  for(pos = 180; pos》=0; pos-=1)

  {

  myservo.write(pos);

  delay(15);

  }

  }

舵机

  4、如图所示,选择正确的板卡型号和端口,将程序上传到控制器中。

舵机

  5、如图所示,程序上传无误的情况下 Arduino IDE 软件会显示如下结果,在上传过程中,Arduino 控制器板载的 TX RX 灯会频闪

舵机

  6、如下图所示,使用舵盘连接螺丝,连接舵盘和舵机

舵机

  7、按照下图中的电路,进行实验硬件的连接

  注意:舵机线一种是:红、黑、黄(红色连接 Vcc、黑色连接 GND、黄色连接信号 S)

  还有较为常见的一种是:棕、红、橙(棕色连接 GND、红色连接 Vcc、橙色连接信号 S)

  8、实验效果如图所示,舵机会自动从 -90 度转动到 90 度,再从 90 度转动到 -90 度。注意当 Arduino UNO 控制器连接到电脑供电时,舵机会自动归回中间位置

  9、代码回顾:

  (1)#include《Servo.h》 载入 Servo.h 库文件

  (2)Servo myservo; 建立一个舵机对象,名称为 myservo

  (3)myservo.attach(9); 将引脚 9 上的舵机与舵机对象连接起来

  attach 函数连接一个舵机对象到指定的引脚上,attch 函数可以有 1 或 3 个参数。如果使用 3 个函数,第一个参数表示引脚,第二个参数表示最小角度(0度)的脉冲宽度,单位是微秒(默认是 544),第三个参数表示最大角度(180度)的脉冲宽度,单位是微秒(默认是2400)。通常情况下,只需要设置舵机引脚,忽略第二和第三个参数。

  (4)myservo.write(pos); 写角度到舵机

  代码位置如下图所示:

舵机

  10、硬件回顾:

  舵机:包括一个直流点击,一套装在电机和输出轴之间的齿轮系统,一个位置传感结构和一个控制电路。位置传感机构检测舵机的位置并提供给控制系统,控制系统使用电机控制舵机臂运动到指定位置。有很多不同尺寸、速度、精度的舵机,功率越大、精度越高的舵机相对价位也比较高。使用汽车、机器人、飞机时,舵机是很常用的一种方式。通过PWM信号实现舵机位置的控制,一般来说脉宽在 500 微秒到 2500 微秒之间,舵机从 -90 到 90 度。下图所示为舵机的内部结构图

舵机

  11、下图分别为(1)舵机控制原理(2)舵机扭矩计算方法(3)输入脉冲宽度与舵机角度对应关系图,供大家参考

舵机

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
栀寒九暖 2019-08-06
0 回复 举报
arduino自带的库 收起回复
王昵称 2019-06-06
0 回复 举报
Servo.h这个在哪里下载??? 1条回复 收起回复
等你上课 0
直接更新一下库就有了 

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分