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

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

3天内不再提示

用拨盘控制机械臂

chunhuahua 来源:DevicePlus 作者:DevicePlus 2023-02-23 10:19 次阅读

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

电位计的工作原理

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

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

poYBAGPy0u-ACcApAAAXVO-wcpw700.jpg

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

所需组件

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

Arduino Uno

pYYBAGPy0keAIANsAAA5UDjpMbU093.png

电位计 & 拨盘

poYBAGPy0vSAebDHAAAeXII6pF0616.jpg

Arduino IDE

poYBAGPy0vqAV_yEAABIrYaUTkE508.png

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

pYYBAGPy0v2AD_ErAAG2b71WvPI668.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。

poYBAGPy0uSAZWPUAAAwvHGEGwU981.jpg

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

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

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

    关注

    0

    文章

    253

    浏览量

    16953
  • 机械臂
    +关注

    关注

    12

    文章

    509

    浏览量

    24495
收藏 人收藏

    评论

    相关推荐

    LabView控制三维机械模型

    时间,才发现国内开发的成熟的机械控制程序很少!不知大家有没有兴趣,群策群力,共同开发一套国产的通用的机械
    发表于 11-16 16:01

    机械仿真控制

    机械仿真控制
    发表于 09-29 19:23

    工业机械的相关资料推荐

    工业机械搬运工第一章绪论1.1 本课题研究的背景及意义1.2 机械在工业的应用现状1.3 本课题研究内容第二章机械
    发表于 11-29 07:19

    基于单片机的三轴机械控制怎么实现

    文章目录三轴机械控制原理三轴机械接线三轴机械
    发表于 12-13 07:14

    机械控制学习

    机械控制-------------控制器1.位置控制机器人最传统,最常用的控制方式就是位置
    发表于 02-23 07:49

    DSP的机械预测控制

    针对机械的实时控制问题,基于约束预测控制,提出了一种机械实时运动
    发表于 03-26 09:33 1次下载
    DSP的<b class='flag-5'>机械</b><b class='flag-5'>臂</b>预测<b class='flag-5'>控制</b>

    dfrobotArduino开发实战-遥控机械套装简介

    遥控机械套装,本套装可以通过Arduino编程控制一个桌面机械,还可以WII手柄
    的头像 发表于 11-29 17:19 2487次阅读
    dfrobotArduino开发实战-遥控<b class='flag-5'>机械</b><b class='flag-5'>臂</b>套装简介

    工业机械

    工业机械搬运工第一章 绪 论1.1 本课题研究的背景及意义1.2 机械在工业的应用现状1.3 本课题研究内容第二章 机械
    发表于 11-19 12:21 72次下载
    工业<b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    使用EMG信号控制机械

    电子发烧友网站提供《使用EMG信号控制机械.zip》资料免费下载
    发表于 12-29 11:40 2次下载
    使用EMG信号<b class='flag-5'>控制</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>

    控制机械开源

    电子发烧友网站提供《人控制机械开源.zip》资料免费下载
    发表于 01-31 14:43 4次下载
    人<b class='flag-5'>臂</b><b class='flag-5'>控制</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>开源

    Python控制机械开源分享

    电子发烧友网站提供《Python控制机械开源分享.zip》资料免费下载
    发表于 02-03 10:06 3次下载
    Python<b class='flag-5'>控制</b>的<b class='flag-5'>机械</b><b class='flag-5'>臂</b>开源分享

    如何完成机械的运动控制模块

    使用一个桌面型的六轴机械,在机械的末端安装一个摄像头,来进行 人脸识别和跟踪 的一个功能。该功能分为两个模块,一个是 人脸识别模块 ,另一个是
    的头像 发表于 02-10 16:07 1681次阅读
    如何完成<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的运动<b class='flag-5'>控制</b>模块

    实现使用语音控制机械运动

    使用语音控制myCobot机械运动
    的头像 发表于 03-17 18:13 1223次阅读
    实现使用语音<b class='flag-5'>控制</b><b class='flag-5'>机械</b><b class='flag-5'>臂</b>运动

    PC控制机械设计

    电子发烧友网站提供《PC控制机械设计.zip》资料免费下载
    发表于 06-12 10:41 2次下载
    PC<b class='flag-5'>控制</b>的<b class='flag-5'>机械</b><b class='flag-5'>臂</b>设计

    如何去提升机械的位置控制性能?

    1.背景介绍 机械的位置控制机械最重要的功能。机械
    的头像 发表于 03-05 08:43 853次阅读
    如何去提升<b class='flag-5'>机械</b><b class='flag-5'>臂</b>的位置<b class='flag-5'>控制</b>性能?