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


审核编辑黄宇

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

    关注

    213

    文章

    29835

    浏览量

    213739
  • Arduino
    +关注

    关注

    190

    文章

    6499

    浏览量

    192708
  • 机械臂
    +关注

    关注

    13

    文章

    556

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    人形机器人“灵巧手”,正在接近27个自由度的人手

    电子发烧友网报道(文/黄晶晶)灵巧手是人形机器人核心零部件之一,以人类的手来看通常被认为具有27个自由度自由度越高,其动作越精细。特斯拉二代Optimus的灵巧手已经拥有22个自由度。 灵巧
    的头像 发表于 04-21 09:04 ?2649次阅读
    人形机器人“灵巧手”,正在接近27个<b class='flag-5'>自由度</b>的人手

    EtherCAT科普系列(17):EtherCAT技术在多自由度 3D 打印领域应用

    不使用传统复杂的刀具或模具的情况下,使用熔融材料堆叠成具有复杂的传统工艺难以实现的结构,相较于传统切削加工铸造技术,具有节约材料、耗时短、提高设计自由度等优势,被誉
    的头像 发表于 07-28 11:53 ?148次阅读
    EtherCAT科普系列(17):EtherCAT技术在多<b class='flag-5'>自由度</b> <b class='flag-5'>3</b>D 打印领域应用

    十字形多自由度超声电机接触分析模型研究

    摘 要:十字形多自由度超声电机其动子绕X、Y轴旋转与绕Z轴旋转的驱动机理是不同的,根据弹性接触理论,对其进行了分别考虑,并建立了电机摩擦接触分析模型。利用建立的模型,对多自由度电机机械特性进行了估算
    发表于 06-17 09:04

    Lake Shore 643电磁铁电源无法开机深度维修案例剖析与解决方案

    近期北京某企业送修一台电磁铁电源 Lake Shore 643,报修的故障是仪器内部进水不开机。对仪器进行初步检测,确定故障与客户报修一致。
    的头像 发表于 05-10 11:51 ?237次阅读
    Lake Shore 643<b class='flag-5'>电磁铁</b>电源无法开机深度维修案例剖析与解决方案

    大象机器人携手进迭时空推出 RISC-V 全栈开源六轴机械产品

    RISC-V”六轴机械为教育场景量身定制,具备6个自由度,280mm展,支持250g负载,整机重量仅860克。提供丰富接口,末端兼容乐高/M4拓展接口,可
    发表于 04-25 17:59

    上升沿时间在10ns以内的电磁铁驱动电路请教

    最近需要做一个电磁铁的驱动电路,具体要求如下: 1、输出脉冲的电压6V或-6V,电流120mA。还希望后期能控修改输出电压至7-10V 2、希望能够根据输入的ttl信号决定输出6V还是-6V 3
    发表于 04-15 16:09

    ADIS16488A术级10自由度惯性传感器规格书

    电子发烧友网站提供《ADIS16488A术级10自由度惯性传感器规格书.pdf》资料免费下载
    发表于 03-04 16:39 ?0次下载

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

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

    深度解析!RK3568 加持机械是如何实现颜色识别与抓取的?

    ;2、掌握机械识别颜色抓取积木的实现方法。三、实验原理颜色识别抓取积木功能实现识别出不同颜色的积木,
    的头像 发表于 01-15 08:07 ?759次阅读
    深度解析!RK3568 加持<b class='flag-5'>机械</b><b class='flag-5'>臂</b>是如何<b class='flag-5'>实现</b>颜色识别与抓取的?

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

    基于语音控制实现机械特定动作的方法。三、实验原理程序功能通过语音控制机械
    的头像 发表于 12-12 19:01 ?1174次阅读
    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 ?726次阅读
    H60.XYZTR5六<b class='flag-5'>自由度</b>并<b class='flag-5'>联机</b>构

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

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

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

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

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

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