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上传了: |
|