Arduino - 伺服电机

伺服电机是一种带有输出轴的小型设备。通过向伺服电机发送编码信号,可以将此轴定位到特定的角度位置。只要输入线上存在编码信号,伺服电机就会保持轴的角度位置。如果编码信号发生变化,轴的角度位置也会发生变化。实际上,伺服电机用于无线电遥控飞机,以定位升降舵和方向舵等控制面。它们还用于无线电遥控汽车、木偶,当然还有机器人。

伺服电机

伺服电机在机器人技术中非常有用。电机体积小,具有内置控制电路,并且相对于其尺寸而言非常强大。标准伺服电机(例如 Futaba S-148)具有 42 盎司/英寸的扭矩,相对于其尺寸而言非常强大。它还会根据机械负载来消耗功率。因此,轻负载伺服器不会消耗太多能量。

下图显示了伺服电机的内部结构。您可以看到控制电路、电机、一组齿轮和外壳。您还可以看到连接到外界的 3 根电线。一根用于电源(+5 伏),一根用于接地,白线是控制线。

伺服电机控制电路

伺服电机的工作原理

伺服电机有一些控制电路和一个连接到输出轴的电位器(可变电阻器,又名电位器)。在上图中,可以在电路板的右侧看到电位器。该电位器允许控制电路监控伺服电机的当前角度。

如果轴的角度正确,则电机关闭。如果电路发现角度不正确,它将转动电机,直到达到所需角度。伺服的输出轴能够转动大约 180 度。通常,它在 210 度范围内,但是,这取决于制造商。普通伺服用于控制 0 到 180 度的角运动。由于主输出齿轮上装有机械挡块,因此它在机械上无法转动得更远。

施加到电机的功率与其需要移动的距离成正比。因此,如果轴需要转动较大的距离,电机将全速运转。如果只需要转动少量,电机将以较慢的速度运转。这称为比例控制

如何传达伺服器应转动的角度?

控制线用于传达角度。角度由施加到控制线上的脉冲持续时间决定。这称为脉冲编码调制。伺服器预计每 20 毫秒(0.02 秒)会看到一个脉冲。脉冲的长度将决定电机转动的距离。例如,1.5 毫秒的脉冲将使电机转到 90 度位置(通常称为中性位置)。如果脉冲短于 1.5 毫秒,则电机将使轴更接近 0 度。如果脉冲时间超过 1.5 毫秒,轴的转动角度接近 180 度。

Angle Turn

所需组件

您将需要以下组件 −

  • 1 × Arduino UNO 板
  • 1 × 伺服电机
  • 1 × ULN2003 驱动 IC
  • 1 × 10 KΩ 电阻器

步骤

按照电路图进行连接,如下图所示。

伺服电机连接

草图

在您的计算机上打开 Arduino IDE 软件。使用 Arduino 语言编码将控制您的电路。单击新建打开一个新的草图文件。

草图

Arduino 代码

/* 使用电位器(可变电阻)控制伺服位置 */

#include <Servo.h>
Servo myservo; // 创建伺服对象来控制伺服
int potpin = 0; // 用于连接电位计的模拟引脚
int val; // 用于从模拟引脚读取值的变量

void setup() {
    myservo.attach(9); // 将引脚 9 上的伺服连接到伺服对象
}

void loop() {
    val = analogRead(potpin);
    // 读取电位计的值(值介于 0 和 1023 之间)
    val = map(val, 0, 1023, 0, 180);
    // 缩放以与伺服一起使用(值介于 0 和 180 之间)
    myservo.write(val); // 根据缩放值设置伺服位置
    delay(15);
}

需要注意的代码

伺服电机有三个端子 - 电源、接地和信号。电源线通常为红色,应连接到 Arduino 上的 5V 引脚。接地线通常为黑色或棕色,应连接到 ULN2003 IC (10 -16) 的一个端子。为了保护您的 Arduino 板免受损坏,您需要一些驱动器 IC 来实现这一点。这里我们使用 ULN2003 IC 来驱动伺服电机。信号引脚通常为黄色或橙色,应连接到 Arduino 引脚编号 9。

连接电位器

分压器/分压器是串联电路中的电阻器,可将输出电压缩放为所施加输入电压的特定比率。以下是电路图 −

连接电位器

$$V_{out} = (V_{in} imes R_{2})/ (R_{1} + R_{2})$$

Vout 是输出电位,取决于施加的输入电压 (Vin) 和串联电阻 (R1 和 R2)。这意味着流过 R1 的电流也将流过 R2,而无需分流。在上面的等式中,随着 R2 值的变化,Vout 会根据输入电压 Vin 相应地缩放。

通常,电位器是一种分压器,它可以根据可变电阻的值缩放电路的输出电压,该值使用旋钮缩放。它有三个引脚:GND、信号和 +5V,如下图所示 −

带说明的电位器

结果

通过改变电位器的 NOP 位置,伺服电机将改变其角度。