<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

【開源獲獎案例】四軸機械臂控制系統

迪文智能屏 ? 2023-12-23 08:13 ? 次閱讀

——來自迪文開發者論壇
本期為大家推送迪文開發者論壇獲獎開源案例——四軸機械控制系統。工程師采用T5L智能屏,基于DGUS軟件“旋轉指示”控件實現機械臂的實時位置顯示,并通過串口控制機械臂的運動過程。不同以往只展示機械臂的角度數值,該方案可以實現在屏幕上實時顯示機械臂的旋轉狀態。除此之外,工程師還增加了機械臂自動運動功能。


UI素材展示 UI素材可根據實際的應用進行多樣化的設計,工程師設計了一套富有科技感的界面。

130ef98a-a128-11ee-9788-92fbcf53809c.png

1319f4a2-a128-11ee-9788-92fbcf53809c.png

UI開發示例 1324131a-a128-11ee-9788-92fbcf53809c.png C51代碼設計

(1)獲取機械臂當前控制的角度:

//獲取機械臂狀態
void get_arm_config_status(){ u8 i = 0; for(i = 0;i < 4;i++) ???{ ???????arm_angle_value[i] = Read_Dgus(0x1100 + i * 2); ???????//Write_Dgus(0x1110 + i * 2, Va[i]); ???}}

(2)機械臂的運動過程設計:使機械臂根據設置的角度,緩慢移動到指定位置。

//設置機械臂角度
void set_arm_angle(){ int i = 0; for(i = 0;i < 4;i++) ?

{ if(arm_angle_value[i] != arm_angle_value_last[i])

{ if(arm_angle_value[i] < arm_angle_value_last[i]) ?????????

{ arm_angle_value_last[i]--; }

else

{ arm_angle_value_last[i]++; }

Write_Dgus(0x1110 + i * 2, arm_angle_value_last[i]); if(i == 1) //第二軸運動

{ u16 armiii_pos_x = 0; u16 armiii_pos_y = 0; u16 armiv_pos_x = 0; u16 armiv_pos_y = 0; armiii_pos_x = sin((float)(225 - arm_angle_value_last[i]) * TRIGONOMETRIC) * 80 + armii_start_pos[0]; armiii_pos_y = cos((float)(225 - arm_angle_value_last[i]) * TRIGONOMETRIC) * 80 + armii_start_pos[1]; armiv_pos_x = sin((float)(180 - arm_angle_value_last[i+1]) * TRIGONOMETRIC) * 83 + armiii_pos_x; armiv_pos_y = cos((float)(180 - arm_angle_value_last[i+1]) * TRIGONOMETRIC) * 83 + armiii_pos_y; armiii_current_pos[0] = armiii_pos_x; armiii_current_pos[1] = armiii_pos_y; OneSendData4(armiii_pos_x/256); OneSendData4(armiii_pos_x%256); OneSendData4(armiii_pos_y/256); OneSendData4(armiii_pos_y%256); Write_Dgus(0x2100 + 4, armiii_pos_x); //第三軸的位置 Write_Dgus(0x2100 + 5, armiii_pos_y); Write_Dgus(0x2200 + 4, armiv_pos_x); //第三軸的位置 Write_Dgus(0x2200 + 5, armiv_pos_y); }

else if(i == 2)

{ u16 armiv_pos_x = sin((float)(180 - arm_angle_value_last[i]) * TRIGONOMETRIC) * 83 + armiii_current_pos[0]; u16 armiv_pos_y = cos((float)(180 - arm_angle_value_last[i]) * TRIGONOMETRIC) * 83 + armiii_current_pos[1]; Write_Dgus(0x2200 + 4, armiv_pos_x); //第三軸的位置 Write_Dgus(0x2200 + 5, armiv_pos_y);

} break;

} }}(3)按鍵設計:開發者設計了復位、添加、刪除、開始、停止按鍵功能//獲取按鍵狀態
void get_key_status(u16 addr){ u16 Va=Read_Dgus(addr); //u16 V1=Read_Dgus(0x0f01); if(Va != 0x0000)

{ if(Va == 0x0001) //復位

{ Write_Dgus(0x1100 + 0, 0); Write_Dgus(0x1100 + 2, 0); Write_Dgus(0x1100 + 4, 0); Write_Dgus(0x1100 + 6, 90); }

else if(Va == 0x0002) //添加

{ if(arm_auto_cnt < 5) ???????????{ ???????????????u8 i = 0; ???????????????u8 send_str[30] = {0}; ???????????????for(i = 0;i < 4;i++) ???????????????{ ???????????????????arm_auto_list[arm_auto_cnt][i] = arm_angle_value[i]; ???????????????} ???????????????sprintf(send_str, "I:%d II:%d III:%d IV:%d", arm_auto_list[arm_auto_cnt][0], arm_auto_list[arm_auto_cnt][1], arm_auto_list[arm_auto_cnt][2], arm_auto_list[arm_auto_cnt][3]); ???????????????write_dgus_vp(0x1500 + 0x20 * arm_auto_cnt, send_str, 16); ???????????????arm_auto_cnt++; ???????????} ???????}?

else if(Va == 0x0003) //開始 { auto_start_flag = 1; auto_start_cnt = 0; }

else if(Va == 0x0004) //停止 { auto_start_flag = 0; Write_Dgus(0x1100 + 0, arm_angle_value_last[0]); Write_Dgus(0x1100 + 2, arm_angle_value_last[1]); Write_Dgus(0x1100 + 4, arm_angle_value_last[2]); Write_Dgus(0x1100 + 6, arm_angle_value_last[3]); }

else if(Va >= 0x0010 && Va <= 0x0014) //刪除內容 ???

{ u16 delete_select = Va - 0x0010; if(arm_auto_cnt > delete_select) //有刪除的內容

{ u8 i = 0; u8 send_str[30] = {0}; for(i = delete_select;i < arm_auto_cnt - 1;i++) ???????????????{ ???????????????????memcpy(arm_auto_list[i], arm_auto_list[i + 1], 8); ???????????????} ???????

memset(arm_auto_list[i], 0, 8); for(i = delete_select;i < arm_auto_cnt - 1;i++) ?????????????

{ sprintf(send_str, "I:%d II:%d III:%d IV:%d\0", arm_auto_list[i][0], arm_auto_list[i][1], arm_auto_list[i][2], arm_auto_list[i][3]); write_dgus_vp(0x1500 + 0x20 * i, send_str, 16); } memset(send_str, 0, 30); write_dgus_vp(0x1500 + 0x20 * i, send_str, 16); arm_auto_cnt--; } } Write_Dgus(addr, 0); }}(4)機械臂自動運動功能//自動運動
void auto_run(){ if(auto_start_flag == 1 && arm_auto_cnt >= 2) //動作必須兩個及以上 { if(memcmp(arm_angle_value, arm_auto_list[auto_start_cnt], 8) != 0) //不等于

{ Write_Dgus(0x1100 + 0, arm_auto_list[auto_start_cnt][0]); Write_Dgus(0x1100 + 2, arm_auto_list[auto_start_cnt][1]); Write_Dgus(0x1100 + 4, arm_auto_list[auto_start_cnt][2]); Write_Dgus(0x1100 + 6, arm_auto_list[auto_start_cnt][3]); }

else if(memcmp(arm_angle_value_last, arm_auto_list[auto_start_cnt], 8) == 0) //當前運動等于目標

{ auto_start_cnt++; if(auto_start_cnt >= arm_auto_cnt)

{ auto_start_cnt = 0; } } }}

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

    關注

    41

    文章

    5979

    瀏覽量

    109045
  • 冗余機械臂
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1070
  • 智能屏幕
    +關注

    關注

    0

    文章

    53

    瀏覽量

    3040
收藏 人收藏

    評論

    相關推薦

    開源獲獎案例】智能貓糧控制系統

    本期為大家推送迪文開發者論壇的獲獎開源案例:智能貓糧控制系統。工程師使用迪文智能屏實現了監測貓糧的溫度、濕度、余量,保存貓咪吃糧記錄等功能,并別出心裁的設計了一套水墨畫風格UI,以及手指觸摸時的水墨點擊效果,增強觸摸的視覺反饋。
    的頭像 發表于 09-16 08:30 ?397次閱讀
    【<b class='flag-5'>開源</b><b class='flag-5'>獲獎</b>案例】智能貓糧<b class='flag-5'>控制系統</b>

    嵌入式系統和CAN總線的檢修機械控制系統

    的特殊性,所以對機械整個控制系統的可靠性提出了更高的要求,這就需要良好的硬件電路設計、功能更強大的微處理器和更好的軟件實現方法。本文以蒸汽發生器六自由度檢修機械
    發表于 09-29 17:02

    嵌入式系統和CAN總線的檢修機械控制系統

    工具,即可根據需要對蒸汽發生器實施不同程度的維護?! ∮捎谠?b class='flag-5'>機械的工作環境的特殊性,所以對機械整個控制系統的可靠性提出了更高的要求,這就
    發表于 09-29 17:07

    基于LabVIEW的自由度機械運動控制系統設計

    實行位置伺服和編碼器反饋,對直流電機利用線性電位器反饋電壓的方式實現了角度的反饋控制。借助LabVIEW8.2 的強大功能,我們得以在短時間內完成了控制系統的開發,同時保證了機械的運
    發表于 02-12 16:10

    開源工業機械開發套件

    `一、產品介紹: 小型碼垛工業機器人是由一款桌面級開源迷你機器組成,配合本
    發表于 10-23 11:26

    開源工業增強型機械

    `一、產品介紹: 碼垛機器人是一套開源化的碼垛機器人,其設計特點為:速度快,成本低,超長的運行時間,便攜化的圖形化編程
    發表于 10-23 11:29

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

    系統控制機械控制開發系統,這樣可實現由物聯網對機械
    發表于 04-27 16:16

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

    項目名稱:采用labview與FPGA的多自由度機械快速控制系統原型開發試用計劃: 機械在自動化工業中廣泛應用,由于每個自由度都有一對驅
    發表于 12-19 15:30

    #開箱體驗#開源機械開箱

    本帖最后由 雨落長安 于 2017-7-17 16:42 編輯 開源機械開箱體驗一直以來,我對機械都比較感興趣,時常在網絡上搜尋有
    發表于 07-17 16:42

    采用LabVIEW實現自由度機械運動控制系統設計

    LabVIEW8.2的強大功能,我們得以在短時間內完成了控制系統的開發,同時保證了機械的運動精度與負載能力。自由度機械
    發表于 05-06 09:26

    眾為興SCARA機械編程概述

    眾為興SCARA機械編程(一)概述方案原理功能實現通訊功能機械編程整體結構參考代碼要點概
    發表于 07-20 07:45

    機器人系統控制需求簡介

    第二章 機器人系統控制需求簡介2.1 工業機器人的系統組成機械本體:精密減速機、伺服電機、伺服驅動器、控制系統(核心零部件)
    發表于 09-08 07:44

    工業機械的相關資料推薦

    本章小結第三章機械控制系統介紹3.1 基于Arduino控制伺服電機系統3.1.1 機械
    發表于 11-29 07:19

    基于單片機的三機械控制怎么實現

    文章目錄三機械控制原理三機械接線三
    發表于 12-13 07:14

    如何對基于STM32的三機械控制器進行調試呢

    如何對三機械控制電路讀取肩部角度編碼器ST-3806-15-RS數據進行調試呢?如何對三機械
    發表于 12-14 07:12
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>