Arduino电机控制02.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语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。

Sketch

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。

连接电位器

分压器是串联电路中的电阻器,其将输出电压缩放到施加的输入电压的特定比例。下面是电路图:

连接电位计
公式

Vout是输出电位,取决于施加的输入电压(Vin)和电阻(R1和R2)。这意味着流过R1的电流也将流过R2而不被分流。在上述等式中,随着R的值改变,Vout相对于输入电压Vin而缩放。

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

分压器

结果

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

发布者:suiyublg,转转请注明出处:https://huibian.net/1062-2/

(0)
suiyublg的头像suiyublg
上一篇 2017年4月26日 17:11
下一篇 2017年4月28日 17:14

相关推荐

  • Arduino项目02.Arduino 渐变LED

    这个例子演示了使用analogWrite()函数来渐变LED的功能。AnalogWrite使用脉冲宽度调制(PWM),以开和关之间的不同比率非常快速地打开和关闭数字引脚,以产生渐变效应。 必需的组件 你将需要以下组件: 程序 按照电路图连接面包板上的组件,如下图所示。 注意 − 要了解LED的极性,请仔细查看。两个腿中较短的,朝向灯泡的平坦边缘表示…

    2017年4月13日
    46300
  • Arduino进阶04.Arduino 中断

    中断(interrupt)停止Arduino的当前工作,以便可以完成一些其他工作。 假设你坐在家里和别人聊天。突然电话响了。你停止聊天,拿起电话与来电者通话。当你完成电话交谈后,你回去和电话响之前的那个人聊天。 同样,你可以把主程序想象成是与某人聊天,电话铃声使你停止聊天。中断服务程序是在电话上通话的过程。当通话结束后,你回到你聊天的主程序。这个例子准确地解…

    2017年4月8日
    55301
  • Arduino教程09.Arduino 循环

    编程语言提供了各种控制结构,允许更复杂的执行路径。 循环语句允许我们多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式: C语言提供以下类型的循环来处理循环需求。 序号 循环及描述 1 while循环while循环将会连续、无限循环,直到括号()内的表达式变为false。必须用一些东西改变被测试的变量,否则while循环永远不会退出。 2 …

    2017年3月25日
    48203
  • Arduino项目06.Arduino 键盘消息

    在此示例中,当按下按钮时,文本字符串作为键盘输入发送到计算机。字符串报告按钮被按下的次数。一旦你完成了Leonardo版的程序化和接线,打开你最喜欢的文本编辑器来查看结果。 警告 – 当你使用 Keyboard.print()命令时,Arduino将接管你的计算机键盘。为确保在使用此功能运行草图时不会失去对计算机的控制,请在调…

    2017年4月17日
    56400
  • Arduino教程15.Arduino 算术运算符

    假设变量A为10,变量B为20,则: 运算符名称 运算符简写 描述 例子 赋值运算符 = 将等号右侧的值存储在等号左边的变量中。 A = B 加号 + 两个操作两个操作数相加 A + B将得出30 减号 – 从第一个操作数中减去第二个操作数 A – B将得出-10 乘号 * 将两个操作数相乘 A * B将得出200 除号 / 用分母除…

    2017年3月23日
    44500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
欢迎大家来到大雄学编程!