Arduino - 伺服电机

伺服电机是一种带有输出轴的小型设备。通过向伺服机构发送编码信号,可以将该轴定位到特定的角度位置。只要编码信号存在于输入线上,伺服就会保持轴的角位置。如果编码信号改变,则轴的角位置改变。伺服系统用于无线电控制的航模电机中,也还可以用于无线电遥控车,木偶,当然还有机器人。

伺服电机

伺服系统在机器人技术中非常有用。电机体积小,内置控制电路,尺寸极其强大。诸如 Futaba S-148 之类的标准伺服系统具有 42 盎司/英寸的扭矩,其尺寸很大。它还消耗与机械负载成比例的功率。因此,轻载伺服系统不会消耗太多能量。

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

伺服电机控制电路

伺服电机的工作

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

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

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

如何发送伺服转动的角度?

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

角度转弯

需要的组件

你将需要以下组件 -

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

程序

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

伺服电机连接

草图

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

草图

Arduino 代码

/* Controlling a servo position using a potentiometer (variable resistor) */

#include <Servo.h>
   Servo myservo; // create servo object to control a servo
   int potpin = 0; // analog pin used to connect the potentiometer
   int val; // variable to read the value from the analog pin

void setup() {
   myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop() {
   val = analogRead(potpin);
   // reads the value of the potentiometer (value between 0 and 1023)
   val = map(val, 0, 1023, 0, 180);
   // scale it to use it with the servo (value between 0 and 180)
   myservo.write(val); // sets the servo position according to the scaled value
   delay(15);
}

代码注意

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

连接电位器

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

连接电位器

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

Vout 是输出电位,取决于串联的输入电压(V in)和电阻(R 1 和 R 2)。这意味着流过 R 1 的电流也将流过 R 2 而不被分开。在上面的等式中,随着 R 2 的值改变,V out 相对于输入电压 V in 相应地缩放。

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

电位器描述

结果

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