- Arduino教程
- Arduino - 主页
- Arduino - 概述
- Arduino - 板描述
- Arduino - 安装
- Arduino - 程序结构
- Arduino - 数据类型
- Arduino - 变量和常量
- Arduino - 操作员
- Arduino - 控制语句
- Arduino - 循环
- Arduino - 功能
- Arduino - 字符串
- Arduino - 字符串对象
- Arduino - 时间
- Arduino - 数组
- Arduino 函数库
- Arduino - I/O 函数
- Arduino - 高级 I/O 功能
- Arduino - 字符函数
- Arduino - 数学库
- Arduino - 三角函数
- Arduino高级版
- Arduino - 到期与归零
- Arduino - 脉宽调制
- Arduino - 随机数
- Arduino - 中断
- Arduino - 通信
- Arduino - 内部集成电路
- Arduino - 串行外设接口
- Arduino 项目
- Arduino - LED 闪烁
- Arduino - LED 褪色
- Arduino - 读取模拟电压
- Arduino - LED 条形图
- Arduino - 键盘注销
- Arduino - 键盘消息
- Arduino - 鼠标按钮控制
- Arduino - 键盘串口
- Arduino 传感器
- Arduino - 湿度传感器
- Arduino - 温度传感器
- Arduino - 水检测器/传感器
- Arduino - PIR 传感器
- Arduino - 超声波传感器
- Arduino - 连接开关
- 电机控制
- Arduino - 直流电机
- Arduino - 伺服电机
- Arduino - 步进电机
- Arduino 和声音
- Arduino - 音调库
- Arduino - 无线通信
- Arduino - 网络通信
- Arduino 有用资源
- Arduino - 快速指南
- Arduino - 有用的资源
- Arduino - 讨论
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位置,伺服电机将改变其角度。