0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

3自由度串聯(lián)機(jī)械臂實(shí)現(xiàn)電磁鐵搬運(yùn)功能

jf_72402704 ? 來源:jf_72402704 ? 作者:jf_72402704 ? 2023-03-09 08:31 ? 次閱讀

1、功能描述

R308樣機(jī)是一款擁有3自由度的串聯(lián)機(jī)械臂。本文提供的示例所實(shí)現(xiàn)的功能為:在3自由度串聯(lián)機(jī)械臂樣機(jī)上安裝電磁鐵,實(shí)現(xiàn)電磁鐵搬運(yùn)物品的功能。

poYBAGQJKPqAdzcLAAAbEBLwcfU356.pngpYYBAGQJKPuAZ8UzAJBGK67IDBg778.gif

2、電子硬件

在這個示例中,我們采用了以下硬件,請大家參考:

主控板 Basra(兼容Arduino Uno)
擴(kuò)展板 Bigfish2.1
舵機(jī) 270°伺服電機(jī)
電池 7.4V鋰電池
其它 電磁鐵、USB

電路連接說明:

poYBAGQJKPuAGYQ6AAAr4t_Pzd8426.png

注:

① 270°伺服電機(jī)連接在Bigfish擴(kuò)展板D4 . GND . VCC接口

② 270°伺服電機(jī)連接在Bigfish擴(kuò)展板D7 . GND . VCC接口上

③ 270°伺服電機(jī)連接在Bigfish擴(kuò)展板D11 . GND . VCC接口上

電磁鐵連接在Bigfish擴(kuò)展板D9,D10接口上

3、運(yùn)動控制

上位機(jī):Controller 1.0

下位機(jī)編程環(huán)境:Arduino 1.8.19

3.1初始位置的設(shè)定

① 將Controller下位機(jī)程序servo_bigfish.ino直接下載到主控板。這段代碼供Controller上位機(jī)與主控板通信,并允許調(diào)試舵機(jī)。代碼如下:

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

  版權(quán)說明: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 機(jī)器譜 2023-01-31 https://www.robotway.com/

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

/*

* Bigfish擴(kuò)展板舵機(jī)口; 4, 7, 11, 3, 8, 12, 14, 15, 16, 17, 18, 19

* 使用軟件調(diào)節(jié)舵機(jī)時請拖拽對應(yīng)序號的控制塊

*/

#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連接,以便利用上位機(jī)進(jìn)行調(diào)試。

② 雙擊打開Controller 1.0b.exe:

pYYBAGQJKPyANDrhAAAI1jsGVhU350.pngpoYBAGQJKPyAAyG8AAA6JmsOvRE424.png

③ 界面左上角選擇:設(shè)置-面板設(shè)置,彈出需要顯示的調(diào)試塊,可通過勾選隱藏不需要調(diào)試的舵機(jī)塊:聯(lián)機(jī)-選擇主控板對應(yīng)端口號以及波特率。

pYYBAGQJKP2AeJmrAABREoV-NoE619.pngpoYBAGQJKP2ASj4NAABKnjlE9tY290.pngpYYBAGQJKP2AP9R4AAAcnKtX2mY185.pngpoYBAGQJKP6ABtMSAAAgxBCv8_c250.png

④ 拖動進(jìn)度條,可以觀察相應(yīng)的舵機(jī)角度轉(zhuǎn)動。寫好對應(yīng)的舵機(jī)調(diào)試角度,勾選左下角添加-轉(zhuǎn)化,獲得舵機(jī)調(diào)試的數(shù)組:

pYYBAGQJKP6ABVdsAABOaiWanDk476.png

⑤ 將該數(shù)組直接復(fù)制到相應(yīng)的Arduino程序中的get_coordinate()部分進(jìn)行使用。

3.2調(diào)試好角度后將電磁鐵搬運(yùn)例程(calculate_angle_test.ino)下載到主控板【程序源碼詳見 https://www.robotway.com/h-col-191.html】

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

  版權(quán)說明: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 機(jī)器譜 2023-01-31 https://www.robotway.com/

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

#include 

#include 


#define SERVO_SPEED 3460                                        //定義舵機(jī)轉(zhuǎn)動快慢的時間

#define ACTION_DELAY 200                                        //定義所有舵機(jī)每個狀態(tài)時間間隔


#define L1 172

#define L2 160

#define L3 135


Servo myServo[6];


int f = 200;                                                    //定義舵機(jī)每個狀態(tài)間轉(zhuǎn)動的次數(shù),以此來確定每個舵機(jī)每次轉(zhuǎn)動的角度

int servo_port[6] = {4,7,11,3,8,12};                            //定義舵機(jī)引腳

int servo_num = sizeof(servo_port) / sizeof(servo_port[0]);     //定義舵機(jī)數(shù)量

float value_init[6] = {1500, 1500, 1500, 0, 0, 0};              //定義舵機(jī)初始角度


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


審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    210

    文章

    27994

    瀏覽量

    205551
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186353
  • 機(jī)械臂
    +關(guān)注

    關(guān)注

    12

    文章

    504

    瀏覽量

    24412
收藏 人收藏

    評論

    相關(guān)推薦

    鐵芯長短與電磁鐵磁力大小的關(guān)系

    鐵芯長短與電磁鐵磁力大小的關(guān)系是一個重要的電磁學(xué)問題,它涉及到電磁鐵的工作原理以及磁場在鐵芯中的分布和增強(qiáng)機(jī)制。 一、理論分析 1. 電磁鐵的基本原理
    的頭像 發(fā)表于 08-21 09:35 ?637次閱讀

    國產(chǎn)Cortex-A55人工智能教學(xué)實(shí)驗(yàn)箱_基于Python機(jī)械跳舞實(shí)驗(yàn)案例分享

    發(fā)行包管理,它也提供一些工具和庫用于獲取、建立、編寫和執(zhí)行多機(jī)融合的程序。 機(jī)械通過ROS機(jī)器人操控系統(tǒng),簡化了6自由度串行總線舵機(jī)復(fù)雜運(yùn)動控制,可實(shí)現(xiàn)
    發(fā)表于 06-28 14:37

    干貨!國產(chǎn)Cortex-A55人工智能實(shí)驗(yàn)箱機(jī)械積木搬運(yùn)實(shí)驗(yàn)案例

    的順序疊起來放到中間灰色的方塊上。二、實(shí)驗(yàn)原理機(jī)械自由度機(jī)械自由度,是指傳送機(jī)構(gòu)機(jī)械手的運(yùn)動
    的頭像 發(fā)表于 06-27 08:32 ?608次閱讀
    干貨!國產(chǎn)Cortex-A55人工智能實(shí)驗(yàn)箱<b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>積木<b class='flag-5'>搬運(yùn)</b>實(shí)驗(yàn)案例

    電磁繼電器分為哪兩個電路

    電磁繼電器是一種利用電磁原理實(shí)現(xiàn)控制的電器,廣泛應(yīng)用于自動控制系統(tǒng)和遠(yuǎn)程控制系統(tǒng)中。它主要由電磁鐵、觸點(diǎn)系統(tǒng)和機(jī)械部件組成。
    的頭像 發(fā)表于 06-21 09:28 ?415次閱讀

    電磁繼電器的原理是什么?為什么要使用電磁繼電器?

    電磁繼電器是一種利用電磁原理實(shí)現(xiàn)控制和保護(hù)的電器元件。它主要由電磁鐵、觸點(diǎn)系統(tǒng)、彈簧等部分組成。電磁繼電器的工作原理是利用
    的頭像 發(fā)表于 06-21 09:24 ?962次閱讀

    基于FPGA EtherCAT的六自由度機(jī)器人視覺伺服控制設(shè)計(jì)

    ,在 PS層運(yùn)行 蘇姆的裸機(jī)程序, 并將六自由度串聯(lián)機(jī)器人逆解算法移植到主站代碼里,進(jìn)行機(jī)器人末端位置對于視覺反饋的實(shí)時跟隨控制。 (4)通過實(shí)驗(yàn)驗(yàn)證了本設(shè)計(jì)的對物塊識別的準(zhǔn)確性和實(shí)時性,并使用自主
    發(fā)表于 05-29 16:17

    Lake Shore 電磁鐵電源 643發(fā)生故障了如何維修

    Lake Shore電磁鐵電源643是一款高性能、高精度的電磁鐵電源設(shè)備,能夠滿足各種電磁鐵應(yīng)用的需求。其高精度控制、快速極性反轉(zhuǎn)和高可靠性等特點(diǎn),使其成為物理材料性能表征、磁學(xué)實(shí)驗(yàn)等領(lǐng)域的理想選擇
    的頭像 發(fā)表于 05-28 14:05 ?278次閱讀
    Lake Shore <b class='flag-5'>電磁鐵</b>電源 643發(fā)生故障了如何維修

    【科準(zhǔn)測控】電磁鐵力特性測試方法和設(shè)備介紹!

    最近,我們接到了一位客戶的咨詢,他們希望對電磁鐵進(jìn)行力-位移測試、力-電流測試以及響應(yīng)時間測試,以評估其在實(shí)際應(yīng)用中的表現(xiàn)。這種測試不僅可以幫助客戶了解電磁鐵在不同工作條件下的性能表現(xiàn),還能為他們
    的頭像 發(fā)表于 03-20 17:41 ?594次閱讀
    【科準(zhǔn)測控】<b class='flag-5'>電磁鐵</b>力特性測試方法和設(shè)備介紹!

    【先楫HPM5361EVK開發(fā)板試用體驗(yàn)】(原創(chuàng))5.手把手實(shí)戰(zhàn)AI機(jī)械

    工作。 安全措施:考慮到機(jī)械操作,務(wù)必實(shí)施必要的安全措施,例如限位開關(guān)、緊急停止功能等。 框架概述 初始化硬件:首先,您需要初始化開發(fā)板上的硬件資源,包括三組四自由度
    發(fā)表于 02-06 10:28

    電磁鐵磁鐵的區(qū)別 電磁鐵原理是電流的磁效應(yīng)嗎

    電磁鐵磁鐵是不同的物體,它們在原理、結(jié)構(gòu)和使用方法上都有所不同。 首先,讓我們來了解一下磁鐵磁鐵是一種可以產(chǎn)生磁場的物質(zhì),通常是由鐵、鎳、鈷等特定材料制成。根據(jù)其磁性特性的不同,
    的頭像 發(fā)表于 02-03 14:39 ?1363次閱讀

    【國產(chǎn)FPGA+OMAPL138開發(fā)板體驗(yàn)】(原創(chuàng))2.手把手玩轉(zhuǎn)游戲機(jī)械

    。但由于篇幅限制,下面是一個簡化的項(xiàng)目方案和步驟: (我會盡量逐行解釋關(guān)鍵部分的代碼。謝謝!) 1. 硬件連接與配置 首先,需要將TI OMAP-L138 FPGA處理器開發(fā)板、三組四自由度機(jī)械以及紅外
    發(fā)表于 02-01 20:18

    無線自由:探索AGV無線充電技術(shù)的自由度優(yōu)勢

    隨著技術(shù)的不斷進(jìn)步,電磁場模擬、智能化算法與物聯(lián)網(wǎng)技術(shù)的融合和集成,將進(jìn)一步擴(kuò)展AGV無線充電的自由度。無線充電不僅僅作為一種供能手段,更成為實(shí)現(xiàn)AGV高效、智能化運(yùn)營的核心部件。這些技術(shù)的結(jié)合,不僅推動自動引導(dǎo)車在各個行業(yè)中能
    的頭像 發(fā)表于 01-19 11:22 ?461次閱讀

    如何解決柔性機(jī)械建模過程問題

    的問題。 由于機(jī)械的截面相對于其長度而言很小,可以將柔性桿作為Euler-Bernouli梁,柔性機(jī)械可以視為一個具有無限自由度的連續(xù)系
    的頭像 發(fā)表于 11-17 17:12 ?784次閱讀

    自由度機(jī)械軌跡規(guī)劃仿真

    需要重新輸入“startup_rvc”回車來啟動這個工具箱。 本文所控對象為串聯(lián)六R機(jī)械,其具體尺寸參數(shù)見于代碼中的D-H表。 MATLAB代碼 % Modified DH % ABB robot
    的頭像 發(fā)表于 11-17 16:11 ?1151次閱讀
    六<b class='flag-5'>自由度</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>軌跡規(guī)劃仿真

    自由度機(jī)械三次多項(xiàng)式插值法

    串聯(lián)機(jī)械而言,軌跡規(guī)劃可以分為:關(guān)節(jié)空間軌跡規(guī)劃和笛卡爾空間軌跡規(guī)劃。關(guān)節(jié)空間軌跡規(guī)劃是把機(jī)器人的關(guān)節(jié)變量變換成跟時間的函數(shù),然后對角速度和角加速度進(jìn)行約束。 笛卡爾空間軌跡規(guī)劃是把機(jī)器人末端在
    的頭像 發(fā)表于 11-17 15:52 ?1039次閱讀
    六<b class='flag-5'>自由度</b><b class='flag-5'>機(jī)械</b><b class='flag-5'>臂</b>三次多項(xiàng)式插值法