SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Chinese)

This Tutorial is Retired!

This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.

Pages
Contributors: D___Run___
Favorited Favorite 1

实验 10:驱动伺服马达

简介

本实验将向您简介伺服马达,伺服马达是一种智能马达,您可以指示它旋转到特定角度位置。您将对它进行编程,以旋转到一系列位置,然后在其整个运动范围内进行扫描,随后重复操作。

所需部件

您需要以下部件:

  • 1x 实验电路板
  • 1x Arduino 101 或 Genuino 101 开发板
  • 1x 伺服马达
  • 3x 跳线

没有 SIK?

如果您要执行本实验,但又没有 SIK,那么我们建议您使用这些部件:

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$5.50
48
Servo - Generic (Sub-Micro Size)

Servo - Generic (Sub-Micro Size)

ROB-09065
$9.95
13
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$2.10
2

您还需要一个 Arduino 101 Genuino 101 开发板。

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

推荐阅读

继续进行本实验之前,我们建议您熟悉以下教程中的概念:

伺服马达简介

替换文本

与持续旋转的大多数马达的操作不同,伺服马达可以旋转到特定角度并保持,直到指示它旋转到其他角度。您可以通过向伺服马达发送 PWM 脉冲串来控制其角度;PWM 信号会映射到介于 0 至 180 度的特定角度。

伺服马达内部有一个齿轮箱,它连接到一个用于驱动轴的马达。还有一个电位计,它提供有关伺服马达旋转位置的反馈,该反馈随后会与传入的 PWM 信号进行比较。伺服马达会相应地进行调整以匹配两个信号。

在本实验中,伺服马达通过红色导线获得 5V 电源,通过黑色导线接地,而白色导线连接到一个可以对其使用 PWM 的数字 GPIO 针脚(101 开发板上的 9、6、5、3)。

硬件接线

是否准备好开始对每个部件进行接线?请查看下面的接线图以了解如何连接每个部件。

请特别注意组件用于指示如何在实验电路板上放置它的标记。极化组件只能按一个方向连接到电路。

将 3 根跳线连接到伺服马达的 3 针外接头上。这样可更轻松地将实验电路板与伺服马达相连。

实验的接线图

替换文本

难以看清电路?单击接线图可放大查看。

打开草图

在计算机上打开 Arduino IDE 软件。采用 Arduino 语言进行编码可控制电路。通过访问您先前下载并置于“示例”文件夹中的“101 SIK 指南代码”,来打开用于电路 10 的代码。

要打开该代码,请转到:文件 > 示例 > 101 SIK 指南代码 > Circuit_10

还可以将以下代码复制并粘贴到 Arduino IDE 中。点击“上传”,然后查看发生的情况!

language:cpp
/*
SparkFun Inventor's Kit
Example sketch 10

SINGLE SERVO

  Sweep a servo back and forth through its full range of motion.

This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.
*/

//include the servo library
#include   

//create a servo object called servo1
Servo servo1;  

void setup()
{
  //attach servo1 to pin 9 on the Arduino 101
  servo1.attach(9);
}

void loop()
{
  //create a local variable to store the servo's position.
  int position;

  // To control a servo, you give it the angle you'd like it
  // to turn to. Servos cannot turn a full 360 degrees, but you
  // can tell it to move anywhere between 0 and 180 degrees.

  // Change position at full speed:

  // Tell servo to go to 90 degrees
  servo1.write(90);   

  // Pause to get it time to move
  delay(1000);        

  // Tell servo to go to 180 degrees
  servo1.write(180);   

  // Pause to get it time to move
  delay(1000);         

  // Tell servo to go to 0 degrees
  servo1.write(0);     

  // Pause to get it time to move
  delay(1000);         

  // Tell servo to go to 180 degrees, stepping by two degrees
  for(position = 0; position < 180; position += 2)
  {
  // Move to next position
    servo1.write(position);  
     // Short pause to allow it to move
    delay(20);              
  }

  // Tell servo to go to 0 degrees, stepping by one degree
  for(position = 180; position >= 0; position -= 1)
  {
    // Move to next position
    servo1.write(position);
    // Short pause to allow it to move
    delay(20);               
  }
}

要注意的代码

#include

#include 是特殊的“预处理器”命令,它在草图中插入库(或任何其他文件)。您可以自己键入此命令,也可以从“草图/导入库”菜单中选择已安装的库。

Servo servo1;

使用某个库时,您会创建该库的对象并进行命名。此对象是伺服马达库对象,会命名为 servo1。如果您使用多个伺服马达,则会采用这种方式命名每个伺服马达。

servo1.attach(9);

伺服马达库会添加使您可以控制伺服马达的新命令。要准备好 Arduino 以控制伺服马达,必须首先为每个伺服马达创建一个伺服马达“对象”(我们在此处将它命名为“servo1”),然后将它“连接”到一个数字针脚(我们在此处使用针脚 9)。可将此视为伺服马达调用 pinMode() 函数的方式。

servo1.write(180);

此工具包中的伺服马达并不会一直旋转,而是可以命令它们移动到特定位置。我们使用伺服马达库的 write() 命令将伺服马达移动到指定度数(0 至 180)。请记住,伺服马达需要时间进行移动,因此请在必要时向它提供短暂的 delay()

应看到的情况

您应看到伺服马达按不同速度移动到各位置。如果马达未移动,请检查连接并确保已验证并上传了代码,或查看“故障诊断”部分。

替换文本

故障诊断

伺服马达未旋转

即使采用了彩色导线,仍然非常容易将伺服马达插反。这里可能就是这种情况。

仍未运行

我们偶尔犯过以下错误:仅仅只是忘记将电源(红色和黑色导线)连接到 5 伏和接地 (GND)。

断续运行

如果伺服马达开始移动,然后抽动,并且 101 开发板上有一个指示灯闪烁,则可能是供电不够。使用墙上适配器(而不是 USB)应该可解决此问题。