Arduino 简明教程
Arduino - Servo Motor
伺服电机是一种具有输出轴的小型设备。通过向伺服发送编码信号,可以将该轴定位到特定的角度位置。只要输入线路上存在编码信号,伺服就会保持轴的角度位置。如果编码信号发生变化,轴的角度位置就会发生变化。在实践中,伺服用于遥控飞机,以定位升降舵和方向舵等控制面。它们还用于遥控汽车、木偶,当然还有机器人。
伺服在机器人技术中非常有用。这些电机小巧,具有内置控制电路,并且相对于其尺寸而言非常强大。标准伺服(如 Futaba S-148)具有 42 oz/inch 的转矩,对于其尺寸来说非常强劲。它还根据机械负载绘制功率。因此,负载较轻的伺服不会消耗太多能量。
伺服电机的内部结构如下图所示。可以看到控制电路、电机、一组齿轮和外壳。还可以看到连接到外部世界的三根电线。一根用于电源(+5 伏)、地线,并且白线是控制线。
Working of a Servo Motor
伺服电机具有一些控制电路和一个电位器(可变电阻器,又称电位器),连接到输出轴上。在上面的图片中,可以在电路板的右侧看到电位器。这个锅允许控制电路监控伺服电机的当前角度。
如果轴处于正确的角度,那么电机就会关闭。如果电路发现角度不正确,它会转动电机直到它达到所需的角度。伺服的输出轴能够移动大约 180 度。通常,它在 210 度范围内某处,但它会根据制造商而有所不同。通常的伺服用于控制 0 到 180 度的角运动。由于内置在主输出齿轮上的机械停止,它在机械上不能转得更远。
施加于电机的功率与它需要行进的距离成正比。因此,如果轴需要转动较大的距离,电机将以全速运转。如果它仅需转动较小的距离,电机将以较慢的速度运转。这被称为 proportional control 。
How Do You Communicate the Angle at Which the Servo Should Turn?
控制线用于传达角度。角度由施加于控制线的脉冲的持续时间决定。这被称为 Pulse Coded Modulation 。伺服器期望每隔20毫秒(0.02 秒)看到一个脉冲。脉冲的长度将决定电机转动多远。例如,1.5毫秒的脉冲将使电机转动到90度位置(通常称为中立位置)。如果脉冲短于1.5毫秒,则电机会将轴转动得更接近0度。如果脉冲长于1.5毫秒,则轴会转动得更接近180度。
Arduino Code
/* 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);
}
Code to Note
伺服电机具有三个端子 - 电源、接地和信号。电源线通常为红色,应连接到Arduino上的5V引脚。接地线通常为黑色或棕色,应连接到ULN2003 IC的一个端子(10 -16)。为保护您的Arduino板免受损坏,您将需要一些驱动器IC来完成此任务。在这里,我们使用了ULN2003 IC 来驱动伺服电机。信号线通常为黄色或橙色,应连接到Arduino引脚号9。
Connecting the Potentiometer
分压器/电位分压器是一种串联电路中的电阻器,它将输出电压调整为施加的输入电压的特定比率。以下是电路图 −
V_{out} = (V_{in} \times R_{2})/ (R_{1} + R_{2})
Vout是输出电位,它取决于串联中的施加输入电压(Vin)和电阻器(R1和R2)。这意味着流过R1的电流也将流过R2而不被分流。在上面的等式中,随着R2值的改变,Vout会根据输入电压Vin相应地调整。
通常,电位器是一种电位分压器,它可以根据可变电阻的值来调整电路的输出电压,该值使用旋钮进行调整。它有三个引脚:GND、信号和+5V,如下所示 −