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

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

3天内不再提示

基于MPU6050传感器的手势控制机械臂

电子设计 来源:一板网 作者:风筝 2021-01-13 16:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

机械臂是引人入胜的工程创作之一,看着这些东西倾斜和摇动像人类的手臂一样完成复杂的事情总是令人着迷。这些机械臂可以在装配线中进行焊接、钻孔、喷漆等剧烈机械工作的行业中找到,最近还开发了高精度的先进机械臂来执行复杂的外科手术。在之前的文章中,我们3D打印了机械臂,并使用MG995伺服电机制作了机械臂。我们将再次使用相同的3D打印机器人手臂,通过Arduino Nano、MPU6050陀螺仪和弯曲(Flex)传感器制作手势控制的机器人手臂。

通过3D打印的机械臂位置可以通过与MPU6050陀螺仪和弯曲传感器相连的手套来控制。 Flex传感器用于控制机械手的夹具伺服电机,MPU6050用于在X和Y轴上移动机器人。如果您没有打印机,那么您也可以像为Arduino机器人手臂项目建造的那样,用简单的纸板制作手臂。

首先,让我们先了解MPU6050传感器和弯曲传感器。

MPU6050陀螺仪和加速度计传感器

MPU6050基于微机械系统(MEMS)技术。该传感器具有一个3轴加速度计、一个3轴陀螺仪和内置温度传感器。它可以用来测量诸如加速度、速度、方向、位移等参数。我们之前已经将MPU6050与Arduino和Raspberry pi进行了连接,并且还使用它构建了一些项目,例如自平衡机器人、Arduino数字量角器和Arduino测斜仪。

MPU6050传感器的功能:

通信:具有可配置I2C地址的I2C协议

● 输入电源:3-5Vd

● 内置16位ADC提供高精度

● 内置DMP提供高计算能力

● 可用于与磁力计等其他I2C设备接口

● 内置温度传感器

弯曲传感器

弯曲传感器实际上是一个可变电阻器。弯曲传感器时,它的电阻会发生变化。通常有2.2英寸和4.5英寸两种尺寸。

为什么我们在项目中使用柔性传感器?在此手势控制的机械臂中,使用弯曲传感器控制机械臂的抓取器。当手套上的弯曲传感器弯曲时,安装在夹具上的伺服电机旋转,夹具打开。

o4YBAF_-rEyAcpQTAABXu7lvdp4025.png

准备好3D打印的机械臂

本文中使用的3D打印机械手是根据ThinZverse中EEZYbotARM提供的设计制作的。 Thingiverse链接中提供了制作3D打印机械臂和带有视频的组装细节的完整过程,该链接在上方共享。

上图是组装4台伺服电机后3D打印的机械臂的图像。

所需的组件

● Arduino Nano开发板

● 弯曲传感器

● 10k电阻

● MPU6050

● 连接线

● 面包板

电路原理

下图显示了基于Arduino的手势控制机械臂的电路连接。

pIYBAF_-rJ6AH8tqAAKulR4Y1OU569.png

MPU6050和Arduino Nano之间的电路连接:

MPU6050 Arduino Nano
VCC +5V
GND GND
SDA A4
SCL A5

弯曲传感器包含两个引脚。它不包含极性端子。因此,第一个引脚P1通过一个10k的上拉电阻连接到Arduino Nano的模拟引脚A0,第二个引脚P2接地到Arduino。

将MPU6050和Flex传感器安装到手套上

我们将MPU6050和Flex传感器安装在手套上。此处,通过线缆连接手套和机械臂,也可以通过使用RF连接或蓝牙连接将其无线连接。

连接完成后,手势控制机械臂的最终设置如下图所示:

为机械臂编程Arduino Nano

本文的末尾提供了完整的代码。这里解释了一些重要的代码。

首先,包括必要的库文件。 Wire.h库用于Arduino Nano和MPU6050与Servo.h之间的I2C通信,以控制伺服电机。

#include

#include

接下来,声明用于类伺服的对象。当我们使用四个伺服电动机时,将创建四个对象。

Servo servo_1;

Servo servo_2;

Servo servo_3;

Servo servo_4;

接下来,声明MPU6050的I2C地址和要使用的变量。

const int MPU_addr=0x68; //MPU6050 I2C Address

int16_t axis_X,axis_Y,axis_Z;

int minVal=265;

int maxVal=402;

double x;

double y;

double z;

在void setup()函数中,将串行通信的波特率设置为9600。

Serial.begin(9600);

并在Arduino Nano和MPU6050之间建立了I2C通信:

Wire.begin(); //Initilize I2C Communication

Wire.beginTransmission(MPU_addr);//Start communication with MPU6050

Wire.write(0x6B); //Writes to Register 6B

Wire.write(0); //Writes 0 into 6B Register to Reset

Wire.endTransmission(true); //Ends I2C transmission

另外,为伺服电机连接定义了四个PWM引脚。

servo_1.attach(2); // Forward/Reverse_Motor

servo_2.attach(3); // Up/Down_Motor

servo_3.attach(4); // Gripper_Motor

servo_4.attach(5); // Left/Right_Motor

接下来,在void loop函数中,再次在MPU6050和Arduino Nano之间建立I2C连接,然后开始从MPU6050的寄存器读取X、Y、Z轴数据并将它们存储在相应的变量中。

Wire.beginTransmission(MPU_addr);

Wire.write(0x3B); //Start with regsiter 0x3B

Wire.endTransmission(false);

Wire.requestFrom(MPU_addr,14,true);//Read 14 Registers

axis_X=Wire.read()<<8|Wire.read();               

axis_Y=Wire.read()<<8|Wire.read();

axis_Z=Wire.read()<<8|Wire.read();

然后,将MPU6050传感器的轴数据的最小值和最大值映射在-90到90的范围内。

int xAng = map(axis_X,minVal,maxVal,-90,90);

int yAng = map(axis_Y,minVal,maxVal,-90,90);

int zAng = map(axis_Z,minVal,maxVal,-90,90);

然后使用以下公式以0到360的形式计算x,y,z值。

x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI);

y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI);

z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI);

然后在Arduino Nano的A0引脚上读取挠曲传感器的模拟输出数据,并根据弯曲传感器的数字值设置夹具的伺服角度。因此,如果弯曲传感器数据大于750,则夹具的伺服电机角度为0度,如果小于750,则为180度。

int gripper;

int flex_sensorip = analogRead(A0);

if(flex_sensorip > 750)

{

gripper = 0;

}

else

{

gripper = 180;

}

servo_3.write(gripper);

然后,将MPU6050在X轴上从0到60的移动映射为0到90度,以实现伺服电机的机械臂正向/反向运动。

if(x >=0 && x <= 60)

{

int mov1 = map(x,0,60,0,90);

Serial.print("Movement in F/R = ");

Serial.print(mov1);

Serial.println((char)176);

servo_1.write(mov1);

}

MPU6050在X轴上从250到360的运动被映射为0到90度,用于伺服电机的上/下运动机械手。

使用Arduino进行手势控制的机械臂的工作

最后,将代码上传到Arduino Nano,并戴上MPU6050和弯曲传感器安装的手套。

现在,向下移动手以使机械臂向前移动,向上移动以使机械臂向上移动。然后向左或向右倾斜手,以向左或向右旋转机械手。弯曲手打开夹持器,然后松开以使其闭合。
编辑:hfy

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

    关注

    2578

    文章

    55811

    浏览量

    795440
  • 加速度计
    +关注

    关注

    6

    文章

    827

    浏览量

    48382
  • MPU6050
    +关注

    关注

    39

    文章

    313

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文读懂手势识别传感器:原理、优势与应用场景

    、消费电子、医疗健康等领域获得了广泛应用。实现手势识别的技术路径并非单一,其中最为成熟且成本可控的方案主要依托两类传感器——红外接近传感器与飞行时间(TOF)传感器
    的头像 发表于 04-28 17:41 1707次阅读
    一文读懂<b class='flag-5'>手势</b>识别<b class='flag-5'>传感器</b>:原理、优势与应用场景

    为何你的机器人手臂“知觉”存在偏差?探秘力传感器的奥秘

    假如你操作过机械,或者在工厂里调试过用于精密装配、抛光的机器人,一定碰到过这种怪事:明明让机械空载停在空中,周围啥也没碰,可力传感器上的
    发表于 04-13 15:25

    STM32驱动PAJ7620手势识别传感器

    原文链接:[https://www.yourcee.com/newsinfo/2925937.html] 传感器简介 PAJ-7620U2是由原相科技公司开发的一款手势识别芯片, 内集成了光学数组式
    的头像 发表于 01-06 09:16 1303次阅读
    STM32驱动PAJ7620<b class='flag-5'>手势</b>识别<b class='flag-5'>传感器</b>

    CW32L012解算MPU6050姿态数据

    我们仅仅获取了MPU6050的三轴加速度和角速度,要想得到姿态角,需要利用读取的数据进行姿态解算。
    的头像 发表于 01-05 16:42 2013次阅读
    CW32L012解算<b class='flag-5'>MPU6050</b>姿态数据

    CW32L012读取MPU6050姿态数据

    随着物联网、可穿戴设备、工业倾角检测等场景的普及,低成本、低功耗的姿态检测方案成为嵌入式领域的研究热点。MPU6050 作为集成三轴加速度计和三轴陀螺仪的六轴传感器,凭借低成本、小体积的优势被
    的头像 发表于 01-05 16:36 1341次阅读
    CW32L012读取<b class='flag-5'>MPU6050</b>姿态数据

    用dma加iic读取mpu6050数据遇到的疑问求解

    我在用dma加iic读取mpu6050数据时,试着用dma传输4个数,但是用freemaster查看数据以后,发现只有数组里面的第一个数有值,其他的都为0,而且发现没进dma传输完成中断,把传输数量改成1以后,就能进入dma传输完成中断,就好像dma只能传输一个数一样,有没有大佬知道这是怎么回事啊
    发表于 12-09 07:41

    泰科电子商用车机械自动变速传感器集群介绍

    TE Connectivity (以下简称 “TE”) 商用车机械自动变速(AMT)传感器集群,把多种关键传感器整合为一体化 “感知中枢” ,包括位置、速度、温度
    的头像 发表于 10-28 17:12 1252次阅读

    TT电机,Arduino Uno,L298N 5AD ,MPU6050最简自平衡机器人资料

    ;MPU6050_6Axis_MotionApps20.h\" //https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050 MPU6050
    发表于 10-06 13:12

    选择合适的MEMS振动传感器?

    选择加速度计时,我们需要注意哪些规格?虽然目前没有任何官方标准可用于振动传感器的分类,但可以通过这些传感器的有效分辨率划分其类别,如图8所示。很明显,MEMS加速度计的覆盖区域比压电传感器更小
    的头像 发表于 09-16 12:03 1001次阅读
    选择合适的MEMS振动<b class='flag-5'>传感器</b>?

    【RA4M2-SENSOR】串口传输MPU6050陀螺仪数据测评

    RA4M2串口传输MPU6050陀螺仪数据测评 1. 套件概述 RA4M2-SENSOR 是一款基于 RA4M2 系列微控制器的评估套件,支持 TrustZone 技 术和片内安全加密引擎(SCE
    发表于 09-14 11:41

    创想智控焊缝跟踪+发那科机器人实现工程机械架焊接智能化升级

    焊也受到工件装配误差等因素的影响。随着智能制造和工业自动化的发展,如何借助先进的传感控制技术,实现工程机械架焊接的精准化与自动化,是工程机械
    的头像 发表于 08-16 15:17 974次阅读

    协作机械产品介绍

    电子发烧友们、工业自动化从业者、科研工作者们注意啦!今天给大家重磅介绍一款在机械领域表现极为亮眼的产品——协作机械,它正以卓越性能重塑行业格局!☎(壹捌伍 柒零零玖 壹壹捌陆)卓越
    发表于 08-07 17:20 0次下载

    无位置传感器控制的双电机驱动系统性能研究

    逆变器驱动双永磁回步电机系统的性能。使用无位置传感器技术目的是为减小成本、体积以及系统硬件的复杂性。MATLAB/SIMULINK仿真研究表明,该文提出的逆变器方案可以独立控制双电机在不同条件下运行
    发表于 07-09 14:25

    小安派BW21-CBV-Kit入门教程之DMP6读取MPU6050数据

    本示例将演示使用 DMP6 从 MPU6050 获取数据。MPU6050 配备了数字运动处理 (DMP),用于处理运动算法的计算,如转换为三轴偏航/俯仰/滚动平面、转换为四元数或转换为欧拉角。
    的头像 发表于 06-19 14:20 1253次阅读
    小安派BW21-CBV-Kit入门教程之DMP6读取<b class='flag-5'>MPU6050</b>数据

    触觉传感器已在亚马逊仓储机械率先商用 新增形式有望加速市场增长节奏

    落地的核心支撑。除人形机器人之外,惊喜地发现触觉传感能力已在仓储机械臂中率先落地应用,这或加速触觉传感器行业的发展。触觉传感器在人形机器人以外的仓储
    的头像 发表于 06-07 16:42 951次阅读
    触觉<b class='flag-5'>传感器</b>已在亚马逊仓储<b class='flag-5'>机械</b><b class='flag-5'>臂</b>率先商用 新增形式有望加速市场增长节奏