2015年4月23日 星期四

3DP : 以溫度自動控制喉管風扇

之前 3D printer 因為喉管散熱不良,印出了一堆「海棉寶寶式」的印件,後來是由 RAMPS 上的 12V-AUX 供電,接了一個 40mm 的風扇吹喉管,才能正常的印東西。不過,這小小的風扇還是滿吵的,加上 RAMPS 的 12V-AUX 並沒有提供直接由程式控制電源的開關,也算是小小的困擾。

後來看到 RAMPS 有「M42」的 G-code 可以控制某些腳位的開與關,例如:「M42 P11 S255」,可以讓我們送出 255 的訊號給「D11」(RAMPS 最靠電源側的 servos 腳位),這樣一來,就可以利用 MOSFET 或繼電器來控制風扇的電源。

此外,Marlin 的「Configuration_adv.h」中也有「Extruder cooling fans」的相關設定,它可以自己設定達到什麼溫度時送訊號給指定的腳位,高於設定的溫度就送高電位給訊號腳,反之,低於該溫度則送低電位。這樣一來,就可以由印表機自動依需要開關喉管的風扇了。

清明節回北投老家掃墓時,特地騎機車,為的就是在回程時,去光華商場 B1 買 MOSFET 來玩自動開關。結果,月初買的東西,到月底了才動工,現在做事真的太沒效率!

關於電路的部份,之前在研究「電容式近接開關平台自動補正」時,在 Thingiverse 網站中看到有人提供了詳細的做法,依他的圖實作即可,就不贅述:

材料清單

  • MOSFET : IRF540N x 1
  • 電容:0.1uF x 1
  • 電阻:1k ohm x 1、6.7k ohm x 1
  • 二極體:1N4001
  • 2.54 排針針腳 x 5
  • 洞洞板 x 1

由於忘了買電容和二極體,只好由舊的電話電路板上拆了一個 0.47uF 的電容和一顆 1N4004 代替。洞洞板才用了一小角:


不過,零件都立起來,實在有一點點難看,躺平的話,應該會看起來較精簡,客倌要是看不順眼,零件通通換成 SMD 的好了!哈~對我來說,實用比較重要啦!

和印表機主控板的接法如下:


上圖中是用 RAMPS 的 D11 來當訊號腳位,可以依自己的需求,換到別的腳位。

測試 MOSFET 的動作


如果確認 DIY 的板子零件與電路都對了(哈~我板子燒壞的經驗已經夠豐富了,不想再增添紀錄,需再三確認),將板子和 RAMPS 及風扇接好線後,我們可以先用底下的 G-code 來測試 MOSFET 是否有正常工作:

M42 P11 S255

上面的 G-code 會送出 255 的值給 D11 的腳位,MOSFET 讓 12V 的電源被導通,風扇應該會開始轉。

接著可以利用底下的 G-code 來關閉風扇

M42 P11 S0

上面的 G-code 應該會送出 0 的值給 D11 的腳位,12V 的電源被切斷,風扇應該要停止轉動。


修改 Marlin 


如果確認 MOSFET 可以正常動作了,就可以進行 Marlin 設定檔的修改、編譯,並將它更新到 Arduino MEGA 2560 中。

Marlin 需要修改的設定檔是「Configuration_adv.h」,找到底下的內容:

#define EXTRUDER_0_AUTO_FAN_PIN -1
#define EXTRUDER_1_AUTO_FAN_PIN -1
#define EXTRUDER_2_AUTO_FAN_PIN -1
#define EXTRUDER_3_AUTO_FAN_PIN -1
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed

將「EXTRUDER_0_AUTO_FAN_PIN -1」改為接 MOSFET「訊號腳」的腳位「11」(請自行依自己的接法改值),變成:

#define EXTRUDER_0_AUTO_FAN_PIN 11

如果想自訂 MOSFET 動作的溫度,就修改:

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50

我是直接使用範例中的攝氏 50 度來當觸發的溫度,覺得這個設定值剛剛好。

有了這個「溫控」的開關,讓我的 Prusa i3 又更「人性化」了。感謝網路上的諸多高手,再次印證了「前人種樹,後人乘涼。」的道理。

參考資料




1 則留言:

 
© 2009. Design by Pocket