王銘 姚澤穎 許超帥 劉野 王艷會
摘 ?要:為解決機器人在繪畫領(lǐng)域中存在的價格高、結(jié)構(gòu)復(fù)雜、繪畫區(qū)域有限的問題,文章設(shè)計了一種基于Arduino的豎直平面二維繪圖機器人,旨在讓機器人更好地應(yīng)用于繪畫設(shè)計領(lǐng)域。該設(shè)計的優(yōu)勢在于電控部分與機械部分可拆卸不受繪圖區(qū)域大小的影響。同時,文章對機器人的軟硬件選擇、程序設(shè)計以及機器人本體結(jié)構(gòu)進行詳細的介紹。
關(guān)鍵詞:Arduino;processing軟件;矢量作圖
中圖分類號:TP242 ? ? ? ? 文獻標志碼:A ? ? ? ? 文章編號:2095-2945(2019)13-0052-02
Abstract: In order to solve the problems of high price, complex structure and limited painting area of robot in the field of painting, a vertical plane two-dimensional drawing robot based on Arduino is designed in this paper, in order to make the robot better applied in the field of painting design. The advantage of this design is that the detachable parts of the electronic control part and the mechanical part are not affected by the size of the drawing area. At the same time, the software and hardware selection, program design and robot body structure of the robot are introduced in detail in this paper.
Keywords: Arduino; processing software; vector mapping
引言
隨著計算機及其智能硬件的飛速發(fā)展,人們在生活和生產(chǎn)過程中越來越多使用機器人來代替人類的工作。繪圖機器人在裝飾設(shè)計、素材創(chuàng)作、教育教學(xué)、文化娛樂等方面的應(yīng)用愈加廣泛。本文設(shè)計的繪圖機器人克服了傳統(tǒng)繪圖設(shè)備價格高、結(jié)構(gòu)復(fù)雜、繪圖區(qū)域有限的難題,具有成本低、結(jié)構(gòu)簡單、尺寸大小可調(diào)節(jié)、繪圖性能好的特點,具有十分重要的現(xiàn)實意義和市場價值。
1 系統(tǒng)結(jié)構(gòu)設(shè)計
繪圖機器人是由懸吊牽引部分、機電控制部分、數(shù)據(jù)通信部分組成。上位機選取相應(yīng)的圖片并加載到控制部分,控制部分由Arduino mega2560承擔(dān),Arduino mega2560接收圖片像素信息后,解析為驅(qū)動電機的Dir信號和Step信號,由I/O口控制A4988,驅(qū)動左右兩部步進電機轉(zhuǎn)動。通過兩部步進電機的正反轉(zhuǎn)動作,帶動懸吊牽引部分按照設(shè)定的圖片效果完成繪圖。系統(tǒng)結(jié)構(gòu)如圖1所示。
2 機械部分設(shè)計
繪圖機器人的機械部分主要由畫筆支持部分和懸吊牽引部分組成。畫筆支撐部分相當于機器人的手掌, 是一種用來固定畫筆的裝置。畫筆支撐結(jié)構(gòu)的示意圖如圖2所示。該裝置使用2個6003Z的軸承堆疊在一起, 通過固定支撐連接, 使畫筆可準確地保持在固定支撐正中間,并且保證開合角可隨位置的改變而改變。畫筆固定支撐設(shè)計可以調(diào)整重心從而穩(wěn)定畫筆,且在繪畫時只露出一點筆徑,保證懸吊牽引部分平衡, 避免抖動。
懸吊牽引部分由步進電機、鏈珠盤、鏈珠、畫筆支撐部分組成。相比于傳統(tǒng)繪圖機器人,該設(shè)計在完成豎直平面內(nèi)的二維繪圖操作的基礎(chǔ)上,對機器人的靈活性與實用性進行了革新,現(xiàn)有的繪圖機器人繪圖支點固定、工作區(qū)域受限,使其應(yīng)用范圍受到影響。而該設(shè)計的最大優(yōu)勢在于,機器人的機械部分可分拆和分裝,牽引電機的固定方式靈活,可安裝在任意作圖區(qū)域,結(jié)構(gòu)示意圖如圖3所示,此結(jié)構(gòu)使機器人的繪制范圍不受限制,作圖區(qū)域的大小不再成為影響繪圖機器人發(fā)展的限制性因素。
3 電控部分設(shè)計
本設(shè)計的核心控制器是Arduino Mega2560,晶體振蕩器選擇16MHz,使用uart0與上位機通信,I/O口實現(xiàn)對A4988的細分參數(shù)配置和驅(qū)動控制。電源部分采用兩種供電方式,以適應(yīng)不同的用電場合。一種是AC220V輸入DC12V輸出的適配器接口,另一種是DC12V60AH電池接口。DC12V直接為步進電機供電,另外DC12V經(jīng)過穩(wěn)壓模塊輸出DC5V電壓為Arduino Mega2560供電,正負極分別連接Arduino Mega2560的VIN和GND引腳。
根據(jù)設(shè)計需求和硬件配置要求,本設(shè)計采用步距角為1.8°的兩相混合式步進電機,測試中選擇型號為17SH5413(42BYGH)的兩相四線步進電機,標準模式輸出為200個脈沖轉(zhuǎn)動一周。電機采用直流12V供電。
在步進電機驅(qū)動方面采用了A4988模塊,對A4988驅(qū)動模塊編程實現(xiàn)五種不同的步進模式:全步、半步、1/4、1/8、1/16,以達到精確控制的目的。在電路連接上,A4988驅(qū)動模塊的 STEP、DIR引腳分別連接Arduino mega2560的PIO。在Arduino中定義兩個object:AccelStepper stepperLeft(1,9,8)和AccelStepper stepperRight(1,7,6)。邏輯上,Arduino的pin8控制左側(cè)電機的方向,pin9負責(zé)左側(cè)電機的脈沖控制,pin7控制右側(cè)電機的方向,pin6負責(zé)右側(cè)電機的脈沖控制。
4 上位機軟件設(shè)計
豎直平面二維繪圖機器人采用Processing軟件搭建上位機的界面,Processing是Java語言的延伸,并支持許多現(xiàn)有的Java語言架構(gòu)。Processing將Java在語法(syntax)上作了簡化,即可以完整地完成Java程序語言編程,又具有許多貼心和人性化的設(shè)計。由于其源代碼是開放的,所以可依照自己的需求自由裁剪出最合適的使用模式。
繪圖機器人采用矢量作圖,其本質(zhì)就是坐標的變換以及坐標的映射。坐標的映射是通過與控制軟件通信獲取到的坐標,將坐標映射為兩根弦的長度。上位機負責(zé)把圖片轉(zhuǎn)化為信息單元點元素,其中包含坐標、大小、灰度值。Arduino mega2560主控板將坐標換算為弦長并輸出。
Arduino Mega2560板與上位機正常通信后,確定做圖區(qū)域大小并運行上位機軟件,上位機軟件的控制流程如圖4所示,首先完成串行口的初始化,設(shè)置波特率和中斷;然后檢查是否使用上次的系統(tǒng)設(shè)置,不使用則重新設(shè)置畫板和紙張寬高,確定零點位置,調(diào)整筆尖的大小以及電機最大轉(zhuǎn)速和運行速度,保存系統(tǒng)設(shè)置。隨后,載入一張用戶圖片,檢查是否使用上次的圖片設(shè)置參數(shù),若不使用則重新設(shè)置圖片的大小和繪圖區(qū)域,改變“像素”的大小,圖片的對比度,保存這些數(shù)據(jù)設(shè)置,選擇串口連接和繪圖風(fēng)格,發(fā)送到Arduino Mega2560上,驅(qū)動電機和舵機開始繪圖。
5 結(jié)束語
豎直平面二維繪圖機器人的設(shè)計主要圍繞電控設(shè)計、跨界軟件編程、機械結(jié)構(gòu)設(shè)計三個方面。具有結(jié)構(gòu)簡單、安裝布置靈活的特點,相比于同類產(chǎn)品,不受繪圖區(qū)域大小限制且攜帶方便,可以更好的應(yīng)用在裝飾設(shè)計、素材創(chuàng)作、教育教學(xué)、文化娛樂等方面。
參考文獻:
[1]陳鑌,張興遠.基于Arduino的繪圖機器人[J].電腦知識與技術(shù),2016,12(17):155-159.
[2]高明華,黎強,葉子恒,等.基于Arduino與Processing的懸掛畫圖機器人的設(shè)計[J].現(xiàn)代電子技術(shù),2018,41(24):153-156.
[3]陳呂洲.ARDUINO程序設(shè)計基礎(chǔ)[M].北京:航空航天大學(xué)出版社,2014:24-171.
[4]John BOXALL.動手玩轉(zhuǎn)Arduino[M].翁愷,譯.北京:人民郵電出版社,2014:264-298.
[5]于海生.計算機控制技術(shù)[M].北京:機械工業(yè)出版社,2011:55-76.
[6]Arduino中文社區(qū).概述Arduino電機驅(qū)動擴展板L293D馬達板motor control shield[EB/OL].(2013-10-13).