Google
 

星期六, 3月 08, 2014

3D列印噴頭的熱敏電阻更換

我的3D列印機是alt design的這台ATOM 3D印表機, 開工不到一個禮拜, 溫度感應就掛了, 可能我的運氣特差吧!




















原廠本來說要換一組噴嘴給我, 但我自己覺得如果這個溫度感應這麼脆弱, 我應該要能自己處理才對, 於是就想自己買熱敏電阻回來修復它。

這篇是自己從失敗中學到的一些經驗分享, 重點說明噴頭上熱敏電阻的挑選及安裝方式。

規格

熱敏電阻以溫度和阻值的關係, 可分兩種:
PTC: 正溫度係數, 也就是溫度愈高, 阻值愈大。
NTC: 負溫度係數, 也就是溫度愈高, 阻值愈小。

3D列印機通常用NTC的熱敏電阻, 且因為噴嘴工作溫度大約在200度C左右, 所以所用的熱敏電阻至少要耐溫到250度左右。巿面上一般可找到耐溫到260度或300度的都可以。

如果買到耐熱溫度不足的, 就會像我第一次一樣, 裝上去時溫度好像是對的, 可是到了150度左右溫度顯示卻上不去, 噴嘴都熱到冒泡了, 也出現了焦味(熱敏電阻被烤焦了), 顯然溫度是錯的!

另一個重要的參數是B值, 它表示熱敏電阻隨溫度變化的程度, 公式如下:

R(t) = R0 * Exp(B*((1/t) - (1/t0)))

其中R0表示在溫度t0時的阻值, 一般常見如25度C下100K或10K等等不同的阻值。
R(t)則表示在溫度t時的阻值, 其中 t 和 t0 都要用凱氏溫度表示, 所以等於是273.13加上攝氏溫度。

知道 t0, R0, 和 B 值, 將公式輸入Excel就可以由 R(t) 算出 t 值。

在3D列印機裡, 這個熱敏電阻會串一個pull-high電阻, 通常是4.7K ohm, 然後由ADC讀出分壓即可算出阻值; 知道阻值就等於知道了溫度。

例如若採100K, B值為3950的熱敏電阻, 則在100度C時可算出R(t)=6.97K ohm, 再和4.7K ohm做分壓, 由10bit ADC讀出值為611。

基本上這就是列印機感應噴嘴上溫度的方式, 這部份會直接對應到firmware的原始碼中。了解了這樣, 萬一找不到和原來一模一樣規格的熱敏電阻, 自己改firmware也是可以的。

基本理論知道了, 接下來就是實作。

先看一下我找到的熱敏電阻, 長這樣, 是玻璃封裝的, 應該比較武凍逃一點。
















它的資料如下:

資料:負溫度係數(NTC)熱敏電阻
型號:B2-100-3950-1
R @ 25:K100K-1%
B25/50:K3950-1%
元素:熱敏電阻型MJB2
特性
(1)電氣特性
A:電阻值:R(25°C)= 100K±1%
B:B值:B=3950±1%(在25℃和50℃的電阻值計算出)
C:絕緣電阻50MΩ或以上DC500V兆歐表(玻璃和引線之間)
(2)熱時間常數(τ):τ≤10?17S(在靜止空氣中)
(3)熱耗散係數(δ):δ=1.1~1.6MW/°C(在靜止空氣中)
(4)工作溫度範圍:-50~+260°C


換電阻只要兩個焊點, 其實也非常簡單。要注意的是要用鐵氟龍套管把電阻兩端做好絕緣, 並做好固定。

固定的材料當然也是要選擇耐熱的, 原來的設計是用石綿(應該是吧)襯墊夾住熱敏電阻, 但那個襯墊在我拆裝幾次後就已經破爛到無法使用了。在這個步驟我花了很多時間, 最後還是用鐵氟龍膠帶從旁邊固定, 讓熱敏電阻直接靠在加熱片上。

把熱敏電阻固定好, 噴嘴裝回去, 硬體部份就大功告成了。注意裝的時候噴嘴要鎖緊, 否則材料會溢出直接在加熱片上加熱!

















接下來是firmware的部份, 因為我買的熱敏電阻規格和原先的不太一樣, 所以要改一下firmware, 溫度才不會弄錯。

在原廠附的SD卡裡有完整的firmware, 這裡面有兩個檔要改:

1. Configuration.h

在原程式碼第113行開始是熱敏電阻設定說明, 實際上定義在142~145行。
























這裡可以定義四個熱敏電阻, 其中最後一個是加溫床。
ATOM只用了一個噴嘴上的溫度感應, 所以只將 TEMP_SENSOR_0 設為 5。其它三個都設為 0, 表示不使用。
由程式碼的註解中可以知道 5 表示 ATC Semitec 104GT-2 這顆熱敏電阻。

我保留了原來的代碼定義, 自己增加了一個代碼 11 代表我所用的熱敏電阻。


2. thermistortables.h

這個檔案定義了不同溫度感應的對照參數, 如原來的程式碼是設定 TEMP_SENSOR_0 為 5, 在這裡就會參考到 temptable_5[][2] 這個陣列, 如下:



每一行就是一個讀取值和溫度的對應。例如 20度時ADC的讀值是986。這個對應關係可由前面的公式計算出來, 或像ATC Semitec是在datasheet中直接給了對照表, 但後再以電阻分壓計算出來。有興趣的朋友只要拿104GT-2的datasheet查一下, 對一下應該就了解了。

同樣的方式, 我們為新型號的熱敏電阻建了一個對照表, 先在Excel裡把公式建進去, 拉出不同溫度對應的讀值。順便把溫度和阻值的關係畫出來, 可以看出NTC熱敏電阻的阻值和溫度的關係。



























再把這個表放到firmware中, 定義在temptable_11[][2]裡, 如下:





























將印表機的USB接上, 開啟Arduino就可以將改過的firmware上傳了:













































張貼留言