精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開發一個控制和編程機械臂的項目

科技觀察員 ? 來源:hackster.io ? 作者:hackster.io ? 2022-08-08 15:20 ? 次閱讀

讓我們逐步開發一個控制和編程機械臂的項目,模擬工業機器人的基本功能。

poYBAGLwuOiAV374AAUyoLNKlHM642.png

第 1 步:規格

pYYBAGLwuOSAJ-y8AAIglmarYXc611.png

機器人有兩個基本功能:

程序:記錄三個維度的手臂位置(每個記錄是一個“步驟”)

運行:依次執行“程序”中記錄的位置。機器人將運行程序,直到使用命令“ABORT”。

主要特征:

該項目可用于控制具有 3 或 4 DOF(“自由度”)的機器人。

機器人可以在“本地”和“遠程”模式下控制(最后一個通過 Android 設備)

在程序階段,用戶可以將控制模式從“LOCAL”更改為“REMOTE”,反之亦然。

將通過彩色 LED、2 行 LED 顯示屏和聲音(蜂鳴器)向用戶提供信息

聲音警報也可以遠程觸發。

第 2 步:項目

poYBAGLwuOCAeU1PAAZQhuvKHCw819.png

上一步的框圖顯示了將在此項目中使用的“材料清單”。

我選擇了 Arduino MEGA,以免擔心可用的 Arduino 端口 (I/O) 的數量。例如,UNO 可以正常工作,但應使用端口擴展方法。有幾個選項可以在 Internet 上輕松找到,例如 74138 解碼器。

關于藍牙網絡,這個項目使用的是 HC-06。

用于“ remote mode”的Android應用程序是使用MIT Appinventor2工具開發的,該工具是基于Android設備的此類應用程序的強大單一平臺。

第 3 步:開發

pYYBAGLwuNyADfFsAAFF9SWM_1U945.png

機械臂可以根據它們擁有的“關節”或“自由度”(DOF)的數量進行分類。

“底座”或“腰部”通常可以將手臂轉動 180o 或 360o,具體取決于所使用的伺服類型(在此項目中,使用了 180o 伺服)。

“肩”,負責垂直“抬高或降低”手臂。

“肘”將使手臂“向前或向后”。

“爪”或“抓手”通過打開或關閉來“抓取東西”。

第 4 步:電路

poYBAGLwuNeAFEGUAAJft18kdmc164.png

上圖顯示了完整的電路。

伺服電機將用于驅動關節,直接連接到 Arduino。請注意,在底座上使用“步進電機”以獲得更大的扭矩和精度并不少見。舵機的正確選擇非常重要。

舵機的直流電源應與 Arduino 和其他組件分開。5 或 6V 的外部電源應該可以正常工作(檢查伺服器的數據表以驗證正確的電壓范圍)。一種常見的做法是在 VCC 和 GND 之間使用 470uF 電容器,以最大限度地減少伺服器內部直流電機產生的噪聲。確保連接所有“接地”(外部電源與 Arduino GND 引腳)。

如果伺服系統有問題并且振動很大,請在代碼的“延遲”處進行調整。重要的是,伺服系統在接收新命令之前有時間到達某個點。同樣值得檢查的是舵機是數字的還是模擬的,就好像它們在機械上相似,數字的工作頻率為 300Hz,而模擬的工作頻率為 50Hz。標準 Arduino 庫“ Servo.h”是為模擬舵機開發的,必要時可以進行修改,以便更好地使用數字舵機。

第 5 步:代碼

這個項目并不復雜,但它有很多變數。最謹慎的做法是明確定義它們并將備注留在唯一的文件中:

ArmDefine.h

該文件還應設置最小、最大和初始伺服角度。本文中包含的代碼有兩組參數,用于我在項目中測試的機械臂(當然應該只使用一組常量):

// MeArm 4-DOF

#define minGrip 15
#define minBase 0
#define minShou 60
#define minElbw 60
#define maxGrip 45
#define maxBase 170
#define maxShou 180
#define maxElbw 150
#define midGrip 30
#define midBase 87
#define midShou 138
#define midElbw 100
/* SS 3-DOF
#define minGrip 75
#define minBase 5
#define minShou 5
#define minElbw 0
#define maxGrip 125
#define maxBase 150
#define maxShou 155
#define maxElbw 0
#define midGrip 100
#define midBase 90
#define midShou 90
#define midElbw 0
*/

每種類型的手臂都有一組不同的參數,重要的是找到適合自己的。我的建議是,最初電位器(電位器)保持在其中點,PWM 輸出的映射設置為默認值:Max = 255和Min = 0(Mid = 126上面的“ #defines”)。然后,開始改變電位器(一個接一個)并在串行監視器(或 LCD)中跟蹤手臂正常工作的最小值和最大值。這些將是用于設置的最終值(將我的原始值更改為ArmDefine.h).

為了“記錄”機器人應該播放的坐標(或步數)集,我將使用數據數組:

int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0; // Index to be used at position array used for recorded tasks

請注意,我沒有保留“存儲”位置,并且在“機器人”程序結束時,索引回到零,機器人將等待新序列的記錄(程序丟失)。或者,您可以將這些數據陣列保存在 Arduino EEPROM 中。這樣做程序將被再次執行,甚至您可能擁有多個存儲的程序。

第 6 步:程序邏輯

主塊(“循環”)非常簡單:

檢查是否使用了執行“程序”(步驟序列)的命令。

如果是這樣,請運行它。

否則,“程序”是不完整的,仍然必須編寫新的步驟。

如果定義了“新位置”,請將其添加到程序中。

首先,檢查來自 Android 設備的到達串行緩沖區的消息。

接下來,驗證控制模式是“本地”還是“遠程”(默認為本地)。

回到開頭并再次執行步驟 1。

void loop ()

{
checkBTcmd ();
defineLocalRemote () ;
execTaskCmd = digitalRead (execTaskPin);
if (execTaskCmd == || HIGH command == "runon")
{
RunProgram () ;
}
else recArmPosition () ;
command = "";
}

函數checkBTcmd()使用來自 BT 模塊的單個字符組裝一個字符串。這個字符串被傳遞給變量“ command ”。

函數defineLocalRemote()考慮變量“ command ”檢查是否接收到將模式更改為遠程的命令,反之亦然。報警命令也在這里分析。對于程序邏輯,如果在Android設備中觸發了“Alarm”,則arm一定要進入Remote模式。

函數RunProgram()執行準備工作,打開/關閉 LED 等,特別是調用函數:ExecuteTask()。后者是包含步驟序列的執行邏輯的函數。該函數使用工具將位置數據發送到手臂的“位置索引”增加: armPosition(grip, base, Shoulder, E肘)。

最后,真正指揮舵機并編寫“步驟”的函數是recArmPosition()。根據接收到的 Android 命令,該函數將定義舵機的定位,可以通過罐子,也可以通過 Android 應用程序的“滑塊”。隨著每個位置的變化,此功能使用功能(握把、底座、肩部、肘部)將坐標發送到伺服系統。armPosition在觸發“SAVE”或“PROGRAM”命令時,會讀取電位器或滑塊的實際位置以及相應的伺服激活。在那一刻,數組的位置索引增加并存儲步驟。

為了簡化理解,所有的代碼都是基于它的特定功能。“ Setup”、“ Loop”和上面描述的函數幾乎都在文件:MJRoBot_Arm_Robot_Task_Prgm.ino 中,并可在本文下方找到。

更通用的函數如讀取 BT 命令:void checkBTcmd();聲音發生器:void beep(int pin,int freq,long ms)和去抖:boolean debounce(int pin);存檔:General_Functions.ino

一個重要的事實:由于 Arduino 基于 16Mhz 時鐘執行指令,預計控制按鈕每秒讀取數百甚至數千次,因此制作一個設置記錄步驟的“去抖動”按鈕很重要。

第四個也是最后一個文件是:Arm_Ctrl_and_Display.ino

在這個文件中是電位器的讀取函數:bool readPotenciometers() ; 讀取 Android 滑塊:bool readSliders() ; 伺服系統的放置:void armPosition (int gripp, int basee, int肩部, 肘部 int)。文件中包含的其他功能是用于 LCD 上的數據顯示、串行監視器、警報等。

第 7 步:結論

一如既往的是,我希望這個項目可以幫助其他人在電子、機器人和物聯網的激動人心的世界中找到自己的道路!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制
    +關注

    關注

    4

    文章

    1010

    瀏覽量

    122628
  • 編程
    +關注

    關注

    88

    文章

    3592

    瀏覽量

    93596
  • 機械臂
    +關注

    關注

    12

    文章

    509

    瀏覽量

    24493
收藏 人收藏

    評論

    相關推薦

    基于LabVIEW和SolidWorks改進機械的設計流程

    和移動殘骸、檢查車輛車盤和完成大部分現在使用的機器人所無法完成的其他任務。這就是約束區域機器人手臂(CARMA)開發。 CARMA機械成品  將這個項目作為提高設計流程效率并大幅擴展
    發表于 02-12 15:56

    開源工業機械開發套件

    `、產品介紹: 小型四軸碼垛工業機器人是由款桌面級四軸開源迷你機器組成,配合本系統的二軸或者單軸機械爪可組成六軸或五軸機器人,采用鋁合金材質鑄造,步進電機伺服
    發表于 10-23 11:26

    開源工業增強型機械

    通信軟件設計及開發10、工業機械的圖形化編程軟件的應用及開發11、工業機械
    發表于 10-23 11:29

    【NanoPi M2申請】六軸機械控制開發

    申請理由:隨著工業機械的普及應用,現在機械運行動作單控制操作難度大已不滿足現代工業的生產
    發表于 04-27 16:16

    【Pocket-RIO申請】采用labview與FPGA的多自由度機械快速控制系統原型開發

    項目名稱:采用labview與FPGA的多自由度機械快速控制系統原型開發試用計劃: 機械
    發表于 12-19 15:30

    【FPGA開發項目連載】Gowin Minstar做機械視覺處理的機械

    項目本來設想是使用高云 ministar 開發板。制做5640攝像頭模塊的圖像處理并使用高云 ministar內嵌ARM硬核處理器做機械控制
    發表于 05-11 21:48

    眾為興SCARA四軸機械編程概述

    眾為興SCARA四軸機械編程)概述方案原理功能實現通訊功能機械
    發表于 07-20 07:45

    機械控制學習

    機械控制-------------控制器1.位置控制機器人最傳統,最常用的控制方式就是位置
    發表于 02-23 07:49

    【CW32飯盒派開發板試用體驗】+機械游戲項目(開源)(5)加紅外游戲操控機

    接上幾篇: 【CW32飯盒派開發板試用體驗】+機械游戲項目(開源)(1)開箱試驗舵機 - 武漢芯源MCU - 電子技術論壇 - 廣受歡迎的專業電子論壇! 【CW32飯盒派
    發表于 05-24 22:27

    dfrobotArduino開發實戰-遙控機械套裝簡介

    遙控機械套裝,本套裝可以通過Arduino編程控制桌面機械
    的頭像 發表于 11-29 17:19 ?2487次閱讀
    dfrobotArduino<b class='flag-5'>開發</b>實戰-遙控<b class='flag-5'>機械</b><b class='flag-5'>臂</b>套裝簡介

    使用 Python 和可視化編程控制樹莓派機械myCobot

    進行編程,簡單易用,功能豐富。適合那些有興趣學習如何對機械進行編程控制項目開發的人。 myC
    的頭像 發表于 11-30 14:56 ?5023次閱讀
    使用 Python 和可視化<b class='flag-5'>編程控制</b>樹莓派<b class='flag-5'>機械</b><b class='flag-5'>臂</b>myCobot

    控制機械開源

    電子發燒友網站提供《人控制機械開源.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>開源

    如何完成機械的運動控制模塊

    使用桌面型的六軸機械,在機械的末端安裝
    的頭像 發表于 02-10 16:07 ?1681次閱讀
    如何完成<b class='flag-5'>機械</b><b class='flag-5'>臂</b>的運動<b class='flag-5'>控制</b>模塊

    構建簡單的機械

    電子發燒友網站提供《構建簡單的機械.zip》資料免費下載
    發表于 06-14 14:55 ?0次下載
    構建<b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的<b class='flag-5'>機械</b><b class='flag-5'>臂</b>

    自然語言控制機械:ChatGPT與機器人技術的融合創新(下)

    和Google的Speech-to-text服務,以及我們是如何通過pymycobot模塊來控制機械的。通過將自然語言處理和機械
    的頭像 發表于 04-11 15:54 ?809次閱讀
    自然語言<b class='flag-5'>控制</b><b class='flag-5'>機械</b><b class='flag-5'>臂</b>:ChatGPT與機器人技術的融合創新(下)