Termisztor kalibráció

Hány fokos a HotEnd, honnan tudjuk, hogy annyi?

A 3D nyomtató fejének hőmérsékletét egy termisztor nevű pici szenzor méri. Ez egy egyszerű és olcsó alkatrész, a tudománya abban áll, hogy hőmérséklet függvényében változik az elektromos ellenállása. Ebből az ellenás értékből számolja vissza a vezérlő a hőmérséklet értékét. Ehhez egy táblázatot használ, ahol egy-egy kitüntet hőmérsékletértékhez tartozó ellenállás érték van meghatározva. Ebből már sejthető, hogy különböző termisztorokhoz, különböző táblázatra van szükség.

A fentiekből következően egy alkatrészekből épített 3D nyomtatónak a termisztorát is kalibrálni kell. Ugyanis egy gyárilag összeszerelt, vagy akár kit-ként vásárolt nyomtató esetében feltétezhetjük, hogy ellenőrizték és nagyjából helyesen meghatározták azt a táblázatot ami megfelel a mellékelt termisztornak és ezt implementálták a nyomtatóhoz tartozó firmware-ben.

Viszont az a termisztor, amit pár centért vásároltunk egyáltalán nem biztos, hogy pont megfelel valamelyik előre definiált beállítási lehetőségnek, vagy ha igen, erről valahogy meg kellene győződnünk.

A téma azért kezdett el érdekelni, mert azt figyeltem meg, hogy az épített HyperCube nyomtatóimmal magasabb hőmérsékletet kellett választanom ugyanazon gyártó filamentjének nyomtatására, mint korábban a kit-ként vásárolt Hephestos 2-es nyomtató esetében.

Próbálkoztam lézeres hőmérséklet érzékelős pisztollyal ellenőrizni a HotEnd hőmérsékletét, de nem tudtam hihető értéket mérni vele. Próbálkoztam azzal is, hogy a blokk felületén mértem hőmérsékletet, mindenféle műszer odaérintésével, de ez sem tűnt működő módszernek.

Termisztor kalibrálásának menete

A megoldást végül egy videóban találtam meg, amit a cikk végére be is szúrok. Triviális egyébként. :-) A nozzle-t ki kell tekerni és a helyére kell bedugni például egy multiméter hőmérséklet érzékelőjét. Ekkor nagyjából pont ott mérünk, ahol a kívánt hőmérsékletet szeretnénk elérni. Hogy még pontosabb legyen a mérés, alufóliával betömködtem a furatot, így a levegő közvetlenül nem hűti a blokk belsejét, és rögzíti is az érzékelőt a blokk belsejében.

Hőmérséklet mérés a HotEnd blokk belsejében

De ez előtt van még egy feladatunk! A multiméter termisztorát is kalibrálni kellene. :-) Legalábbis magunkat meg kell győzni róla, hogy amit mérni fogunk, az reális érték lesz. Egyfelől forrásban lévő vízben nagyjából 100℃ kell tudnunk mérni vele. Ezt abszolválta a multiméterem, de mivel 200℃ körül akartam pontosan mérni, így a következő tesztet végeztem még el: A Hephestos 2-es nyomtatónak hihetőnek tűnt a hőmérséklet vezérlése (a filament gyártók adataihoz képest), így annak a nozzle-jét is kitekertem és a módszert azon a nyomtatón próbáltam ki elsőként. A mérés jól sikerült, 200℃-ra állítva a nyomtatót, a multiméter is 200℃ mutatott. Tehát az a kalibráció amit HypeCube nyomtatókon fogok elvégezni, nem lesz rosszabb, mint a gyári Hephestos 2 nyomtató pontossága.

Hephestos 2 3D nyomtató HotEnd hőmérsékletének ellenőrzése
Hephestos 2 3D nyomtató HotEnd hőmérsékletének ellenőrzése

A kalibrációhoz a Marlin firmware-ben be kell kapcsolnunk, hogy a termisztor ellenállás értékeit is kiírja a hőmérséklet érték mellett. Ezt a funkciót Configuration_adv.h fáljban, a következő sorral tudjuk engedélyezni:

#define SHOW_TEMP_ADC_VALUES

A firmware feltöltése után az M105 paranccsal tudjuk megjeleníteni az értékeket.

A kalibráció ténylegesen abból áll, hogy 5-10℃ lépésenként felírjuk a termisztor ellenállásának értékeit. Tehát elkészítjük azt a táblázatot, amit majd a Marlin használni tud konkrétan a mi termisztorunkhoz. Ehhez elsőként készítettem egy fájlt, amiben kiürítettem az értékek helyét. Feltöltöttem GitHub-ra is: thermistortable_empty.h

A sorok végén lévő kommentben szerepelnek azok a hőmérsékletek, amikre beállítottam a nyomtatót. Picit vártam mindig, hogy beálljon a konstans hőmérséklet, majd az első oszlopba a termisztor ellenállásának értékét írtam, a második oszlopba pedig a multiméter által mutatott hőmérsékletet. OctoPrintet használtam, ilyen szép grafikon rajzolódott közben:

OctoPrint hőmérséklet grafikon

A Terminal fülön olvashatóak a felhasznált értékek, amik alapján így töltögettem a sorokat:

  { OV(  51), 218 }, //230 
  { OV(  56), 214 }, //225 
  { OV(  61), 210 }, //220 
  { OV(  67), 205 }, //215 
  { OV(  73), 201 }, //210 
  { OV(  78), 196 }, //205 
  { OV(  86), 192 }, //200 

Látható, hogy 220℃ környékén már 10℃ eltérés mutatkozott. Végül 265℃-ig tekertem a hőmérsékletet, ami 247℃-nak felelt meg a multiméter szerint. Az ennél magasabb értékeket saccolás módszerével interpoláltam, nyilván nem fogom abban a tartományban használni a nyomtatót.

A végeredményt is feltöltöttem: thermistortable_99.h

Termisztor kalibrálás HyperCube 3D nyomtatón
Termisztor kalibrálás HyperCube 3D nyomtatón

Az elmentett fájlt meg kell ismertetni a Marlin-nal, ehhez a thermistortables.h fáljba rendeljük hozzá egy olyan értékhez, amit más táblázat még nem használ. A videóban 99-es szerepel, maradtam én is ennél:

#if ANY_THERMISTOR_IS(99) // Trianglelab ATC Semitec 104GT-2 
  #include "thermistortable_99.h"
#endif

Ezek után már hivatkozhatunk rá a Configuration.h fájlban:

#define TEMP_SENSOR_0 99

A firmware feltöltése után érdemes kipróbálni a művünket. Azt kell tapasztalnunk, hogy amilyen értékre felfűtjük a HotEnd-et, azt mutatja a multiméter is. Ha minden rendben van, akkor tegyük vissza a nozzle-t, esetleg ellenőrizzük az offset-et, végül pedig érdemes a PID kalibrációt is megismételnünk az új hőmérséklet értékek miatt.

Itt megnézheted a cikket inspiráló videót:

Hozzászólás küldése

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük