一板网电子技术论坛

风筝
发表于: 2020-10-19 21:30:30 | 显示全部楼层

大家好,今天,我们将向您展示如何在Arduino开发板上使用伺服电机。


本文非常适合初学者,因为它很容易上手,并且为他们建立有趣的项目(例如通常使用伺服器的机器人)奠定了基础。伺服电机(Servo Motor)是高转矩电机,由于其在机器人和其他一些应用中的通用性,轻松控制其旋转。伺服电机也称为舵机,它带有齿轮输出轴,该齿轮输出轴可以通过电气控制,每次旋转一度。为了控制起见,与普通的直流电动机不同,伺服电机通常在两个电源引脚(VCC和GND)的旁边有一个引脚,即信号引脚。信号引脚用于控制伺服电机,将其轴旋转至任何所需角度。

SG90-micro-9g-servo-for-Rc-Helicopter.jpg


在本篇文章中,我们将使用非常流行的SG90伺服电机,我们的目标是将伺服电机从一个角度旋转到另一个角度。伺服电机的电流要求很高,因此当在Arduino上使用多个伺服电机时,需要将其电源连接到外部电源,因为Arduino可能无法提供伺服电机所需的电流,这一点很重要。由于在本文中我们将仅使用一个伺服电机,因此可以通过Arduino为它供电。


所需的组件

●    SG90伺服电机

●    Arduino Uno开发板

●    连接导线

●    面包板


原理图

该项目的原理图非常简单,因为我们只需将伺服电机连接到Arduino,伺服电机通常具有三个引脚,其中包括VCC、GND和Signal引脚。Signal引脚是用于将控制信号从微控制器馈送到伺服电机,以使伺服电机旋转到特定角度。如下图所示,将伺服器连接至Arduino。

servo_bb-schematics.png


Signal引脚连接到Arduino的数字引脚8,因为它是PWM引脚。伺服方向以PWM脉冲方式从微控制器发送到伺服电机。完成所有连接后,我们现在就可以编写项目代码了。


代码

本篇文章的代码非常容易,这要归功于Arduino团队开发的非常全面而简洁的Serve.h库,该库便于在Arduino项目中使用伺服电机。该库使使用单个命令轻松地将伺服电机旋转到不同的角度。

该库是预先安装在Arduino IDE中的,无需我们下载和安装。首先,我们在代码中包含将要使用的库(在本例中为Serve.h库)。

  1. #include <Servo.h>
复制代码

接下来,我们创建该库的一个对象,以在整个代码中用作控制伺服电机的参考。

  1. Servo servo;
复制代码

完成此操作后,我们开始void setup()函数。首先,将创建的伺服对象附加到微控制器的引脚D8,然后将伺服电机旋转至零度。

  1. void setup() {
  2.   servo.attach(8);
  3.   servo.write(angle);
  4. }
复制代码

完成此操作后,我们就可以按照所需的任何方向移动伺服电机了,我们将在void loop()函数中执行此操作。通过使用Servo.h库,要将伺服电机旋转到所需的角度,我们要做的只是将所需角度作为参数传递给Servo.write()函数。为了证明这一点,使用了一个for循环将伺服电机沿一个方向旋转几个角度,并使用另一个循环将伺服器旋转回其起点。

  1. void loop()
  2. {
  3. // scan from 0 to 180 degrees
  4.   for(angle = 10; angle < 180; angle++)  
  5.   {                                 
  6.     servo.write(angle);               
  7.     delay(15);                  
  8.   }
  9.   // now scan back from 180 to 0 degrees
  10.   for(angle = 180; angle > 10; angle--)   
  11.   {                                
  12.     servo.write(angle);           
  13.     delay(15);      
  14.   }
  15. }
复制代码

以下是本文的完整代码:

  1. #include <Servo.h>

  2. Servo servo;
  3. int angle = 10;

  4. void setup() {
  5.   servo.attach(8);
  6.   servo.write(angle);
  7. }


  8. void loop()
  9. {
  10. // scan from 0 to 180 degrees
  11.   for(angle = 10; angle < 180; angle++)  
  12.   {                                 
  13.     servo.write(angle);               
  14.     delay(15);                  
  15.   }
  16.   // now scan back from 180 to 0 degrees
  17.   for(angle = 180; angle > 10; angle--)   
  18.   {                                
  19.     servo.write(angle);           
  20.     delay(15);      
  21.   }
  22. }
复制代码

效果演示

复制上面的代码,然后上传到Arduino开发板,对伺服电机进行设置,一段时间后,您应该看到伺服电机开始转动。


以上就是本文的所有内容,上面的代码可以通过多种方式扩展,以用于涉及伺服电机的不同项目中,您将使用伺服电机制造出什么很棒的东西? 请随时在本帖下面进行回复分享。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 560 | 回复: 1089



手机版|

GMT+8, 2021-5-13 00:50 , Processed in 0.033704 second(s), 29 queries . Powered by Discuz! X3.4

YiBoard一板网 © 2015-2020 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表