伺服电机是一种有输出轴的小型设备。通过向伺服发送编码信号,可以将该轴定位到特定的角度位置。只要编码信号存在于输入线上,伺服将保持轴的角位置。如果编码信号改变,则轴的角位置改变。实际上,伺服用于无线电控制的飞机中来定位控制面,如升降舵和方向舵。它们还用于无线电控制的汽车,木偶,当然还有机器人。
伺服在机器人中非常有用。电机体积小,内置控制电路,相对于它们尺寸来说非常强大。标准伺服如Futaba S-148具有42盎司/英寸的扭矩,这对于其尺寸来说是坚固的。它还吸取与机械负载成比例的功率。因此,轻负载伺服不会消耗太多能量。
伺服电机的内胆如下图所示。你可以看到控制电路,电机,一组齿轮和外壳。你还可以看到连接到外部的3根电线。一个是接电源(+5伏),一个接地,而白线是控制线。
伺服电机有一些控制电路和一个连接到输出轴上的电位器(一个可变电阻,也称为电位器)。在上图中,电位器可以在电路板的右侧看到。该电位器允许控制电路监视伺服电机的当前角度。
如果轴处于正确的角度,则电机关闭。如果电路发现角度不正确,则会转动电机直到处于所需的角度。伺服的输出轴能够在180度左右的地方移动。通常情况下,它是在210度范围内的某个地方,然而,这取决于制造商。正常伺服用于控制0至180度的角运动。由于主输出齿轮上的机械止动装置,机械上它无法转动更远。
施加到电机上的功率与其需要行进的距离成比例。因此,如果轴需要转动较大的距离,电机将以全速运转。如果只需要少量转动,电机将以较低的速度运转。这称为比例控制。
控制线用于传达角度。该角度由施加到控制线的脉冲持续时间确定。这称为脉冲编码调制。伺服期望每20毫秒(0.02秒)看到一个脉冲。脉冲的长度将决定电机转动的距离。例如,1.5毫秒脉冲将使电机转到90度位置(通常称为中性位置)。如果脉冲短于1.5毫秒,则电机将轴转到更接近0度。如果脉冲长于1.5毫秒,则轴转接近180度。
你将需要以下组件:
按照电路图进行连接,如下图所示。
在计算机上打开Arduino IDE软件。使用Arduino语言进行编码控制你的电路。通过单击“New”打开一个新的草图文件。
#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位置,伺服电机将改变其角度。
webContents是一个事件发出者.它负责渲染并控制网页,也是BrowserWindow对象的属性.一个使用webContents的例子:const BrowserWin...
Settings修改 DevTools 中的设置点击设置齿轮 ,打开 General Settings 面板进行修改。或者,也可以使用快捷键 ? 打开 Setting ...
在RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件只能采取源码包的方式安装。早期在Linux系统中安装程序是一件非...
Linux是一个多用户、多任务的操作系统,具有很好的稳定性与安全性,在幕后保障Linux系统安全的则是一系列复杂的配置工作。本章将...
使用HBuilder边改边看试试查看编程效果win系统按下Ctrl+P(MacOS为Command+P)进入边改边看模式,在此模式下,如果当前打开的是HTML...
介绍树控件显示排列为可扩展树的分层数据。类声明以下是 mx.controls.Tree 类的声明:public class Treeextends Listimplements I...
StatefulSetsStatefulSet是用来管理有状态应用的工作负载API对象。StatefulSet用来管理某Pod集合的部署和扩缩,并为这些Pod提供...
Pod与Service的DNSKubernetes为服务和Pods创建DNS记录。你可以使用一致的DNS名称而非IP地址来访问服务。介绍KubernetesDNS在集群...
对象名称和IDs集群中的每一个对象都有一个名称来标识在同类资源中的唯一性。每个Kubernetes对象也有一个UID来标识在整个集群中的...
服务将运行在一组Pods上的应用程序公开为网络服务的抽象方法。使用Kubernetes,你无需修改应用程序即可使用不熟悉的服务发现机制...