我的 Prusa i3 第一個版本的自動調平,是使用電容電感近接開關,優點是便宜也容易安裝;缺點是只能探測金屬材質。可參考:Prusa i3 自動調平設定—硬體與電路部分

我的熱床是 MK3 鋁材質,原來使用上其實是可以配合。但 MK3 相當不平,即使採用了自動調平偵測還是有限,尤其是列印大面積的列印件時,兩側常無法黏住。

徵詢 Reprap.Taipei FB 社團的諸多高手所綜合的建議,在 MK3 熱床上再鋪上一片 3mm 以上的玻璃,會平坦很多。所以我從對岸淘了兩片從秦皇島店家購買的兩片鋼化高硼矽磨砂耐熱玻璃,據說可以黏住 PLA 材質的列印,而不需要塗上膠水或貼上美紋紙。

加上玻璃後,連帶電容電感近接開關就無法使用,因為無法偵測非金屬材質。我曾在玻璃後邊貼上鋁箔膠帶測試時還能偵測到,但打印幾次卻發現很不穩定,總有某些點會突然失靈,太過不穩定。

爬文作了一堆功課,發現到有種探針式的接觸感測近接開關,就沒有非金屬就無法感測的問題了。其中這一款 — BLTouch,我看從 Youtube 視頻上看到許多先進玩家的使用分享,效果挺不錯的樣子。

不過原廠價格可不便宜,且從 Amazon 還要多擔負一筆航空運費,並不划算。還是仍從對岸淘寶買的這支號稱是復刻版本的 TLTouch (BLTouch 克隆版),含順豐快遞到家共 RMB 159 (約台幣七百多元),還可以接受。
3DP auto bed using BLTouch

先瞧下我錄製下來的視頻,關於 BLTouch 在執行歸零與自動底床調平 (G28/G29)時的情形。


雖然是復刻版,但包裝與內附的零件與原廠是一樣的 (還附了一張原廠的原文說明紙),還裝在一個透明盒收納。
3DP auto bed using BLTouch

其實這些零件多是小螺絲與杜邦延長端子之類的,反正就是要自行再拉延長線接到 Ramps 1.4 的 5V servo 腳位,以及限位開關腳位的。
3DP auto bed using BLTouch

要如何設計一個 BLTouch 的 Holder 並盡量靠近到熱端 (Hotend)處,這類 3D繪圖設計問題,對我永遠都是挑戰。花了有大半天時間,趁此次改使用 Fusion 360 3D 繪圖,因為 123D Design 據說不再釋出新版本 (且實在不太好用)。

哇喔! 原來比較專業性質的 3D繪圖功能是這麼強大啊,早應該要轉用這套免費提供給教師/學生,以及年收入10萬美金以下的商業人士 (真是佛心來著)。大約花個半天時間熟悉下使用介面就可以上手了;然後設計了三次版本演進的 BLTouch Holder。
3D Design by fusion 360

打印了幾次樣本,總算確定了高度與接合距離,印出來的模樣。
3DP auto bed using BLTouch

這是套進去後的樣子。因為螺絲鎖住的高度剛好差點頂住 X軸鋁合金安裝座 (Mount),所以我還用電烙鐵頂住螺絲讓其陷進熱熔後的列印座內,下一個版本應該要把螺絲的高度給考慮進來的,目前這樣先能用就好。
3DP auto bed using BLTouch

設計這 Holder 比較大的挑戰就是 BLTouch 的高度相對於噴嘴高度的問題,主要就是當探針伸出來 (pull)時要比噴嘴高,但縮回去 (push)時要比噴嘴低,原廠建議探針出口處距離噴嘴高度約 8mm 距離左右。
3DP auto bed using BLTouch

嗯嗯,Holder 確實可以套用後,再來就是連接線路,然後開始 Marlin 設定。

上文有提到要用杜邦延長端子連接延長線,主要就是限位開關2條 (白-觸發訊號/黑-接地),servo 電源輸入腳位3條 (橘-觸發訊號/紅-+5V/棕-接地),說明紙都有提的,顏色確實接正確連到 Ramps 1.4 主板上即可。
3DP auto bed using BLTouch

大概就是注意下,servo 電源輸入腳位要能供應 +5V 的電壓,就在位於 servo 前面的腳位上要用 Jumper 短路前兩根腳,這在 Ramps 1.4 的規格都有提的。
3DP auto bed using BLTouch

線路接完後再來就是 marlin 的設定。本來以為很簡單,結果耗費整整一天的時間 try-error,原來竟然是這克隆版與原版的電位剛好相反,限位開關的訊號觸發 (inverting)要設為 true,且不能直接開啟 1.1.0 RC8 內有個預設的 #define BLTouch,因為並不相容。

為何要與原版的相反?這反而克隆版廠商的好意,為了修正原廠因為觸發訊號時只有 5ms 脈衝,這太小很容易就會被板子上的電容給當成雜訊過濾掉,所以就反過來讓其設計為反相訊號。原廠與克隆版廠商都準備下一個版本改為 10ms 脈衝訊號,對岸我買的那家,技術客服還特別因為覺得讓我花太多時間,所以承諾下一個版本免費送給我,哈,真是不錯,當然屆時幫他們簡單開箱介紹下。

這裡就把主要與 BLTouch 相關的 marlin 設定給列出來參考 (configuration.h),其它有關自動調平與前述使用電容電感式的設定是一樣的。

#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_ENDSTOP_SERVO_NR 0
#define Z_SERVO_ANGLES {10,90} // Z Servo Deploy and Stow angles
#define PROBE_DOUBLE_TOUCH
#define NUM_SERVOS 1

好啦,寫入 EPROM、Z軸高度校正等,都是與前一篇設定文一樣的方式,就是要注意下噴嘴當接近Z軸零點時,已收起來的探針不要碰觸到表面,若有就是要回頭調整 BLTouch 的高度。

設定正確後重新啟動 Marlin,此時 BLTouch 會自我測試伸縮探針,並顯示紅色燈號 (如果是閃爍的紅色燈號那代表有問題)。
3DP auto bed using BLTouch

新裝上磨砂玻璃,準備不塗上膠水與貼上美紋紙,只有底床加熱 (PLA 約為60度左右)。順便瞧下帶顏色的馬尾夾,從大創百貨買回來的,比起純黑色好看太多了。
3DP auto bed using BLTouch

3DP auto bed using BLTouch

執行 G28 歸零 (Homing)/G29 自動探測各點距離,然後開始打印從 thingiverse 下載底床調平校正模型,打印出來成果相當令人滿意。
3DP auto bed using BLTouch

3DP auto bed using BLTouch

3DP auto bed using BLTouch

試著打印小貓咪吊飾模型,直接就是打印在玻璃上,沒有塗上膠水與黏貼美紋紙,第一層仍可以牢靠黏著。

View post on imgur.com

當晚我就給它整夜打印 68%縮小原比例的穿山甲,整整要花上快9個小時,但效果真的相當好,關節都不會黏住,自動調平校正後第一層平坦時就會顯現這樣的威力。
穿山甲與食人魚 3D 列印

結論這 BLTouch 的克隆版在自動調平功能上頗為滿意,無怪乎國外的許多玩家對其還蠻
推薦的。

不過這物件真有些貴,其實這可以 DIY,只要有光學限位開關或霍爾感應器,加上小磁鐵
與彈簧、探針(用鐵釘或螺絲就可),成本並不高,但當然不容易能像 BLTouch 這般小巧
精緻。

原理比想像的簡單,如果使用現成的光學限位開關 (機械限位應該也可以),就只是想辦法在歸零的時候讓原來黏在磁鐵的探針 (可以用釘子或迴紋針就可)落下比噴嘴還低的位置。(影片是利用穿過小彈簧的水平桿觸及左側X軸)

然後在 G28/G29 歸零/自動偵測後,噴嘴會降到Z軸0點位置,此時探針會往下壓而被頂上來,自然就會磁鐵黏回去而比噴嘴位置高了。

Thingiverse 的模型檔與基本說明:http://www.thingiverse.com/thing:1714315

當然也可以直接使用霍爾傳感器 (Hall sensor)直接取代光學限位開關,實作上會更簡單。即使不弄成自動調平偵測,當成Z軸限位開關也很不錯的方式。