網頁

寫字機器人製作過程(Drawing Robot)



繼上次這篇文章之後盤點工作室歷程之來做台寫字機吧,我便決定用剩下來的材料去製作一台寫字機器人來玩玩。我本來打算自己去繪製與設計整台寫字機器人的,但是在後面評估過所消耗的時間之後,還是決定先用國外網友在Thingiverse上面所分享的Drawing Robot來製作我的寫字機器人(就是一個懶字),光那破千的下載量就能夠確定該作品的可實踐性很高了,而且也有不少網友實際的做過。

這款寫字機器人是使用Arduino Uno + CNC Shield + GRBL的一個介面,跟我現有的材料與想法不謀而合,而下面我就要記錄在這個寫字機器人的製作過程。

本來沒有計畫要做這台寫字機器人的,原本的想法是打算利用3D印表機直接下去進行改裝,只是後面才發現這樣直接改的效果真是慘不人賭,想知道原因的可以看這篇文章不要用3D印表機當寫字機機器人,因此最後才決定還是來做一台寫字機器人來玩玩。

在材料準備以及製作流程的部分,國外有網友提供了詳盡的BOM表以及組裝流程,詳情可以看這裡由Jonathan K所提供的Project Drawing Robot

其中的光軸、步進馬達、SG90伺服馬達與控制板我都已經有了,我目前欠缺的就是一些螺絲、624zz軸承、中間的牙條橫桿以及不太好找的3mm光軸。

螺絲、牙條以及624zz軸承的部分,是我這次做這個寫字機器人所"購買"的所有東西,因此整台大概只花費我300多塊錢,只是後來發現去軸承行買軸承真的很貴,一顆就要30元,以後這種專案還是在網路上買二手或是去對岸掏就好了,因為這種需求真的不需要用到太好的軸承,不然開銷的金額可以壓得更低,不過前提是我手上剛好有這些材料所以才能這麼省。

回歸正題,在寫字機器人中最重要的筆架它需要兩根光碟機中找的到的3mm光軸,只可惜我拆了兩台之後發現都是採用一邊光軸另外一邊塑膠滑軌的模式,而且重點是光碟機還是好的,拆了也是相當的可惜。




踏破鐵鞋無覓處,最後還是決定拆下之前學習GRBL所使用的光碟機CNC機,雖然有點不捨,但為了這個專案所以還是把它拆了。



長度約89mm左右,這個專案的光軸大概70mm就夠了,所以沒有問題。



接著就是翻出兩顆不知道從哪裡來的步進馬達,姑且不論規格,我想寫字機器人隨便一顆步進馬達應該都能勝任才是,畢竟它的負載並不重,只是其中一顆上面已經被打了一顆齒輪,怎麼拔也拔不下來,最後只好把它鋸下來。



接著我一邊列印所需要的材料(這台機器人用了很大量的列印件),一邊進行GRBL的測試,寫字機器人的電機零件其實很簡單,它只有兩顆步進馬達與一顆SG90伺服馬達所構成,至於限位開關我並沒有安裝,因為這種寫字機器人如果過行程也只是步進馬達卡住而已,不太需要進行歸位(Home)的一個動作。



比較需要注意的是它的GRBL在韌體的部分(不知道GRBL是什麼可以參考我這篇文章,基於GRBL的CNC之Arduino控制器篇),因為它不像是一般的CNC機台使用的是分離式的XYZ單軸移動,而是透過兩顆步進馬達變成CoreXY的一個工作模式(可以參考組裝教學的第24頁),而且一般的GRBL並無法支援Servo的角度以及控制,所以我們必須要做些修改。

首先到這裡下載專門為Servo所設計的GRBL版本grbl 0.9i with Servo motor support,經過修改之後的GRBL程式可以利用Shield v3.0上的Z+腳位(也就是UNO的D11腳)來控制Servo。
把它的下載完成之後開啟Arduino IDE,並選取草稿碼→匯入程式庫→加入.ZIP。




完成匯入之後千萬別急著燒錄到UNO內,我們還必須要做一個很重要的步驟,就是更改程式裡面的config.h腳本,用來開啟coreXY的功能,不會改也沒關係,在Thingiverse上面所分享的Drawing Robot的下載檔案裡面,已經有幫你修改好的config.h,我們只要把這個檔案放到剛剛匯入的Arduino程式庫內取代就好,舉例我的程式庫位置是在C:\Users\Mars\Documents\Arduino\libraries\grbl-servo-master
覆蓋完成後在進行燒錄到控制板內就可以了。

在組裝前先把控制板、步進馬達與Servo都接上去,並使用電腦端的grbl控制軟體試動看看XY軸的移動與伺服馬達的控制,當然在這裡先不用管Step/mm的問題,先確定能動作以及動作的方向都正確再說。

coreXY的控制基本上是這樣(L為左邊的馬達,R為右邊的馬達)。
X+移動 :L逆時針;R逆時針
X- 移動 :L順時針;R順時針
Y+移動 :L順時針;R逆時針
Y- 移動 :L逆時針;R順時針

如果方向跟上面的不一樣就把Pin給反接就可以了,直到方向跟上面的旋轉方向都相同為止。同時也利用M03 S0~255(等同0~180度) 與 M05來測試伺服機的作動,基本上要做到抬筆架的動作只要約60~90度就夠了。



確認完機電元件的作動之後,接著就要來進行列印件的組裝了。首先把所需要的零件排排站,可以發現小小一台寫字機其實所需要的零件也不少,但其實最讓我困擾的就是它採用了相當多的列印件,所以一定要有對列印件進行修整的心理準備



首先將X軸的左側給裝上去,它在光軸的軸孔旁有一個M3螺母的塞孔,因此如果光軸置入時太鬆會滑動,是可以在鎖上那個固定螺絲來壓緊光軸,但因為我列印件幾乎都是小一號,所以我就是用硬旋進去的方式來組裝,就沒有加上固定螺絲了。



接著把兩片列印最久的零件給裝上各四顆的LM8UU線性軸承,組裝起來還蠻緊的,不需要另外在上束帶之類的,這個設計的挺不錯的。



然後置入四顆M3的螺母,這四顆是用於鎖上四顆皮帶軸承用的。



注意在軸承的兩端都要上墊片,不然可能會磨到列印件卡住轉不動。



鎖上去之後長這樣子,順便用手測試看看轉動是否滑順。



當這個部件組裝好之後就可以安裝上X滑軌並且裝上右邊步進馬達支架的列印件了。



接著因為我沒有多的GT2皮帶同步輪,在不想花錢的情況下就在Thingiverse上面找到了列印版的GT2同步輪。Parametric pulley - lots of tooth profiles



列印的結果在皮帶與列印件的密合度很不錯。



比較尷尬的點是其中一顆步進馬達的軸實在是太短了,在齒輪端裝進去後另外一邊的固定螺絲沒有辦法裝上,幸好這個列印件裝上去非常的緊,在不用鎖螺絲的情況下就能固定住。
(※注意這個做法用久了還是會導致鬆脫,但我寫字機只是做來玩玩的,所以才這樣使用)



接著再把步進馬達給安裝上去,牙條凸出來這麼多是因為我的光軸並不是材料表中的長度,我的光軸大約比它的規格少了66mm左右,我的X軸光軸是384mm,Y軸則是319mm,但我想之後可能會在買符合它規格的光軸,所以才會凸出來這麼多,雖然凸出來也沒什麼關係就是,並不會影響實際運作。



接著鎖上中央板的四根m4螺絲與螺帽,有些貫通孔因為我列印件的孔太小了,所以還需要用電鑽做些加工。



鎖上去之後接著就可以準備來安裝Y軸的光軸了,可以發現目前整體大概已經完成了八成。



接著鎖上Y軸的皮帶墮輪,不過我不知道為什麼作者要使用35mm的螺絲,真的有點太長了。



將列印件裝上Y軸的光軸時發現實在是太緊了,但又怕用鑽頭鑽過後會太鬆,因此可以使用電鑽將一端鎖住,然後把光軸給旋進去,如此一來會省力很多,用敲的怕有變形的問題。



安裝上去之後就可以開始準備穿皮帶了,並且把Y軸前面那塊也安裝上去,注意在穿的時候要確實拉緊在軸承上面,不要鬆脫了。



這個列印件設計一個溝槽,可以將皮帶的齒卡進去固定。



接著就要來安裝最重要的筆架了,我覺得筆架比起整個XY的支架還更加的重要,那個關係就像是3D印表機必須要有一個好的列印頭一樣,滑順的筆架寫字起來才會順暢。



接著安裝上sg90馬達,一樣遇到了尺寸稍微不合的問題,害我都組裝到懷疑是不是我的3D印表機設定有問題。



只好拿出銼刀稍作打磨才有辦法將這顆伺服馬達給裝進去,所以我才說這個作品需要大量的對列印件進行修整的動作。



安裝上去之後我發現一個很嚴重的問題,那就是筆架的滑軌與筆座根本沒辦法組裝在一起,因為列印件所印出來的固定圓銷形狀幾乎像橢圓型,這可能是因為我立著印的關係,但立著印主要是因為怕筆座滑塊的圓孔失真,為了確保形狀夠圓才立著印。



所以在我直接把它用斜口鉗剪掉鑽洞,利用螺絲去進行固定。



組裝起來就像這樣子,幸好這個筆架還救的回來,不然真的不知道該如何是好。



組裝好了之後在把電線進行修整與延長,整線的部份我就省略了,因為也才兩顆步進馬達跟一顆伺服馬達而已,讓我們直接進入測試的部分。



後面實際運作起來發覺效果不太好,整體運作的聲音很大,筆架在作動也不是很順暢,所以這部份我並沒有拍影片紀錄,而是準備在進行一次檢修。



畫了一個維京人的LOGO之後就發現XY軸動起來很卡,筆架在下筆也不是很順暢。



因此在這裡做了一些檢查,發現了以下幾個問題。

首先是中間兩塊蓋板的部分,因為在四根螺絲都鎖緊的情況下,上面的線性軸承會連帶跟著變得不平行,因此在組裝時如果XY軸滑動起來卡卡的,可以試著放鬆其中幾顆螺絲試試看,如果發現是鎖太緊造成的,可以加上幾個墊片來避免這個問題。
(在組裝的教學簡報中他是直接用3D印表機印了四個墊片出來)



而XY軸移動不順我覺得跟我的光軸與線性軸承是二手品有關,因為這四支光軸與線性軸承都是從3D印表機修理的時候汰換下來的,所以其中幾根表面都已經有刮傷產生。



從下圖可以看到光軸表面都有許多明顯的刮傷了,這個刮痕導致在滑動時比較不順暢,但是為了不要再增加額外的開銷,所以就不打算買新的光軸了。



因此我的建議是在組裝的每個階段時,都可以試著滑動看看,如果有哪個環節"突然"讓移動時卡卡的,就應該在那個階段停下來,並檢查是甚麼原因造成的,例如元件卡住、磨到、鎖太緊或是軸承根本就壞掉了之類的問題。

而筆架運作不順暢,跟列印件的孔太小有關,因此我後面直接使用3mm的鑽頭多鑽幾下,才讓筆架在光軸上的滑動順暢許多,但記住不要鑽過頭讓間隙過大,慢慢一邊鑽一邊測試就好,因為鑽過頭會導致寫字時晃動讓筆架固定的效果不好,而且鑽過頭就救不回來了。



修整過後的筆架試動起來效果很好,準備安裝繼續進行二次的測試。



而我在筆架上綁了一條橡皮筋,在原作者是使用彈簧的,但我手邊找不到那樣子的彈簧使用,同時裝上彈簧後也會讓筆架的行程變短,所以用橡皮筋是不錯的選擇,基本上彈力能做到順利的上下,又不會讓sg90馬達卡住就可以了,不用講求要把橡皮筋綁太緊。



全部都安裝好之後就準備準備上機,我使用Inkscape的外掛程式J Tech Photonics Laser Tool來產生Gcode供寫字機使用,至於如何產生出寫字機的Gcode這就要另外再寫一篇文章了。



Gcode的生成大致上就是用那個外掛程式然後把開始用M03;關使用M09,而Laser Power S#的部分大概調整到能下筆不會卡住就好(我調整80左右),抬筆的角度不用太高,能不要碰到紙張就好,這樣也能確保寫字的速度,與避免下筆時撞擊筆芯的力道太大,畢竟筆抬的越高,下筆時就會像彈弓一樣往下彈,這並不是一件好事。



繪製了一個圓形球做為測試,效果還可以,只是在紙上寫字時還是會有點頓,這大概是因為光軸本身不太滑順的關係,所以還是會有毛邊產生。可別小看寫字機器人,其光軸的滑順程度要求也是很高的,如果間隙過大或是太緊可沒辦法寫出行雲流水的字來。



另外還試寫了一些網路上的範例,有興趣的可以到這裡下載(寫字機器人example)。



寫出來的效果是還不錯的,經過加工後的筆架在下筆的過程明顯流暢許多。寫字機器人專案終於完成!




來看一下寫字機器人運作的過程吧,影片有點抖請見諒。



這個寫字機器人的專案做下來我有幾個心得分享:
首先是XY光軸的部分,我不確定是不是因為我光軸有刮傷的關係導致滑動不順,又或是因為列印件的關係導致光軸本身平行度不夠,讓整個滑動時的效果不佳。這一點在官方版的寫字機器人AxiDraw就做的相當的不錯,它使用鋁擠型搭配V型滑輪當作滑軌,這種滑輪比較適合輕負載的一個場合,剛好非常適合寫字機器人所使用。

再來是筆架的部分,一開始孔洞不符合的問題我使用電鑽將它改成螺絲鎖固來解決。再來是筆夾滑軌的部分,因為列印件的關係所以滑動起來還是有點卡卡的,而市售的寫字機器人是使用銅套作為軸承,這個滑順度肯定是會有所提升的,但礙於材料的準備,所以選擇直接將列印件鑽孔處理,其實列印件也算是足夠,只是比起銅套還是略有不足。

最後是Gcode的部分,在文字或是線圖去進行轉換時,它的效果是相當的不錯的,但是如果使用圖片將其進行線條化後(描繪點陣圖),轉換出來的Gcode路徑就會相當的悲劇,這個我想也是軟體上的一個缺陷,畢竟圖型在轉換時並沒有辦法像原生的線條檔案那樣如此的精準,才會導致轉換出來的結果會有破圖的現象。



雖然說破圖,但是畫出來的圖案是符合的沒有錯,只是筆架會一直進行抬筆或放下的動作,沒有辦法像網路上那樣如此順暢的書寫,這還是必須要在轉換前就做好路徑的規畫才行。



最後我會再另外撰寫如何調整筆架角度,以及如何生成寫字機器人Gcode的文章,希望對於也想製作寫字機器人的同好有所幫助。