0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino控制伺服电机

454398 来源:网络整理 作者:网络整理 2019-11-27 15:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

在本课程中,您将学习如何使用Arduino控制伺服电机

首先,您将使伺服器回扫并

如何使用Arduino控制伺服电机

零件

要构建本课中描述的项目,您将需要以下零件。

零件 数量

伺服电机 1

10kΩ可变电阻器(pot)

1

半尺寸面包板

1

Arduino Uno R3

1

跳线包

1

100 µF电容器

可选

“扫描”的面包板布局

对于本实验,唯一与Arduino连接的是伺服电机。

伺服电机有三根引线。引线的颜色在伺服电机之间有所不同,但是红色引线始终为5V,而GND将为黑色或棕色。另一个引线是控制引线,通常为橙色或黄色。该控制导线连接到数字引脚9。

伺服器方便地端接到一个插座中,我们可以在其中插入跳线,将其链接到面包板,然后再连接到Arduino。

如果伺服器不正常

您的伺服器可能行为异常,您可能会发现只有在将Arduino插入某些USB端口时才会发生这种情况。这是因为伺服器消耗了大量功率,尤其是在电动机启动时,这种突然的高需求足以降低Arduino板上的电压,从而使其自身复位。

如果这发生这种情况,那么通常可以通过在面包板上的GND和5V之间添加一个高值电容器(470uF或更大)来治愈它。

电容器充当电动机的蓄电库,因此在启动时,它会从电动机电容器和Arduino电源

电容器的较长引线为正极引线,应将其连接到5V。负极引线也经常标有“-”符号。

Arduino的‘Sweep’代码

将以下草图加载到Arduino上,您应该发现舵机立即开始首先向一个方向旋转,然后又向另一个方向旋转

该草图基于标准的“扫描”草图,您可以在Arduino示例中的“ servo”文件夹下找到该草图。如果愿意,可以运行该草图。

下载:文件

复制代码

/*

Adafruit Arduino - Lesson 14. Sweep

*/

#include

int servoPin = 9;

Servo servo;

int angle = 0; // servo position in degrees

void setup()

{

servo.attach(servoPin);

}

void loop()

{

// scan from 0 to 180 degrees

for(angle = 0; angle 《 180; angle++)

{

servo.write(angle);

delay(15);

}

// now scan back from 180 to 0 degrees

for(angle = 180; angle 》 0; angle--)

{

servo.write(angle);

delay(15);

}

} /*

Adafruit Arduino - Lesson 14. Sweep

*/

#include

int servoPin = 9;

Servo servo;

int angle = 0; // servo position in degrees

void setup()

{

servo.attach(servoPin);

}

void loop()

{

// scan from 0 to 180 degrees

for(angle = 0; angle 《 180; angle++)

{

servo.write(angle);

delay(15);

}

// now scan back from 180 to 0 degrees

for(angle = 180; angle 》 0; angle--)

{

servo.write(angle);

delay(15);

}

}

伺服电机由一系列脉冲控制,为了使其易于使用,已创建了一个Arduino库,以便您可以指示伺服电机转至特定角度。

使用伺服的命令类似于内置的Arduino命令,但是由于您始终不会在项目中使用伺服,因此将它们保存在一个称为库的东西中。如果要使用servo库中的命令,则需要通过以下命令告诉Arduino IDE您正在使用该库:

下载:文件

复制代码

#include #include

变量“ servoPin”来定义用于控制伺服器的引脚。

此行:

下载:文件

复制代码

Servo servo; Servo servo;

定义了一个新的变量“ servo”输入“伺服”。该库为我们提供了一种新类型,例如表示伺服的“ int”或“ float”。您实际上可以通过这种方式最多定义八个伺服器,因此,如果我们有两个伺服器,则可以编写如下内容:

下载:文件

复制代码

Servo servo1;

Servo servo2; Servo servo1;

Servo servo2;

在“设置”功能中,我们需要使用以下命令将“ servo”变量链接到将控制伺服器的引脚:

下载:file

复制代码

servo.attach(servoPin); servo.attach(servoPin);

变量‘angle’用于包含当前伺服角度度。在“循环”功能中,我们使用两个“ for”循环首先在一个方向上增加角度,然后在达到180度时又在另一个方向上增加角度。

命令:

下载:文件

复制代码

servo.write(angle); servo.write(angle);

告诉伺服器将其位置更新为参数提供的角度。

“旋钮”的面包板布局

下一步是添加一个锅,以便我们可以通过旋转旋钮来控制伺服器的位置。

您只需要在Arduino上将锅和导线从其滑块添加到A0。

Arduino的“旋钮”代码

使伺服跟随旋钮位置的代码比使其扫掠更简单。

下载:文件

复制代码

/*

Adafruit Arduino - Lesson 14. Knob

*/

#include

int potPin = 0;

int servoPin = 9;

Servo servo;

void setup()

{

servo.attach(servoPin);

}

void loop()

{

int reading = analogRead(potPin); // 0 to 1023

int angle = reading / 6; // 0 to 180-ish

servo.write(angle);

} /*

Adafruit Arduino - Lesson 14. Knob

*/

#include

int potPin = 0;

int servoPin = 9;

Servo servo;

void setup()

{

servo.attach(servoPin);

}

void loop()

{

int reading = analogRead(potPin); // 0 to 1023

int angle = reading / 6; // 0 to 180-ish

servo.write(angle);

}

现在有一个名为“ potPin”的第二个变量。

要设置伺服器的位置,我们从A0读取一个模拟读数。这样我们得到的值在0到1023之间。由于伺服器只能旋转180度,因此我们需要按比例缩小该值。将其除以6将得到一个介于0到170之间的角度,就可以了。

伺服电机

伺服电机的位置由脉冲长度设置。伺服器预计大约每20毫秒接收一次脉冲。如果该脉冲在1毫秒内为高电平,则伺服角度将为零;如果为1.5毫秒,则它将达到其中心位置;如果为2毫秒,则将处于180度。

伺服器的端点可能会有所不同许多伺服系统只能转大约170度您还可以购买可以连续旋转360度的“连续”伺服器。

在伺服器内部

下面的简短视频向您展示了伺服器内部正在发生的情况。

但是请注意,如果像这样拆除伺服器,很有可能不会正确返回。

其他要做的事情

打开“扫描”草图,然后尝试将延迟从15毫秒减少到5毫秒。请注意伺服旋转的速度。

尝试修改“旋钮”草图,以使它不再从旋钮的位置获取伺服角度,而是从串行监视器获取该角度,以便可以从计算机控制伺服。

》提示:要使草图从串行监视器读取度数,可以使用functionSerial.parseInt()。这将从串行监视器中读取一个数字。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 伺服电机
    +关注

    关注

    88

    文章

    2200

    浏览量

    61573
  • Arduino
    +关注

    关注

    190

    文章

    6527

    浏览量

    197463
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    大功率异步电机伺服电机的优缺点

    在工业自动化领域,电机作为核心动力部件,其性能直接决定了设备的运行效率和控制精度。大功率异步电机伺服电机作为两种主流选择,各自展现出鲜明的
    的头像 发表于 03-18 16:47 316次阅读

    PLC怎么控制多台交流伺服电机达到同步工作

    在现代工业自动化控制系统中,多台交流伺服电机的同步控制是实现高精度运动控制的关键技术之一。PLC(可编程逻辑
    的头像 发表于 02-27 17:04 749次阅读
    PLC怎么<b class='flag-5'>控制</b>多台交流<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>达到同步工作

    三菱FX3U PLC控制伺服电机的高速脉冲模式解析

    三菱FX3U做为一款入门级PLC,应用很广泛,其实学习PLC就几点,开关量的输入、输出,就是我们平常所说的IO、伺服(或者步进电机)的控制、Modbus通信、模拟量输入输出,掌握了这些,基本可以做80%的项目了,小编今天主要来和
    的头像 发表于 01-27 15:51 1978次阅读
    三菱FX3U PLC<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的高速脉冲模式解析

    探索用于Arduino的TLE94112ES直流电机控制盾牌

    探索用于Arduino的TLE94112ES直流电机控制盾牌 引言 在电子工程领域,电机控制一直是至关重要的部分。对于
    的头像 发表于 12-18 16:35 496次阅读

    伺服电机增益详解

    伺服电机增益调节是运动控制中的核心环节,直接影响系统的响应速度、稳定性和精度。本文将深入解析增益参数的作用机理、调节方法及典型应用场景,帮助工程师实现伺服系统的最佳性能匹配。 一、增益
    的头像 发表于 12-08 07:42 1700次阅读

    伺服电机控制方式简述

    伺服电机作为自动化控制系统的核心执行元件,其控制方式直接决定了设备的动态响应、定位精度和运行效率。随着工业4.0和智能制造的发展,伺服
    的头像 发表于 12-01 07:37 1077次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的<b class='flag-5'>控制</b>方式简述

    派克Parker防爆伺服电机与普通伺服电机的区别

    Parker提供了多款不同的伺服电机,性能各有不同,针对特定易燃易爆场所使用的防爆伺服电机,与普通通用伺服
    的头像 发表于 11-20 13:36 597次阅读
    派克Parker防爆<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>与普通<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的区别

    伺服电机控制系统的高宽带电流环参数设计

    上回我们介绍了EtherCAT是如何利用SSC产生的sync信号,与电机控制系统完成同步的,如此我们即可保证整个控制系统的同步性能伺服控制
    的头像 发表于 11-17 09:53 7886次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>系统的高宽带电流环参数设计

    伺服电机和步进电机的核心区别

    大家在运动控制的时候是用伺服电机的还是用步进电机做定位控制了?为什么有时候用伺服
    的头像 发表于 10-15 14:32 2007次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>和步进<b class='flag-5'>电机</b>的核心区别

    舵机与伺服电机的区别是什么?

    舵机与伺服电机都属于 可精确控制的驱动装置 ,但二者在定义范围、结构组成、控制方式和应用场景上存在显著差异,并非完全等同(舵机是伺服
    的头像 发表于 10-13 10:21 2292次阅读

    MT6825磁编芯片如何突破伺服电机控制精度瓶颈

    伺服电机作为工业自动化、机器人、数控机床等高端装备的核心执行部件,其控制精度直接影响设备性能。传统光电编码器受限于机械结构易磨损、抗干扰能力弱等问题,难以满足高精度场景需求。而MT6825磁编码器
    的头像 发表于 07-28 17:20 956次阅读
    MT6825磁编芯片如何突破<b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>精度瓶颈

    伺服电机中的回原点方式

    伺服电机的运行需要一个参考点,这个参考点就是原点。原点通常是由光电开关或机械开关来确定的,其位置是固定的。当伺服电机运行时,控制器会根据原点
    的头像 发表于 07-26 09:43 3749次阅读
    <b class='flag-5'>伺服</b><b class='flag-5'>电机</b>中的回原点方式

    MT6825磁编芯片:为伺服电机控制系统注入全角度测量新活力

    在当今工业自动化飞速发展的时代,伺服电机控制系统作为众多设备的核心动力源,其性能的优劣直接影响着整个工业生产的效率和质量。而磁编芯片作为伺服电机
    的头像 发表于 07-24 16:52 829次阅读

    步进电机伺服电机的区别是什么?

    启动速度不同 步进电机启动需要200-400毫秒而伺服电机只需要几毫秒是步进电机的上百倍 控制精度不同 步进
    发表于 06-18 13:27

    什么是伺服电机编码器?作用/关键技术/选型等一起看看吧!

    什么是伺服电机编码器? 伺服电机编码器是伺服系统中的核心反馈元件,用于实时检测电机的转速、位置、
    的头像 发表于 06-09 11:07 3247次阅读
    什么是<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>编码器?作用/关键技术/选型等一起看看吧!