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

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

3天内不再提示

如何分别对机器人上的多个伺服进行独立操控

jf_AHleW45b 来源:机器人网 作者:机器人网 2022-10-27 15:43 次阅读

我们已经探索了如何构建机械臂并使用超声波传感器对其进行控制。如果您想要实现更多的控制功能(以及了解拨盘和旋钮的工作原理),您可以在项目中添加一个电位计。这些输入设备使您可以使用可调拨盘来对您的项目进行控制。在本指南中,我们将向您展示如何分别对机器人上的多个伺服进行独立操控,其中每个伺服对应一个拨盘。

电位计的工作原理

大多数拨盘和旋钮下面是一个称为电位计的设备。这种类型的电阻可以调整通过它的电压,然后将其转换为可变值。这对于音量调控、亮度调控,或者我们在今天的指南中将要介绍的伺服位置调控都很有用。

电位计的形式可以是拨盘、旋钮或者滑块,选择哪种取决于您的应用需求。在本指南中,我们将使用拨盘来控制机械臂上的多个伺服。这种类型的电位计通常有三个引脚:两个引脚在外面,连接电源和接地。

中间的引脚是信号引脚,可以连接到Arduino板上的模拟引脚,以测量电位计信号引脚输出的值与全5V电压接近的程度。在极端情况下,两端电压为0V,开发板读取的电压值为0。另一个极端情况下,通过的电压为全5V,开发板读取值为1023。也就是说这可以提供1024个可以测量的阻力级别,所以可以有1024个值传递到您的脚本中。

所需组件

该项目所需材料与我们之前的使用超声波传感器控制机械臂指南中所需材料大致相似。但是,我们将使用一个简单的拨盘来代替超声波传感器。基本电子套件通常带有这些拨盘,您也可以单独进行购买。

Arduino Uno

7d6f390e-55c3-11ed-a3b6-dac502259ad0.png

电位计 &拨盘

7d898eee-55c3-11ed-a3b6-dac502259ad0.png

Arduino IDE

7d99a112-55c3-11ed-a3b6-dac502259ad0.png

机器人套件

我们在之前的机器人指南中使用了the meArm套件,在本指南中将使用相同的套件。该套件的某些版本不带有伺服,因此请查找您所需要的版本。

7db09188-55c3-11ed-a3b6-dac502259ad0.png

您还需要一个简单的扬声器模块和一根USB数据线,我使用的是一个简单的单声道扬声器。

本指南是基于所使用的meArm套件中的TG9z伺服编写的。根据您所使用的特定伺服系统,可能会有一些变化,因此请务必阅读材料的相关文档。

代码

我们之前的指南更详细地介绍了伺服的工作原理,因此我们在此处将重点介绍电位计,但是还是之介绍一些有关基础知识。如果您想将代码上传到Arduino并直接跳到接线部分,那么所有代码如下所示。

#include


Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo


int potpinA0 = 0; // Assign analog pin to potentiometer
int potpinA1 = 1; // Assign analog pin to potentiometer
int val0 = 0; // Variable to read value from potentiometer, starts at 0
int val1 = 0; // Variable to read value from potentiometer, starts at 0


void setup() {
myservo1.attach(9); // attaches the servo on pin 9 to the servo object
myservo2.attach(10); // attaches the servo on pin 10 to the servo object
Serial.begin(9600); // This will allow you to read how far away your sensor is later


}
void loop() {
val0 = analogRead(potpinA0); // Reads potentiometer value (between 0 and 1023)
val0 = map(val0, 0, 1023, 110, 150); // Scale value to volume (value between 0 and 50)
val1 = analogRead(potpinA1); // Reads potentiometer value (between 0 and 1023)
val1 = map(val1, 0, 1023, 50, 170); // Scale value to volume (value between 0 and 50)
Serial.print(“Pin 1: “);
Serial.print(val0); // Print dial/volume position
Serial.print(“, Pin 2: “);
Serial.print(val1); // Print dial/volume position
Serial.println();


myservo1.write(val0); // Sets servo 1 according to the scaled value
delay(15); // Waits for the servo to get there


myservo2.write(val1); // Sets servo 2 according to the scaled value
delay(15); // Waits for the servo to get there


}


First, let’s take a look at the variables.


int potpinA0 = 0; // Assign analog pin to potentiometer
int val0 = 0; // Variable to read value from potentiometer, starts at 0

这些是在setup()函数之前定义的(确保您已经创建了伺服对象,并在此处包含了Servo.h库),第一个变量potpinA0将电位计的信号引脚分配给Arduino上的引脚A0。

第二个变量val0将用于存储从该引脚接收到的值。

val0 = analogRead(potpinA0); // Reads potentiometer value (between 0 and 1023)
val0 = map(val0, 0, 1023, 110, 150); // Scale value to volume (value between 0 and 50)


这里的第一行读取电位计连接到的模拟引脚值并将其分配给val0。默认情况下,该值将介于0和1023之间。然而,这个范围对我们的伺服来说太大了,它最多只能旋转180度(实际上甚至更小,我们一会儿将会看到)。所以,第二行用于将从电位计接收到的值转换到更易于管理的值。

map() 函数对于该工作很有用,但是对于要输入的值可能需要反复试验。虽然您的伺服系统最多可以旋转180度,但是它们所连接部件的运动可能会有更多限制。试验出它们的运动范围,以找出这些伺服可以达到的最小值和最大值。就本项目来说,我发现我的第一个伺服在110度到150度之间运动。

考虑到这些信息, map()函数可以把0到1023的范围重新映射到110到150。现在,如果我将拨盘调到最低点,它将返回110。如果我将它旋转到最高点,将返回150。中间的度数将按比例映射到这两个值之间。

Serial.print(“Pin 1: “);
Serial.print(val0); // Print dial/volume position
Serial.print(“, Pin 2: “);
Serial.print(val1); // Print dial/volume position
Serial.println();

此部分将返回串行监视器中电位计的值(重新映射之后)。这对于在连接伺服之前对值进行测试很有用。

myservo1.write(val0); // Sets servo 1 according to the scaled value
delay(15); // Waits for the servo to get there

最后,这个命令会告诉伺服在重新映射电位计信号后旋转到指定位置。延迟命令会给程序一点时间来完成旋转动作。

完整代码包括上述的两组各种命令,其中为多个伺服分配了变量,每个伺服都可以进行独立操作。您可以添加尽可能多的伺服,只要您的开发板能够处理。请记住,每个伺服都需要在map()函数中指定自己特定的运动范围。

接线

与所有的伺服项目一样,在连接伺服系统之前,最好进行尽可能多的编码工作和测试。准备好后,将代码上传到您的Arduino,然后按照如下方式连接线路(您可能需要为本项目使用一个面包板):

● 将每个电位计上的第一个引脚连接到GND。
● 将每个电位计上的第三个引脚连接到5V。
● 将第一个电位计上的最后一个引脚连接到Arduino上的引脚A0。如果您使用第二个电位计和伺服组合(像完整代码里的那样),请将其连接到引脚A1。对于您所添加的每个电位计都以此类推。
● 将伺服上的电源线连接到5V,将地线连接到GND。
● 将伺服上的黄色信号线连接到引脚9。如果您使用第二个伺服,将其信号线连接到引脚10。

7dd68eb0-55c3-11ed-a3b6-dac502259ad0.png

当完成了所有连接,并上传代码后,您应该能够旋转拨盘并且从伺服看到相应的运动。每个伺服将通过自己的电位计独立进行操作。但是,我们也有可能可以通过一个拨盘控制多个伺服,甚至可以编写一个使其沿预设路径自动移动的草图。尝试在项目中添加更多伺服,并尝试使用其他方法来对伺服进行控制。

审核编辑 :李倩


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

    关注

    211

    文章

    28379

    浏览量

    206908
  • 电位计
    +关注

    关注

    0

    文章

    253

    浏览量

    16958
  • 机械臂
    +关注

    关注

    12

    文章

    513

    浏览量

    24552

原文标题:机械臂上多个伺服独立操控的实现

文章出处:【微信号:旺材伺服与运动控制,微信公众号:旺材伺服与运动控制】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    安川工业机器人结构

    本章节进行安川工业机器人介绍分享 --关于安川工业机器人可分为三部分组成,其分别是:机器人本体、控制柜与示教编程器,当然控制柜与
    的头像 发表于 12-19 09:59 140次阅读
    安川工业<b class='flag-5'>机器人</b>结构

    伺服系统在机器人中的作用 伺服系统与传统电机对比

    伺服系统在机器人中的作用 机器人技术是现代工业自动化的重要组成部分,它涉及到机械、电子、计算机科学、控制理论等多个学科。在这些技术中,伺服
    的头像 发表于 12-10 10:18 256次阅读

    鸿蒙机器人与鸿蒙开发板联动演示

    鸿蒙机器人与鸿蒙开发板联动演示,机器人的角色为迎宾机器人,开发板负责人宾客出现监听
    发表于 12-02 14:55

    马斯克旗下xAI计划推出Grok聊天机器人独立应用

    近日,据最新报道,埃隆·马斯克旗下的xAI公司计划最早于12月推出一款独立的聊天机器人应用程序,这款应用将围绕其旗下的Grok聊天机器人进行打造。此举被视为xAI在聊天
    的头像 发表于 11-29 13:38 165次阅读

    焊接机器人六个轴分别是什么作用

    任务。那么,焊接机器人六个轴分别是什么作用?本文将详细介绍。 一轴:机器人基座旋转轴 一轴是机器人与地面连接的轴,其主要作用是实现机器人的基
    的头像 发表于 11-21 17:45 174次阅读
    焊接<b class='flag-5'>机器人</b>六个轴<b class='flag-5'>分别</b>是什么作用

    伺服电机在机器人中的应用有哪些

    伺服电机作为现代工业自动化领域的核心组件,其精确控制和高效性能在机器人技术中扮演着至关重要的角色。 伺服电机的工作原理 伺服电机是一种能够将电能转换为机械能的装置,它通过精确控制电机的
    的头像 发表于 11-20 09:53 488次阅读

    国产可编程硅振在机器人伺服系统中的应用,替换SiTime

    国产可编程硅振在机器人伺服系统中的应用,替换SiTime
    的头像 发表于 09-26 10:09 247次阅读
    国产可编程硅振在<b class='flag-5'>机器人</b><b class='flag-5'>伺服</b>系统中的应用,替换SiTime

    伺服控制机器人的控制方式有哪些

    伺服控制机器人是一种高度精确的自动化设备,它能够执行复杂的任务,如精确定位、重复运动和力控制。伺服控制系统是机器人技术中的核心部分,它负责接收指令、处理信息并驱动
    的头像 发表于 09-04 09:16 420次阅读

    开源项目!用ESP32做一个可爱的无用机器人

    巧妙设计的杠杆将开关推回“关”位置。这种玩具很常见,许多人已经制作并上传到YouTube。 作者每年都会挑战自己制作一个技术产品,今年他决定制作这个复杂的项目——可爱无用机器人。这个机器人参考了日本
    发表于 09-03 09:34

    开源项目!用ESP32做一个可爱的无用机器人

    巧妙设计的杠杆将开关推回“关”位置。这种玩具很常见,许多人已经制作并上传到YouTube。 作者每年都会挑战自己制作一个技术产品,今年他决定制作这个复杂的项目——可爱无用机器人。这个机器人参考了
    发表于 08-30 14:50

    Al大模型机器人

    理解能力强大: AI大模型机器人可以理解和生成自然语言,能够进行复杂的对话和语言任务。它们能够识别语言中的语义、语境和情感,并据此作出适当的回应。广泛的知识储备: 这些模型基于大规模的数据集进行训练,拥有
    发表于 07-05 08:52

    AMD Kria™ KR 260套件+ROS 2快速开发机器人解决方案

    伺服系统,其中不仅包含电机,还包含微控制器和网络功能。虽然这使得机器人应用所需的复杂电机驱动成为可能,但这也意味着每个伺服系统都有几个不同的驱动和控制机制。通常,当使用这种复杂的伺服
    的头像 发表于 06-21 16:35 9108次阅读
    AMD Kria™ KR 260套件+ROS 2快速开发<b class='flag-5'>机器人</b>解决方案

    基于FPGA EtherCAT的六自由度机器人视觉伺服控制设计

    ,为工业自动化提供了一套切实可行的方案。 本文针对基于机器视觉的工业机器人进行研究,主要工作包括以下几点: (1)设计了基于 伊瑟特的六自由度机器人视觉
    发表于 05-29 16:17

    其利天下技术·搭载无刷电机的扫地机器人的前景如何?

    地毯并增加吸力,或是绕过障碍物进行清扫。同时,通过手机APP远程控制、语音指令等方式,用户可以方便地操作扫地机器人,实现个性化的清洁需求。 3.扫地机器人面临的技术壁垒与客户体验问题 尽管扫地
    发表于 05-05 15:03

    开源项目!教你如何复刻自平衡赛车机器人、智能家居中控、竞技机器人先进模糊控制器等

    岂不是手到擒来。 它,就是可以自平衡的赛车机器人——B_ROBOT_100ASK 项目简介 本项目基于jjrobots的开源项目B-ROBOT EVO2进行复刻,与原开源项目不一样的地方是,作者将原本
    发表于 12-26 09:17