查看: 35070|回復: 422
打印 上一主題 下一主題

[教程] 【原創】 drawbot平面關節scara機械臂寫字機 畫畫機器人直播...

  [復制鏈接]
  • TA的每日心情
    開心
    2018-9-21 15:12
  • 簽到天數: 8 天

    [LV.3]偶爾看看II

    跳轉到指定樓層
    樓主
    發表于 2018-9-12 15:57 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    本帖最后由 明娃子 于 2019-6-29 00:08 編輯

    這個項目上個月就在做了,結構和代碼反反復復改了多次,加上自己又太忙,一直沒來得及發帖分享。所以先立這個帖子吧,這兩天先打點零件出個組裝教程。
    打印件已全部放在
    thingiverse上 :
    游客,如果您要查看本帖隱藏內容請回復


    2018.9.29插樓更新
    新款筆夾測試,stl已更新,新增4mm*40mm光軸2根,8*4*10銅套2個。


    部分定制件不好購買,這里提供部分零件
    https://item.taobao.com/item.htm ... ibT&id=596224282726
    2018.11.27插樓更新
    Thingiverse上第6版固件已更新,新增自動調試功能,解決畫線不直問題。1.確保大小臂長度為200mm
    2.大臂與電機座側邊平行
    3.小臂與大臂呈45度角
    4.發送M700自動開始自動標定,數秒后自動標定完成
    2019.5.31插樓更新
    更新最新版上位機【機械臂大師】,后面附有連接,更多功能大家先自行摸索

    插樓結束


    大家可以先打,有什么建議可以提出,圖紙不斷更新中。
    暫時取名叫做drawbot吧,也想不出啥名字了。
    arduino中文論壇和貼吧同步直播,歡迎關注。
    簡介:
    桌面級scara機械臂,運動機構為兩個42步進電機和一個9g舵機,控制板為mega 2560 和ramps 1.4,其他部件主要為3D打印件,工作范圍為A4紙,使用國標G代碼,目前可以實現寫字畫畫功能。
    交流q群 791947714


    18.9.13 更新
    ---------------------機械安裝教程-------------------

    drawbot 所用零件除打印件和鋁管外均為標件,tb上都能買到。  打印件tb上也有代打的,當然也可以找我打。
    bom 表已整理完成,見下表。螺釘螺母數量可能不準確,建議多備幾顆。舵機線長度需要80cm,長度不夠的,需要自己接延長線。M8*55六角螺釘可用Φ8*40*M8 塞打螺釘代替,提高兩個驅動輪同軸度。
    鋁管長度為178mm  200mm(老款筆夾)  178mm 197mm(新款筆夾),bom中長度有誤,請注意。
    步進電機和限位開關線長度為40cm。

    18.9.17更新

    零件差不多齊了,忽略圖中的鉗子,開搞了



    舵機線不夠長的,先將線加長到80cm,在較長的一根鋁管一端裝上舵機支架,將舵機線穿入管內


    裝上舵機和筆夾,之前bom表漏掉了一個2mm*12mm光軸,可用鋼絲代替


    安裝連接件,M4*35螺釘需要兩個M4墊片,圖中未畫出



    安裝皮帶輪,提前套入同步帶,不要漏了


    限位開關為常閉型,如果買的常開型,自己改下線,接觸片朝下。


    有個螺孔被擋住了,3顆勉強固定,網上底座圖紙孔位已更新


    兩個M4螺釘反裝如圖,正裝轉動螺母會松


    插上電機線,裹上束線管,機械部分就算完成了


    附上全家福

    簡單測試下重復精度,晚點再更新電氣部分
    視頻如下
    https://tieba.baidu.com/p/5881812268?pid=122005283943&cid=0&red_tag=2023302554#122005283943
    https://gss3.baidu.com/6LZ0ej3k1Qd3ote6lo7D0j9wehsv/tieba-smallvideo-transcode/33_3724987122587fdcc04fb928eca2affe_1.mp4

    2018.9.19更新
    ---------------------調試教程-------------------
    4988驅動模塊安裝方向如圖所示,驅動模塊下方6個細分設置引腳全部短接。驅動模塊電流調節方法見
    http://www.diankeshequ.com/forum.php?mod=viewthread&tid=2003




    18.9.22更新
    需要使用的軟件主要如下

    Xloader固件燒錄軟件
    https://pan.baidu.com/s/1QR_wpkzYAFThaMymp68Hgg

    機械臂大師上位機
    鏈接:https://pan.baidu.com/s/1mu_-qLm5Fbt2HIe0oHoI1A  提取碼:q3v3

    G代碼生成軟件1 inkscape及相關插件
    https://pan.baidu.com/s/1dC-QIEEeyjRYqdUHBHABpw插件由aelab提供,大家覺得好用,可以購買他們的正版上位機,付費的自然好用的多,可以手機錄入字體,支持填表功能等,傳送門http://www.aelab.net

    G代碼生成軟件2 奎享雕刻綠色版
    鏈接:https://pan.baidu.com/s/1LBNSbfco1w0OKND0DE3ZPQ 提取碼:s2fu

    G代碼生成軟件3  laserGRBL,支持中文
    https://pan.baidu.com/s/1yDEdDrPJ07wWkfhLtU5nOg

    將mega2560連接電腦,選擇對應的端口,用xloader燒錄hex固件。


    打開機械臂大師,選擇對應端口連接

    出現如下返回值則連接成功。


    軟件界面介紹如下

    常用的控制指令如下。
    G1 X10 Y10   直線移動
    G28 回home點,每次開機后需要先回home點以確定機械臂位置
    G90 切換到絕對坐標系
    G91切換到相對坐標系
    G94切換到直角坐標系
    G95切換到到角度坐標系
    直角坐標系

    角度坐標系定義如下,紅線平行于電機座側邊


    M3 舵機落筆  轉到默認落筆角度
    M3 S15 舵機轉到15度
    M4 L10 T40  設置默認落筆角度為10 默認抬筆角度為40
    M5舵機抬筆  轉到默認抬筆角度M92 X48.8 Y48.8 設置電機分辨率,如果電機步進角是1.8°,16細分直接用出廠設置就行
    M203 X2000 Y2000  設置電機最大運動速度
    M201 X1000 Y1000 設置電機運動加速度
    M205 X0.8 電機運動平滑度 (下面介紹)
    M503 查看機械臂設置參數
    M501 載入用戶參數(保存到EEPROM的參數)
    M502 恢復出廠設置
    M500 保存用戶參數(保存到EEPROM)
    M370 將當面位置定義為坐標原點
    M700 自動標定
    所有參數修改后需用M500保存,否則重啟后數據會丟失


    首次連接后需要先發送M502恢復出廠設置,然后將機器擺成圖示角度,點擊自動標定按鈕,數秒后標定完成,然后發送M500指令保存設置
    1.大臂與電機座側邊平行
    2.小臂與大臂呈45度角



    發送G28回到HOME點,導入G代碼生成軟件導出的G代碼,就可以開始愉快的寫字了。寫字測試,由于抬筆結構為旋轉式抬筆,速度太快寫字會飄,后續考慮改結構,做成直上直下結構。

    18.9.23 更新

    新版筆架以設計好,晚點試試效果,沒問題就就上傳thingiverse


    新版筆夾已做好,新筆夾對打印機要求較高,光軸銅套不同心的話,滑動不順暢,準備再改善下,降低打印難度



    2018-10-16更新
    ---------------------代碼簡介-------------------控制板作為下位機,他的作用是解釋上位機發過來的G代碼,G代碼包含運動坐標值和一些控制指令,對于運動控制,下位機就是將G代碼轉換成步進電機的脈沖控制步進電機。這里比較關鍵的就是坐標正解反解函數,已知末端坐標值求出機械臂的角度,或已知機械臂的角度求出末端坐標值。
    大多數工業scara機械臂副臂控制電機位于主臂和副臂上,電機控制的大臂小臂之間的角度,屬于“相對”角度scara。如下圖


    和drawbot一樣的平行四邊形結構,副臂電機控制的副臂相對于世界坐標系的角度,即“絕對角度”scara


    通過同步帶傳送,將電機移動到固定底座上,也為“絕對角度”scara


    兩種結構運動算法稍微有點區別。marlin 自帶的scara算法屬于“相對角度”scara,這里容易被忽略。

    drawbot正解算法如下:

    kittenblock中小學創客名師推薦的圖形化編程軟件

    void calculate_SCARA_forward_Transform(float f_scara[3])
    {
        float x_sin, x_cos, y_sin, y_cos;
        x_sin = sin(f_scara[X_AXIS]/SCARA_RAD2DEG) * Linkage_1;
        x_cos = cos(f_scara[X_AXIS]/SCARA_RAD2DEG) * Linkage_1;
        y_sin = sin(f_scara[Y_AXIS]/SCARA_RAD2DEG) * Linkage_2;//當Y電機控制小臂相對于世界坐標系旋轉角度時使用此公式
        y_cos = cos(f_scara[Y_AXIS]/SCARA_RAD2DEG) * Linkage_2;//當Y電機控制小臂相對于世界坐標系旋轉角度時使用此公式
        delta[X_AXIS] = -x_cos - y_cos - SCARA_offset[X_AXIS];  //求得用戶坐標系下X值
        delta[Y_AXIS] = x_sin + y_sin - SCARA_offset[Y_AXIS];  //求得用戶坐標系下Y值
    }




    SCARA_RAD2DEG弧度角度轉換常數,即180/π。三角函數計算是弧度計算,所以所有角度需先轉換成弧度。通過三角函數關系算出x_sin  x_cos  y_sin y_cos.
    則圖中黃色向量表示世界坐標系下的末端位置,(-x_cos - y_cos,x_sin + y_sin ) 。再減去用戶坐標偏移SCARA_offset,得到用戶坐標系下的末端坐標值。

    drawbot反解算法如下:

    kittenblock中小學創客名師推薦的圖形化編程軟件

    void calculate_delta(float cartesian[3]){
    
    
     float SCARA_pos[2];
      static float SCARA_C2, SCARA_S2, SCARA_K1, SCARA_K2, SCARA_theta, SCARA_psi; 
    
      SCARA_pos[X_AXIS] = -cartesian[X_AXIS] - SCARA_offset[X_AXIS];  //求世界坐標系下X值并取反
      SCARA_pos[Y_AXIS] = cartesian[Y_AXIS] + SCARA_offset[Y_AXIS];  //求世界坐標系下Y值
    
      SCARA_C2 =   ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2 ) /(2*Linkage_1*Linkage_2);
    
      SCARA_S2 = sqrt( 1 - sq(SCARA_C2) );
      SCARA_K1 = Linkage_1 + Linkage_2 * SCARA_C2;
      SCARA_K2 = Linkage_2 * SCARA_S2;
    
      SCARA_theta = ( atan2(SCARA_K1, SCARA_K2)-atan2(SCARA_pos[X_AXIS],SCARA_pos[Y_AXIS]) ) ;//大臂旋轉角度,即主臂與-X軸夾角
    
      SCARA_psi   =   atan2(SCARA_S2,SCARA_C2) + SCARA_theta;//小臂旋轉角度,當Y電機控制小臂相對于世界坐標系旋轉角度時使用此公式
    
      delta[X_AXIS] = SCARA_theta * SCARA_RAD2DEG; //大臂旋轉角度轉換為弧度
      delta[Y_AXIS] = SCARA_psi * SCARA_RAD2DEG;   //小臂旋轉角度轉換為弧度
    
    }
    }


    cartesian[X_AXIS][Y_AXIS]為用戶坐標系下坐標值,加上SCARA_offset得到世界坐標系下坐標值。
    其中SCARA_pos[X_AXIS]向量方向向右,與原坐標值X方向相反,故取反。
    #define L1_2 sq(Linkage_1)
    #define L2_2 sq(Linkage_2)
    L1_2   L2_2是預先定義好的臂長的平方
    則直線AB距離的平方為 sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]
    三角形ABC中,現已知三邊長度,由余弦定理推出 cosC=(a^2+b^2-c^2)/2ab
    α的補角為
    arccos  [  (  (float)L1_2 + (float)L2_2- sq(SCARA_pos[X_AXIS]) - sq(SCARA_pos[Y_AXIS]) ) /(2*Linkage_1*Linkage_2)  ]//這里是偽代碼,C語言沒有arccos函數
    SCARA_C2為補角的cos值得取反
    SCARA_C2 =   ( sq(SCARA_pos[X_AXIS]) + sq(SCARA_pos[Y_AXIS]) - (float)L1_2 - (float)L2_2 ) /(2*Linkage_1*Linkage_2);

    將α  cos值轉換為sin值
    SCARA_S2 = sqrt( 1 - sq(SCARA_C2) );

    根據三角函數關系求出  SCARA_K1   SCARA_K2
    由圖可知
    SCARA_theta +δ+β =π/2
    δ+γ =π/2

    SCARA_theta =γ-β = ( atan2(SCARA_K1, SCARA_K2)-atan2(SCARA_pos[X_AXIS],SCARA_pos[Y_AXIS]) )
    SCARA_psi = α+SCARA_theta = atan2(SCARA_S2,SCARA_C2) + SCARA_theta

    乘上弧度角度轉換因子得出大小臂角度值
    delta[X_AXIS] = SCARA_theta * SCARA_RAD2DEG
    delta[Y_AXIS] = SCARA_psi * SCARA_RAD2DEG
    2018.12.18更新
    運動平滑度參數設置補充說明,運動平滑度就是工業機器人中的CNT值,因為速度不可以瞬間改變,折線運動中,如果準確運動到折點,折點速度為0,速度為很慢,所有用一條弧線代替折線,兩條線的加速度梯形相交,設定值即為相交點的速度,設置越大,速度越快,路徑被倒成的圓角也就越大。




















    PY讓世界更美好~

    4人打賞

    該用戶從未簽到

    來自 55#
    發表于 2018-10-2 12:42 | 只看該作者
    雖然裝慢不過總算完成架子,可以要固件去了。。  [email protected]

  • TA的每日心情
    奮斗
    2019-7-1 17:07
  • 簽到天數: 24 天

    [LV.4]偶爾看看III

    來自 66#
    發表于 2018-10-6 12:16 | 只看該作者
    [email protected]

    謝謝大佬

    _03K8EHOGVKDTY0(_KOXC.jpg (71.82 KB, 下載次數: 127)

    1

    1

    90H7EU3`]SQ}[email protected] (80.57 KB, 下載次數: 106)

    2

    2

    該用戶從未簽到

    來自 93#
    發表于 2018-10-15 18:58 | 只看該作者
    感謝分享,好人一生平安
    [email protected]

    xiezishou.jpg (523.92 KB, 下載次數: 93)

    xiezishou.jpg
  • TA的每日心情
    無聊
    2017-1-6 13:37
  • 簽到天數: 1 天

    [LV.1]初來乍到

    來自 104#
    發表于 2018-10-24 14:59 | 只看該作者
    本帖最后由 傾音聽雪 于 2018-10-24 15:10 編輯

    大佬求固件[email protected]

    該用戶從未簽到

    來自 105#
    發表于 2018-10-24 15:04 | 只看該作者
    謝謝[email protected]

    微信圖片_20181024150216.jpg (323.62 KB, 下載次數: 111)

    微信圖片_20181024150216.jpg

    該用戶從未簽到

    來自 108#
    發表于 2018-10-24 20:40 來自手機 | 只看該作者
    求大佬給固件~

    IMG_20181024_204018.jpg (73.04 KB, 下載次數: 107)

    IMG_20181024_204018.jpg
  • TA的每日心情
    慵懶
    2018-8-31 10:36
  • 簽到天數: 36 天

    [LV.5]常住居民I

    沙發
    發表于 2018-9-12 16:03 | 只看該作者
    關注一下,能發打印件的圖紙嗎?
  • TA的每日心情
    開心
    2019-9-2 09:02
  • 簽到天數: 327 天

    [LV.8]以壇為家I

    5#
    發表于 2018-9-12 17:43 | 只看該作者
    不錯哦!  居然是粉色。
    打賞作者鼓勵一下!
  • TA的每日心情
    開心
    2018-9-21 15:12
  • 簽到天數: 8 天

    [LV.3]偶爾看看II

    6#
     樓主| 發表于 2018-9-12 23:02 | 只看該作者
    歷史中的一粒塵埃 發表于 2018-9-12 16:03
    關注一下,能發打印件的圖紙嗎?

    上面有圖紙連接
    PY讓世界更美好~
  • TA的每日心情
    奮斗
    2019-4-1 17:25
  • 簽到天數: 7 天

    [LV.3]偶爾看看II

    8#
    發表于 2018-9-13 20:28 | 只看該作者
    不錯,好東西,好好學習下!
  • TA的每日心情
    擦汗
    2019-1-26 16:31
  • 簽到天數: 446 天

    [LV.9]以壇為家II

    9#
    發表于 2018-9-13 22:10 | 只看該作者
    可以開通下打賞功能哈
    http://www.keeogv.icu/thread-31092-1-1.html
    PY讓世界更美好~
  • TA的每日心情
    開心
    2018-9-21 15:12
  • 簽到天數: 8 天

    [LV.3]偶爾看看II

    10#
     樓主| 發表于 2018-9-16 00:13 | 只看該作者
    syl312 發表于 2018-9-13 22:10
    可以開通下打賞功能哈
    http://www.keeogv.icu/thread-31092-1-1.html

    謝謝大佬
    PY讓世界更美好~

    1人打賞

    您需要登錄后才可以回帖 登錄 | 立即注冊  

    本版積分規則

    熱門推薦

    【Arduino】108種傳感器模塊系列實驗(104)---MAX30102手腕心率
    【Arduino】108種傳感器模
    37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是
    萌新報道 剛購買了一個watchx
    萌新報道 剛購買了一個wat
    就這貨 但是網上讓下載庫 我點加載以后他提示沒法用。。 求大神幫忙 謝謝了
    【Arduino】108種傳感器系列實驗(15)---手指偵測心跳傳感...
    【Arduino】108種傳感器系
    37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是
    【原創】全球最小口袋3D打印機mini one直播教程貼
    【原創】全球最小口袋3D打
    最近閑得蛋疼,沒事搞個掌上3D打印機,先放效果圖吧。 搞了半天,終于能正常打印,
    求助!GM65二維碼掃描模塊怎么用?
    求助!GM65二維碼掃描模塊
    求助!GM65二維碼掃描模塊怎么用? 賣家給的資料真的看不懂該怎么弄。。( ̄▽ ̄)~*
    Copyright   ©2015-2016  Arduino中文社區  Powered by©Discuz!   ( 蜀ICP備14017632號-3 )
    快速回復 返回頂部 返回列表
    六肖六码中特