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

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

审核编辑 :李倩


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

    关注

    206

    文章

    27064

    浏览量

    201461
  • 电位计
    +关注

    关注

    0

    文章

    252

    浏览量

    16825
  • 机械臂
    +关注

    关注

    9

    文章

    475

    浏览量

    23831

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

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

收藏 人收藏

    评论

    相关推荐

    【开源项目】Emo:基于树莓派 4B DIY 能笑会动的桌面机器人

    PAM8403 放大器,对树莓派中的声音进行放大。 接着,我们使用 M3 x 15 mm 螺钉将头部下半部分牢牢地固定在机器人的身体。然后连接之前组装好的头部上半部分,最终完成整个头部的组装。 组装身体
    发表于 12-26 15:18

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

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

    LabVIEW的六轴工业机器人运动控制系统

    环境中,对机器人进行了正逆运动学仿真测试。接着,对单轴和多轴伺服系统进行了控制测试,最终实现了机器人的轨迹规划实体控制。 在整个项目中,La
    发表于 12-21 20:03

    用全志R128复刻自平衡赛车机器人,还实现了三种不同的操控方式

    手柄的菜单栏UI可以选择不同的机器人基础参数设置和进行机器人操控。 在自平衡机器人启动后,可
    发表于 12-20 10:22

    一文了解机器人伺服系统

    工业机器人有4大组成部分,分别为本体、伺服、减速器和控制器。而其中,工业机器人电动伺服系统的一般结构为三个闭环控制,即电流环、速度环和位置环
    的头像 发表于 11-01 09:32 588次阅读
    一文了解<b class='flag-5'>机器人</b><b class='flag-5'>伺服</b>系统

    机器人编程需要什么软件?

    机器人编程需要什么软件
    发表于 11-01 07:34

    EPR6-S工业机器人通过EtherCAT转profinet网关接入西门子系统

    工业机器人专用六轴伺服驱动器一台。 首先我们要在西门子PLC博图中进行组态,点击管理通用站描述文件,再点击右侧“...”从查找GSD所在文件,勾选当前GSD文件安装至成功。 从右侧硬件目录
    发表于 10-24 14:04

    Arduino教学机器人的使用教程

    本文档的主要内容详细介绍的是Arduino教学机器人的使用教程
    发表于 09-27 06:53

    ai人工智能机器人

    进行监控管理。 智能电话机器人的另一个优势是不知疲倦,不需要休息和喝水,不需要休息。人在工作时就会有各种各样的脾气,但智能电话机器人不会,永远都以最严谨、最周到的态度和客户进行沟通。
    发表于 09-21 11:09

    常见的机器人视觉伺服中的标定技术有哪些

    常见的机器人视觉伺服中要实现像素坐标与实际坐标的转换,首先就要进行标定,对于实现视觉伺服控制,这里的标定不仅包括摄像机标定,也包括机器人系统
    发表于 08-04 11:48 634次阅读
    常见的<b class='flag-5'>机器人</b>视觉<b class='flag-5'>伺服</b>中的标定技术有哪些

    【科普】干货!带你从0了解移动机器人(三) ——自主导航系统及上位机软件设计与实现

    。 移动机器人外部调度软件和管理平台调度软件和管理平台是指在上位机(服务器)实现的软件,用于对移动机器人进行远程管理和控制。 通过调度软件,可以实现对移动
    发表于 06-28 09:36

    机器人上线有什么注意事项

    不要被复杂的生产线吓倒,生产线可以看成多个单独的设备或机器人,每部分完成一个功能。
    发表于 06-08 17:40

    如何快速地让机器人投入生产

    重复使用。按功能以生产线设备,机器人设备如此整理后,可以形成一个函数库。加上c语言的mach函数库,并整理一个三角函数库后。我们的设备就可以通用了。什么生产线都没问题。不要太依靠示教器,以及各种机器人软件。因为他们会被改进或者
    发表于 06-06 16:18

    机器人如何计算简单的运动

    模型要具备齿轮,导轨几种基本的运动原理。 要分辨基本图形,视觉模型要能分辨圆形,方形和三角形。 有了这两点,机器人就基本能计算开模和注塑这种简单的工作了。要替代人类的工作,还要进一步学习。
    发表于 05-19 20:40

    浅谈儿童陪护机器人

    儿童陪护机器人中得到了广泛应用。 在儿童陪护机器人中,步进电机芯片主要用于转动控制。在此过程中,控制器通过对步进电机芯片输出的脉冲信号进行控制,使得步进电机以一定的步距旋转,从而实现机器人
    发表于 05-11 15:12