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 találomra 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.
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 blokkban.
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.
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:
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
Az elmentett fájlt meg kell ismertetni a Marlin-nal, ehhez a thermistortables.h fájlban 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.
A cikket inspiráló videó:
Alaplapot cseréltem és a nyomtatót üzemeltem be. Az első nyomtatás fura volt: hol jött anyag, hol nem. A vonalak végére fogyott el az anyag. Mivel az extruderhez nem nyúltam, a hőfok lett gyanús. Mivel épített gép és a marlin is új, sejtettem, hogy a hófok kevés a mutatott érték ellenére. Felemeltem a hőfokot és megjavult az adagolás. Az itt leírtak szerint megmértem és 200 foknál már 17 fok eltérés volt lefele.
Mindent úgy csináltam ahogy a videó is mutatta, de nekem a marlin által mutatott értékek jóval magasabbak voltak. Megcsináltam a táblázatot és a 25 fokos fúvókát 150 foknak mutatta. Sejtettem, hogy valami nincs rendben. Megnéztem a marlinban lévő táblázatokat és azoknak is a legmagasabb értéke 1000 körüli, míg nekem majdnem 4000 az érték amit a pronterface mutatott. Rájöttem, hogy osztani kell minden értéket 4 -el. Megcsináltam, működik. Maximum 2 fok eltérés van most.
Miért mutat nálam 4x -es értéket? Miért nincs erről említés sehol?
Köszi a cikket, sokat segített. (ez meg lehet, hogy másoknak)