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 × 10 KΩ 电阻

程序

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

伺服电机连接

草图

在计算机上打开 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_{输出} = (V_{输入} \乘 R_{2})/ (R_{1} + R_{2})$$

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

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

电位器及说明

结果

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