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

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

审核编辑 :李倩


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

    关注

    214

    文章

    31700

    浏览量

    224692
  • 电位计
    +关注

    关注

    0

    文章

    256

    浏览量

    17984
  • 机械臂
    +关注

    关注

    14

    文章

    607

    浏览量

    26249

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    荣耀机器人散热系统介绍

    机器人生死的核心系统。一、散热系统在机器人中的核心定位在机器人的物理结构中,散热系统并非独立部件,而是一个集成式的热管理网络,它与动力层、能源层深度绑定:位置布局:
    的头像 发表于 04-25 10:04 988次阅读
    荣耀<b class='flag-5'>机器人</b>散热系统介绍

    在 VisionFive 2 实现机器人伺服控制

    据StarFive介绍,开发者已经在VisionFive/VisionFive 2上成功实现了机器人伺服控制,具体说明如下: 1. Preparation Development board
    发表于 03-05 07:09

    再谈低温烧结银的应用:从春晚四家机器人出镜的幕后推手说起

    科技:《武 BOT》:H2机器人31个高精度关节、单臂7自由度,完成醉拳、双截棍、舞剑,同步误差**< 0.1秒;核心是高功率密度伺服电机+高速控制+**强散热。 **魔法原子:《智造
    发表于 02-17 14:07

    南柯电子|电力电子EMC整改:工业机器人伺服驱动器解决方案策略

    南柯电子|电力电子EMC整改:工业机器人伺服驱动器解决方案策略
    的头像 发表于 01-15 09:29 464次阅读

    探索RISC-V在机器人领域的潜力

    利用Gazebo仿真环境(在x86主机上运行)和MUSE Pi Pro的ROS 2节点进行了联合仿真。 • 场景: 在PC的Gazebo中运行一个TurtleBot3机器人模型,MUSE Pi
    发表于 12-03 14:40

    智能化机器人焊接产线西门子1500系列PLC通过Profinet转CANopen模块和多个伺服电机进行通讯案例

    、视觉系统及人机界面,构成工厂级控制主干。而产线上部署的六台焊接机器人,其内部构成复杂:每个机器人的六个关节伺服驱动器、末端执行器以及手爪IO模块,均作为CANopen从站,挂接在机器人
    的头像 发表于 11-11 14:57 1262次阅读
    智能化<b class='flag-5'>机器人</b>焊接产线西门子1500系列PLC通过Profinet转CANopen模块和<b class='flag-5'>多个</b><b class='flag-5'>伺服</b>电机<b class='flag-5'>进行</b>通讯案例

    RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知

    。· 利用开发板的MIPI CSI1和CSI2接口,完整接入8路摄像头,实现了所有通道的视频预览与采集,为机器人构建了全方位的视觉感知系统。卓越性能表现:· CPU占用率:34%· DDR占用率:50
    发表于 10-29 16:41

    小萝卜机器人的故事

    经过我的申请, 马老师发放了, 小萝卜机器人的, 开发权限, 原来的小萝卜公司, 因为经营不善倒闭, 作为科研产品, 几个技术对此惋惜, 自掏腰包, 要让小萝卜机器人, 再生, 每次听到小萝卜说
    发表于 10-23 05:24

    自制巡线解迷宫机器人

    的最顶层,主要用于与外部环境进行数据交互,在本项目最早的规划中这部分应该是由红外反射传感器、OLED显示屏与Wi-Fi透传模块等三个核心外设组成,不过由于时间缘故后两个我并没有添加到机器人,所以这次我
    发表于 10-20 10:39

    什么是机器人?追溯机器人技术的演变和未来

    的定义。机器人的定义,真如表面看起来那么简单直白?还是比我们所认为的更为复杂呢? 从本质讲,机器人是一种可编程机器,能够感知、处理信息,并自主或在一定程度的人工指令引导下执行任务。与
    的头像 发表于 10-02 16:32 5952次阅读
    什么是<b class='flag-5'>机器人</b>?追溯<b class='flag-5'>机器人</b>技术的演变和未来

    人形机器人伺服电机驱动器新动力:高性能电容器的协同作用

    PART1机器人心脏:伺服电机驱动器随着人工智能和机器人技术的飞速发展,人形机器人正逐步成为智能制造和未来生活的新伙伴。在这一领域,
    的头像 发表于 08-30 10:57 995次阅读
    人形<b class='flag-5'>机器人</b><b class='flag-5'>伺服</b>电机驱动器新动力:高性能电容器的协同作用

    集成多摩川磁性编码器的伺服电机与机器人关节设计创新

    在科技日新月异的今天,机器人正以前所未有的态势融入我们的生产生活。从工业流水线上不知疲倦的机械臂,到家庭中灵活可爱的扫地机器人,它们的身影无处不在。而在机器人的核心部件中,伺服电机和
    的头像 发表于 08-28 18:23 1040次阅读

    工业机器人伺服驱动器配哪样的UPS不间断电源比较好

    随着工业自动化程度的不断提高,工业机器人已经成为现代制造业不可或缺的重要设备。作为工业机器人的核心部件,伺服驱动器对供电质量有着极高的要求。那么,如何为工业机器人
    的头像 发表于 08-20 10:09 830次阅读
    工业<b class='flag-5'>机器人</b><b class='flag-5'>伺服</b>驱动器配哪样的UPS不间断电源比较好

    MT6701绝对式磁编码器优化机器人关节伺服控制

    在当今科技飞速发展的时代,机器人已经广泛应用于工业制造、物流配送、医疗服务等众多领域。而机器人关节伺服控制作为机器人运动的关键技术,其性能的优劣直接影响着
    的头像 发表于 08-04 17:57 1339次阅读

    工业机器人的特点

    机器人是关键。工业互联网是通过端上的数据传输,经过大数据分析和云计算处理,再进行智能化决策的一整个过程,其中端的数据传输是基础。工业互联网的端包括机器人、传感器等一切线下连接端口。因此发展工业
    发表于 07-26 11:22