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

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

3天内不再提示

3自由度串联机械臂实现电磁铁搬运功能

jf_72402704 来源:jf_72402704 作者:jf_72402704 2023-03-09 08:31 次阅读

1、功能描述

R308样机是一款拥有3自由度的串联机械臂。本文提供的示例所实现的功能为:在3自由度串联机械臂样机上安装电磁铁,实现电磁铁搬运物品的功能。

poYBAGQJKPqAdzcLAAAbEBLwcfU356.pngpYYBAGQJKPuAZ8UzAJBGK67IDBg778.gif

2、电子硬件

在这个示例中,我们采用了以下硬件,请大家参考:

主控板 Basra(兼容Arduino Uno)
扩展板 Bigfish2.1
舵机 270°伺服电机
电池 7.4V锂电池
其它 电磁铁、USB线

电路连接说明:

poYBAGQJKPuAGYQ6AAAr4t_Pzd8426.png

注:

① 270°伺服电机连接在Bigfish扩展板D4 . GND . VCC接口

② 270°伺服电机连接在Bigfish扩展板D7 . GND . VCC接口上

③ 270°伺服电机连接在Bigfish扩展板D11 . GND . VCC接口上

电磁铁连接在Bigfish扩展板D9,D10接口上

3、运动控制

上位机:Controller 1.0

下位机编程环境:Arduino 1.8.19

3.1初始位置的设定

① 将Controller下位机程序servo_bigfish.ino直接下载到主控板。这段代码供Controller上位机与主控板通信,并允许调试舵机。代码如下:

/*------------------------------------------------------------------------------------

  版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

           Distributed under MIT license.See file LICENSE for detail or copy at

           https://opensource.org/licenses/MIT

           by 机器谱 2023-01-31 https://www.robotway.com/

  ------------------------------

/*

* Bigfish扩展板舵机口; 4, 7, 11, 3, 8, 12, 14, 15, 16, 17, 18, 19

* 使用软件调节舵机时请拖拽对应序号的控制块

*/

#include 


#define ANGLE_VALUE_MIN 0

#define ANGLE_VALUE_MAX 180

#define PWM_VALUE_MIN 500

#define PWM_VALUE_MAX 2500


#define SERVO_NUM 12


Servo myServo[SERVO_NUM];


int data_array[2] = {0,0};   //servo_pin: data_array[0], servo_value: data_array[1];

int servo_port[SERVO_NUM] = {4, 7, 11, 3, 8, 12, 14, 15, 16, 17, 18, 19};

int servo_value[SERVO_NUM] = {};


String data = "";


boolean dataComplete = false;


void setup() {

  Serial.begin(9600);

 

}


void loop() {

 

  while(Serial.available())

  {

    int B_flag, P_flag, T_flag;

    data = Serial.readStringUntil('n');

    data.trim();

    for(int i=0;i= ANGLE_VALUE_MIN && where <= ANGLE_VALUE_MAX)

  {

    myServo[which].write(where);

  }

  else if(where >= PWM_VALUE_MIN && where <= PWM_VALUE_MAX)

  {

    myServo[which].writeMicroseconds(where);

  }

}


int pin2index(int _pin){

  int index;

  switch(_pin)

  {

    case 4: index = 0; break;

    case 7: index = 1; break;

    case 11: index = 2; break;

    case 3: index = 3; break;

    case 8: index = 4; break;

    case 12: index = 5; break;

    case 14: index = 6; break;

    case 15: index = 7; break;

    case 16: index = 8; break;

    case 17: index = 9; break;

    case 18: index = 10; break;

    case 19: index = 11; break;

  }

  return index;

}

下载完成后,保持主控板和电脑的USB连接,以便利用上位机进行调试。

② 双击打开Controller 1.0b.exe:

pYYBAGQJKPyANDrhAAAI1jsGVhU350.pngpoYBAGQJKPyAAyG8AAA6JmsOvRE424.png

③ 界面左上角选择:设置-面板设置,弹出需要显示的调试块,可通过勾选隐藏不需要调试的舵机块:联机-选择主控板对应端口号以及波特率。

pYYBAGQJKP2AeJmrAABREoV-NoE619.pngpoYBAGQJKP2ASj4NAABKnjlE9tY290.pngpYYBAGQJKP2AP9R4AAAcnKtX2mY185.pngpoYBAGQJKP6ABtMSAAAgxBCv8_c250.png

④ 拖动进度条,可以观察相应的舵机角度转动。写好对应的舵机调试角度,勾选左下角添加-转化,获得舵机调试的数组:

pYYBAGQJKP6ABVdsAABOaiWanDk476.png

⑤ 将该数组直接复制到相应的Arduino程序中的get_coordinate()部分进行使用。

3.2调试好角度后将电磁铁搬运例程(calculate_angle_test.ino)下载到主控板【程序源码详见 https://www.robotway.com/h-col-191.html】

/*------------------------------------------------------------------------------------

  版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

           Distributed under MIT license.See file LICENSE for detail or copy at

           https://opensource.org/licenses/MIT

           by 机器谱 2023-01-31 https://www.robotway.com/

  ------------------------------*/

#include 

#include 


#define SERVO_SPEED 3460                                        //定义舵机转动快慢的时间

#define ACTION_DELAY 200                                        //定义所有舵机每个状态时间间隔


#define L1 172

#define L2 160

#define L3 135


Servo myServo[6];


int f = 200;                                                    //定义舵机每个状态间转动的次数,以此来确定每个舵机每次转动的角度

int servo_port[6] = {4,7,11,3,8,12};                            //定义舵机引脚

int servo_num = sizeof(servo_port) / sizeof(servo_port[0]);     //定义舵机数量

float value_init[6] = {1500, 1500, 1500, 0, 0, 0};              //定义舵机初始角度


double theta[3] = {};

float value_pwm[6] = {};

float coordinate[3] = {};

int data_num;


boolean dataComplete = false;


void setup() {

  Serial.begin(9600);

  pinMode(9, OUTPUT);

  pinMode(10, OUTPUT);

  for(int i=0;i= 0){

    theta[0] = theta0 * 180 / PI;

  }

  else

  {

    theta[0] = 180 + theta0 * 180 / PI;

  }


  theta[1] = 90 - theta1 * 180 / PI;

  theta[2] = theta2 * 180 / PI;

//   Serial.print("theta0 = ");

//   Serial.println(theta[0]);

//   Serial.print("theta1 = ");

//   Serial.println(theta[1]);

//   Serial.print("theta2 = ");

//   Serial.println(theta[2]);

//   Serial.println("-------------------------------------");


}


void ServoStart(int which)

{

  if(!myServo[which].attached())myServo[which].attach(servo_port[which]);

  pinMode(servo_port[which], OUTPUT);

}




void ServoStop(int which)

{

  myServo[which].detach();

  digitalWrite(servo_port[which],LOW);

}


void ServoGo(int which , int where)

{

  if(where!=200)

  {

    if(where==201) ServoStop(which);

    else

    {

      ServoStart(which);

      myServo[which].writeMicroseconds(where);

    }

  }

}


void servo_move(float value0, float value1, float value2, float value3, float value4, float value5)

{

 

  float value_arguments[] = {value0, value1, value2, value3, value4, value5};

  float value_delta[servo_num];

 

  for(int i=0;i


审核编辑黄宇

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

    关注

    211

    文章

    28745

    浏览量

    208907
  • Arduino
    +关注

    关注

    188

    文章

    6477

    浏览量

    188082
  • 机械臂
    +关注

    关注

    12

    文章

    527

    浏览量

    24757
收藏 人收藏

    评论

    相关推荐

    完美CP来啦!当AGV遇上机械

    AGV+机械复合机器人逐渐打开市场,实现物料自动搬运、上下料、分拣等“无人搬运”。结合信息系统运作,调度人员下达指令,
    的头像 发表于 01-16 18:12 145次阅读
    完美CP来啦!当AGV遇上<b class='flag-5'>机械</b><b class='flag-5'>臂</b>!

    RK3568国产实验箱+人工智能机械:跳舞、叠罗汉、夹方块、积木搬运案例全解!

    基于语音控制实现机械特定动作的方法。三、实验原理程序功能通过语音控制机械
    的头像 发表于 12-12 19:01 504次阅读
    RK3568国产实验箱+人工智能<b class='flag-5'>机械</b><b class='flag-5'>臂</b>:跳舞、叠罗汉、夹方块、积木<b class='flag-5'>搬运</b>案例全解!

    H60.XYZTR5六自由度联机

    、生物科技等微纳操作领域。 H60.XYZTR5六自由度联机构 H60.XYZTR5系列六自由度联机构压电纳米定位台,是X、Y、Z、θx、θy、θz六轴运动定位台,内置高可靠性压电
    的头像 发表于 11-21 10:33 302次阅读
    H60.XYZTR5六<b class='flag-5'>自由度</b>并<b class='flag-5'>联机</b>构

    机械的高效运作,连接器起关键作用

         机械是灵活且可编程的自动化设备,在工业生产中发挥着至关重要的作用。其广泛的应用领域涵盖了装配与搬运、焊接与喷涂、检测与测量、码垛等多个环节,极大地提升了生产效率与质量,并成功替代人工完成
    的头像 发表于 11-11 18:07 366次阅读

    铁芯长短与电磁铁磁力大小的关系

    铁芯长短与电磁铁磁力大小的关系是一个重要的电磁学问题,它涉及到电磁铁的工作原理以及磁场在铁芯中的分布和增强机制。 一、理论分析 1. 电磁铁的基本原理
    的头像 发表于 08-21 09:35 2734次阅读

    OrangePi AIpro应用:机械应用开发指南

    众多与会者的驻足关注,他们对这款智能机械表现出极大的热情。此款机械能对积木颜色进行识别,将积木搬运到对应区域,可应用于垃圾分拣及工业、物
    的头像 发表于 08-19 16:42 679次阅读
    OrangePi AIpro应用:<b class='flag-5'>机械</b><b class='flag-5'>臂</b>应用开发指南

    国产Cortex-A55人工智能教学实验箱_基于Python机械跳舞实验案例分享

    发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。 机械通过ROS机器人操控系统,简化了6自由度串行总线舵机复杂运动控制,可实现
    发表于 06-28 14:37

    干货!国产Cortex-A55人工智能实验箱机械积木搬运实验案例

    的顺序叠起来放到中间灰色的方块上。二、实验原理机械自由度机械自由度,是指传送机构机械手的运动
    的头像 发表于 06-27 08:32 989次阅读
    干货!国产Cortex-A55人工智能实验箱<b class='flag-5'>机械</b><b class='flag-5'>臂</b>积木<b class='flag-5'>搬运</b>实验案例

    电磁继电器工作电路分为哪两部分

    电磁继电器是一种利用电磁原理来实现控制电路的开关元件。它主要由电磁铁、触点系统和机械结构三部分组成。电磁
    的头像 发表于 06-21 09:45 884次阅读

    电磁继电器分为哪两个电路

    电磁继电器是一种利用电磁原理实现控制的电器,广泛应用于自动控制系统和远程控制系统中。它主要由电磁铁、触点系统和机械部件组成。
    的头像 发表于 06-21 09:28 878次阅读

    电磁继电器的原理是什么?为什么要使用电磁继电器?

    电磁继电器是一种利用电磁原理实现控制和保护的电器元件。它主要由电磁铁、触点系统、弹簧等部分组成。电磁继电器的工作原理是利用
    的头像 发表于 06-21 09:24 2518次阅读

    电磁继电器的工作电路由什么和什么构成

    电磁继电器主要由控制电路和工作电路两部分组成。控制电路由电磁铁、触点、线圈等组成,工作电路由触点、负载等组成。当控制电路通电时,电磁铁产生磁场,吸引触点,使触点闭合,从而实现对工作电
    的头像 发表于 06-21 09:23 1228次阅读

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

    ,在 PS层运行 苏姆的裸机程序, 并将六自由度串联机器人逆解算法移植到主站代码里,进行机器人末端位置对于视觉反馈的实时跟随控制。 (4)通过实验验证了本设计的对物块识别的准确性和实时性,并使用自主
    发表于 05-29 16:17

    Lake Shore 电磁铁电源 643发生故障了如何维修

    Lake Shore电磁铁电源643是一款高性能、高精度的电磁铁电源设备,能够满足各种电磁铁应用的需求。其高精度控制、快速极性反转和高可靠性等特点,使其成为物理材料性能表征、磁学实验等领域的理想选择
    的头像 发表于 05-28 14:05 430次阅读
    Lake Shore <b class='flag-5'>电磁铁</b>电源 643发生故障了如何维修

    【科准测控】电磁铁力特性测试方法和设备介绍!

    最近,我们接到了一位客户的咨询,他们希望对电磁铁进行力-位移测试、力-电流测试以及响应时间测试,以评估其在实际应用中的表现。这种测试不仅可以帮助客户了解电磁铁在不同工作条件下的性能表现,还能为他们
    的头像 发表于 03-20 17:41 1331次阅读
    【科准测控】<b class='flag-5'>电磁铁</b>力特性测试方法和设备介绍!