Prusa i3 MK3S átalakítása NF-Crazy hotend-del #3D nyomtatás #fejlesztés

E3D » Mosquito – Kalandos hotend-átalakítás Prusa i3 MK3S nyomtatónkban

Remélhetőleg a jövőből visszatekintve is óriási fejlesztésnek fogom ítélni az elmúlt napok munkáit, és hosszú távon is elégedett leszek az eredménnyel. Arról van szó, hogy végre megléptem a Prusa i3 MK3S 3D nyomtatónk E3D típusú hotend-jének lecserélését, helyette Mosquito rendszerű hotend-et építettem be. Nagyon izgalmas kaland volt, és a munka befejeztével úgy látom, hogy jóval korábban meg kellett volna ezt tenni. Vigyázat, erősen szakmai cikk következik!

2021.04.18. – Helyzetjelentés egy hónappal később: A bejegyzés végén olvashatsz tapasztalataimról, és az utólagos hibák javításáról.

Az egész történet úgy kezdődött, hogy időnként elcsöppent a nyomtatások közben a nyomtatófej. Csak annyit lehetett észrevenni, hogy időnként egy fekete, égett paca volt a kinyomtatott modelleken. Nem értettem mi történik, mert korábban nem volt rá példa, ezért elkezdtem figyelni, és fórumokban is utánanéztem a jelenségnek.

Közelebbről megfigyelve az látszott, hogy a heat block tetején, a heatbreak csövecskéje körül kifolyt a megolvadt műanyag és ráégett a blokk tetejére, illetve szépen leszivárgott a szélén és a kb. félóránként összegyűlő fekete cseppek lecsepegtek a nyomtatott modellre. De hogy kerül olvadt műanyag a blokk tetejére? Nagyon egyszerű a megoldás: az E3D hotend konstrukciós hibájából adódóan. Kifejtem bővebben is, hátha érdekel valakit!

A hotend felépítése

A hotend felépítése

A hotend felépítése

Mint minden hotendnek, így az E3D típusúnak is központi eleme a fűtőblokk, amibe alulról a nozzle-t csavarjuk bele, felülről pedig a heatbreak nevű vékony csövecskét (magyarul szerintem hőtörőnek is mondhatjuk), aminek a tetejére pedig a hűtőbordát. A heatbreak feladata, hogy a 200-300 fokos fűtőblokk hőjéből csak minimális mennyiséget engedjen át a fenti hűtőbordára, mivel az van befogva a nyomtató műanyag szerkezetébe. A hűtőborda csövén és a heatbreak csövén keresztül érkező filament így nem lágyul meg a hűvös szakaszon, de amint átér a heatbreak-en, bele a fűtőblokkba, ott már lágy lesz, hogy a nozzle-ön ki tudjon folyni.

Az E3D problémája

A nozzle belső fele és a heatbreak alsó fele elvileg össze kell, hogy érjen a heatbreak belső menetes szakaszán, és ha jól össze van szorítva a két alkatrész, akkor nem szabadna eresztenie az olvadt műanyagot. Azért írtam, hogy elvileg, mert a hengeres formájú heatbreak-et sehogy sem lehet a nozzle-nek precízen nekiszorítani, mivel nincsen rajta fogás. Ez egy óriási, és teljesen érthetetlen konstrukciós hibája az E3D hotendnek.

Ráadásul beépített állapotában valamiért a fűtőblokk is le tud csavarodni róla (ami ugye nincsen elfordulás ellen rögzítve), és teljesen esélytelenné válik a normális összeillesztés, minden forog mindenfelé. A tömítetlenség kialakulását elősegíti a napi használat során előforduló többszáz fogos hőingadozás is. Végül oda lyukadunk ki, hogy nem lesz megfelelő a tömítés a nozzle és a heatbreak között, és kiszivárog a fűtőblokk menetébe a műanyag, aztán szétfolyik mindenfelé.

A Mosquito hotend megoldása

A fenti problémákra többen keresik a megoldásokat, ezért kismillió más hotendet lehet szerelni a 3D nyomtatókba, amik más és más szemszögből ígérnek jobb teljesítményt. Én pár éve hallottam először a Slice Engineering megoldásáról, a Mosquito névre hallgató hotendről. Ez a stabil befogású hotend kiküszöböli (reményeim szerint) a tömítetlenség okozta csepegést, és a fúvóka cseréjét is nagyban leegyszerűsíti a kialakítás.

Ezen kívül a heatbreak kialakítása nem a klasszikus, fenti példát követi, hanem egy teljesen új megközelítéssel oldja meg a hőelválasztás problémáját: 4 hihetetlenül vékony csövecske választja el és egyben rögzíti a hűtőbordát és a fűtőblokkot, középen pedig egy ötödik vékony csövecskén érkezik a nyomtatószál. Így jóval magasabb hőmérsékleten is lehet nyomtatni, anélkül, hogy a hő átterjedne a gép műanyag szerkezetére és károsíthatná azt.

A hotend egyedüli hátránya az árcédulájára van írva, 150 dolláros ára nem éppen baráti, így jó ideig nem gondolkoztam komolyabban az átalakításon.

Az NF-Crazy csomagjában ezeket találtam

Az NF-Crazy csomagjában ezeket találtam

Amikor viszont már egyre gyakrabban kellett szétszerelnem az extrudert a kifolyó műanyag miatt, és hiába építettem össze a legprecízebben, és még mindig csepegett, betelt a pohár, és elkezdtem alternatívák után kutatni. Ekkor találtam rá a Zen3D nevű honlapra, ahol nagyon érdekes és tanulságos cikkeket olvastam, többek között a Mosquito hotendekről is. Az összefoglalóban találtam egy hasonló hotendet, NF-Crazy néven, ami anyagában és kialakításában hasonló a Mosquito-hoz, de a fűtőpatront korrektebb módon fogja be, mint a Mosquito. Az összehasonlító leírást egyébként itt lehet elolvasni, ajánlom bárkinek, aki értelmes szakmai cikkeket szeretne olvasni a témában. Ami még fontos, hogy az NF-Crazy ára kb. 50 dollár, ami az anyaghasználat (réz blokk) és kialakítás szemszögéből nézve teljesen reális, így rendeltem egyet, és izgatottan vártam, hogy megérkezzen.

Első észrevételek és egy hibaforrás kiküszöbölése

Amikor megérkezett, azt vettem észre először, hogy a 4 tartócső egy leheletnyivel vastagabb falú, mint a Mosquito-ban. Ennek a hőátvitelben lehet szerepe (több hő tud átjutni a hűtőbordás tartórészre, ami nem lenne jó), de szerencsére ez nem okozott gondot.

Azt is ellenőriztem, hogy összeszerelt állapotban felül mennyire tud kicsavarodni a középső “etetőcső” a heatbreakkel együtt, és sajnos azt tapasztaltam, hogy éppen eléggé ahhoz, hogy alulról becsavarva a nozzle ne a heatbreak csővégéhez feszüljön hozzá, hanem a fűtőblokkhoz. Ez tömítetlenséget eredményezne újból, ezért a 4 tartócsőből 1-1 millimétert lecsiszoltam, így a fenti tér kisebb lett, és már nem tudott felül kicsavarodni a heatbreak annyira, hogy ne lehessen ráhúzni a nozzle-t. Ez így leírva kicsit nehezen érthető, de készítettem előtte és utána képet:

Belátható, hogy ez a módosítás a hotend hosszát nem befolyásolta, hiszen csak a fűtőblokk került közelebb a hűtőbordához, és a nozzle vége ugyanolyan távol van a befogási ponttól (hűtőbordától).

Az új hotend beépítése

Mielőtt szétszereltem volna a 3D nyomtatót, még kinyomtattam az új hotend Prusa-kompatibilis tartószerkezetét. A Mosquito-féle hotendhez a gyári megoldás nem tetszett, de találtam egy alternatívát a Hackaday.io weboldalon. Ez is a Mosquito hotendhez készült, és mivel az NF Crazy felső része megegyezik a Mosquito-éval, de a fűtőblokkja nagyobb, ezért minimálisan át kellett terveznem, mielőtt kinyomtattam.

Az áttervezett extruder szerkezete

Az áttervezett extruder szerkezete

Szerencsére Cadmium, a szerkezet tervezője a nyomtatható STL fájlok mellett megosztotta a STEP fájlokat is, így nem voll nehéz dolgom. Ezeket a terveket hamarosan közkinccsé is teszem, amint véglegesítettem őket. Már letölthetőek a Youmagine oldalamról.

A korábbi sok szétszedés és összerakásnak köszönhetően nem volt nehéz dolgom az extruder szétszerelését illetően. Egyébként szerencsére alapból sem nehéz folyamat az átépítés, mindössze 8-10 csavar kell kicsavarni ahhoz, hogy az extruder motort, a ventilátorokat és a hotendet kiszerelhessük. Az új szerkezethez még hozzá kellett alakítani a hotendbe vezető tefloncsövet, és pár helyen minimálisan megreszelni.

Az átalakítás során nemcsak a hotendet terveztem kicserélni, hanem az 50W/24V fűtőbetétet és a termisztort (hőmérsékletmérő szenzort) is, mivel a korábbi folyamatos szétszedésektől és összeépítésektől sérülhetett a vezetékük, és biztosra szerettem volna menni. Már csak azért is, mert a szétfolyt fűtőblokkból meglehetősen nehezen lehetett kioperálni a beleragadt fűtőbetétet és szenzort. Itt vége is lehetett volna a cikknek, de a termisztor kicsit megtréfált, úgyhogy duplahosszúságú lesz a cikk, ahogy az átépítés is legalább duplahosszúságú lett.

Az új főtőbetét és termisztor

Mindkét alkatrészből olyat vásároltam, aminek rövid vezetéke csatlakozóban végződik és egy hosszabbító vezetékkel lehet bevezetni őket a nyomtató alaplapjához. Ez azért előnyös, mert ha cserélni kell bármelyiket, akkor nem kell szétbontani a bebugyolált kábelvezető csatornát, elég az extruder mögött lecsatlakoztatni a kábelt, és cserélhető az alkatrész.

A termisztor hosszabbítójának végére a nyomtató eredeti termisztorcsatlakozóját forrasztottam át és zsugorcsővel szigeteltem, így elegánsan meg lehetett oldani az alaplapi csatlakoztatást.

Mindent szépen elegyengettem, burkoltam, rögzítettem, összecsavaroztam, beállítottam, jöhet a bekapcsolás!

Err: MINTEMP

Bekapcsoláskor a MINTEMP error fogadott, ami egyből arra engedett következtetni, hogy valami nincsen rendben a termisztorral. Ez a hibaüzenet egyébként azt jelenti, hogy túl hideget érzékel a nyomtató, és nem hajlandó működni. Ezt vagy ténylegesen a hideg okozhatja, vagy a termisztor által észlelt és az alaplap által értelmezett hőmérsékletérték hibás. Esetünkben az utóbbi volt a hiba oka, de elsőre nem tudtam mi okozza, így logikusan elkezdtem kibogozni a szálakat, amik végül jó mélyre vezettek.

Nem volt tapasztalatom termisztorokkal korábban, de annyit tudtam, az ellenállásuk változik a hőmérséklet hatására, és hogy kb. 100 kOhm ellenállásúak 25 Celsius fokon. Ezért megmértem az új termisztor ellenállását, és meglepetésemre azt tapasztaltam, hogy az ellenállása kb. 3000 kOhm. Akkor még nem tudtam, hogy ez normális, hibára kezdtem gyanakodni. Másnapra utánaolvastam, és kiderült, hogy ahányféle termisztor létezik, mindegyiknek más és más a hőmérséklet/ellenállás jelleggörbéje. A gyártó oldalán meg is találtam a megfelelő “temp table”-t, ami természetesen teljesen más jelleggörbe szerint működött, mint a gyári Prusa termisztor, ami egyébként egy ATC Semitec 104GT-2 típusú alkatrész.

Különböző hőmérsékletekhez tartozó ellenállásértékek

Különböző hőmérsékletekhez tartozó ellenállásértékek

Így, hogy rájöttem végül, hogy nem hibás az alkatrész (éppen egy nagyobb teljesítményűt rendeltem, hogy magasabb hőmérsékleten is tudjak nyomtatni), rá kellett jönni, hogy hogyan lehet megértetni a nyomtatóval a szenzor értékeit.

A firmware szerkesztésének előkészületei

Sajnos nincsen grafikus felület a nyomtatóban a termisztor típusának kiválasztására, ezért magában a firmware-ben kell definiálni, hogy milyen szenzort építettünk be a hotendbe. Ezzel kapcsolatban a termisztorom gyártója is adott útmutatásokat.

Halványan derengett, hogy a Prusa firmware-e a Marlin nevű firmware-en alapul, ezért az a leírás vonatkozott rám, hogy:

Configuration.h fájlban szükséges módosítás

#define TEMP_SENSOR_0 66
#define TEMP_SENSOR_1 66
#define TEMP_SENSOR_2 66
#define HEATER_0_MINTEMP 21
#define HEATER_1_MINTEMP 21
#define HEATER_2_MINTEMP 21
#define HEATER_0_MAXTEMP 500
#define HEATER_1_MAXTEMP 500
#define HEATER_2_MAXTEMP 500
// DyzEnd
#define DEFAULT_Kp 14.0
#define DEFAULT_Ki 0.5
#define DEFAULT_Kd 125.0

Configuration_adv.h fájlban szükséges módosítás

#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 5
#define MILLISECONDS_PREHEAT_TIME 30000

Mindezekhez tudnom kellett volna, hogy ezeket hol találom, hogyan szerkesztem, hogyan fordítom le programmá és hogyan juttatom a nyomtatóra :)

A “hol találom”-ra a kérdést könnyen megtaláltam, ugyanis a Prusa nyomtatók firmware-je elérhető a GitHub-on. Le is töltöttem.

Az Arduino IDE indítóképernyője

Az Arduino IDE indítóképernyője

A “hogyan szerkesztem és fordítom le” kérdésre némi fórumozás után találtam választ. A legtöbb 3D nyomtató alaplapja egy Arduino nevű kis számítógép, amit az Arduino IDE nevű fejlesztői környezetben lehet programozni. Ez Mac-re is elérhető, úgyhogy letöltöttem és telepítettem. Önmagában még nem működött, be kellett állítani néhány dolgot.

A beállításokban meg kellett adni egy további alaplap-kezelő URL-t, ahonnan le tudta tölteni a program a Prusa nyomtatókban lévő EINSY RAMBo panel tulajdonságait, ami a programozáshoz szükséges.

Alaplap-kezelő URL megadása

Alaplap-kezelő URL megadása

Ez az URL a következő:

https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json

Ezt követően az Alaplap-kezelő felületen (Eszközök – Alaplap – Alaplap-kezelő) már le tudjuk tölteni a “PrusaResearch EINSY RAMBo” nevű alaplap-definíciót, amire már le tudjuk majd fordítani a módosított firmware-t.

PrusaResearch EINSY RAMBo telepítése

PrusaResearch EINSY RAMBo telepítése

Ha a letöltött Firmware mappából megnyitjuk a “Firmware.ino” fájlt, akkor a teljes firmware-csomag megnyílik az Arduino IDE alkalmazásban, és lehetővé válik a forrásfájlok szerkesztése és a firmware lefordítása. Próbaképpen módosítások nélkül megpróbáltam a firmware lefordítását a bal felső pipa gomb megnyomásával. Ez a hiba fogadott:

Hibaüzenet fordításkor

Hibaüzenet fordításkor

A hibát valamiféle verziók közötti konfliktus okozza MacOS-en, de találtam rá megoldást ezen a fórumon. Nevezetesen egy sort kell kicserélni az eeprom.h fájlban:

static constexpr M500_conf * const EEPROM_M500_base = reinterpret_cast(20); //offset for storing settings using M500

helyett

static M500_conf * const EEPROM_M500_base = reinterpret_cast(20); //offset for storing settings using M500

a fenti sort kell beleírni a fájlba, és már működni is fog a firmware lefordírása.

Az új termisztor beállítása a firmware-ben

Az alábbi útmutatóm könnyen adaptálható más termisztorra is, ezért azoknak is hasznos lehet, akik másféle termisztort szeretnének építeni a nyomtatójukba.

A fentebb linkelt termisztor-beállító parancsok a Marlin firmware-hez lettek kitalálva, és bár a Prusa nyomtató firmware-e is Marlin-on alapul, a két változat útjai már rég elváltak egymástól, és nem ennyire egyszerű a dolog. Ami szemet szúrt az a #define TEMP_SENSOR_0 66 sor volt. Ez egyfajta listából (thermistortables.h fájlban) a 66-os számú termisztort választja ki (alapból 5-ös van megadva, ami a gyári termiszot táblázatát tölti be). Sajnos a 66-os termisztor definíciója csak az újabb Marlin firmware-ekben van benne, a Prusa firmware-ben nincsen 66-os típusú termisztor definiálva.

Ezért próbaképpen letöltöttem a Marlin legfrissebb verzióját, amiben valóban megtaláltam a 66-os termisztor adattáblázatát a thermistor_66.h fájlban, így:

// R25 = 2.5 MOhm, beta25 = 4500 K, 4.7 kOhm pull-up, DyzeDesign 500 °C Thermistor
const temp_entry_t temptable_66[] PROGMEM = {
  { OV(  17.5), 850 },
  { OV(  17.9), 500 },
  { OV(  21.7), 480 },
  { OV(  26.6), 460 },
  { OV(  33.1), 440 },
  { OV(  41.0), 420 },
  { OV(  52.3), 400 },
  { OV(  67.7), 380 },
  { OV(  86.5), 360 },
  { OV( 112.0), 340 },
  { OV( 147.2), 320 },
  { OV( 194.0), 300 },
  { OV( 254.3), 280 },
  { OV( 330.2), 260 },
  { OV( 427.9), 240 },
  { OV( 533.4), 220 },
  { OV( 646.5), 200 },
  { OV( 754.4), 180 },
  { OV( 844.3), 160 },
  { OV( 911.7), 140 },
  { OV( 958.6), 120 },
  { OV( 988.8), 100 },
  { OV(1006.6),  80 },
  { OV(1015.8),  60 },
  { OV(1021.3),  30 },
  { OV(  1022),  25 },
  { OV(  1023),  20 }
};

A Prusa firmware-ben a termisztortáblázatok mindegyike a thermistortables.h fájlban van, ezért fogtam magam, és lemásoltam az 1-es táblázatot, és átneveztem 66-osra, majd az adatokat a fenti táblázatból kimásolva végül ezt kaptam (a formátumot a Prusa Firmware-hez igazítottam):

#if (THERMISTORHEATER_0 == 66) || (THERMISTORHEATER_1 == 66)  || (THERMISTORHEATER_2 == 66) || (THERMISTORBED == 66) // Mellow Dyze 500
const short temptable_66[][2] PROGMEM = {
{  17.5*OVERSAMPLENR , 850 },
{  17.9*OVERSAMPLENR , 500 },
{  21.7*OVERSAMPLENR , 480 },
{  26.6*OVERSAMPLENR , 460 },
{  33.1*OVERSAMPLENR , 440 },
{  41.0*OVERSAMPLENR , 420 },
{  52.3*OVERSAMPLENR , 400 },
{  67.7*OVERSAMPLENR , 380 },
{  86.5*OVERSAMPLENR , 360 },
{ 112.0*OVERSAMPLENR , 340 },
{ 147.2*OVERSAMPLENR , 320 },
{ 194.0*OVERSAMPLENR , 300 },
{ 254.3*OVERSAMPLENR , 280 },
{ 330.2*OVERSAMPLENR , 260 },
{ 427.9*OVERSAMPLENR , 240 },
{ 533.4*OVERSAMPLENR , 220 },
{ 646.5*OVERSAMPLENR , 200 },
{ 754.4*OVERSAMPLENR , 180 },
{ 844.3*OVERSAMPLENR , 160 },
{ 911.7*OVERSAMPLENR , 140 },
{ 958.6*OVERSAMPLENR , 120 },
{ 988.8*OVERSAMPLENR , 100 },
{1006.6*OVERSAMPLENR ,  80 },
{1015.8*OVERSAMPLENR ,  60 },
{1021.3*OVERSAMPLENR ,  30 },
{  1022*OVERSAMPLENR ,  25 },
{  1023*OVERSAMPLENR ,  20 },
};
#endif

A gyártó által leírt konfigurációs módosításokat egyébként a Prusa esetében nem a Configuration.h fájl tartalmazza, hanem a megfelelő modellhez tartozó configuration_prusa.h fájl. Ez alapból nincsen benne a firmware-ben, hanem nekünk kell kimásolni a “variants” mappából a mi modellünkhöz tartozó fájlt és átnevezve a főkönyvtárba másolni. Esetemben például a “variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h” fájlt kellett egy szinttel feljebb másolni “configuration_prusa.h” néven. Ebben a fájlban tudtam aztán módosítani a TEMP_SENSOR_0 értéket.

Egy kis technikai háttér: A nyomtató alaplapja nem a termisztor ellenállását méri, hanem egy kis áramkör segítségével az termisztoron (ellenálláson) eső feszültséget. Ezt felvezeti egy 10 bites skálára (0-1023-ig, lásd fenti lista), ezt még felbontásnövelés végett felbővíti még 4 bittel (OVERSAMPLENR = 16). Mindegyik értékhez tartozik egy mért hőmérsékletérték, ez adja a fenti “temp table”-t. Az értékek között a program valamilyen algoritmus alapján kiszámolja, interpolálja az aktuális hőmérsékletet, és ez alapján kapcsolgatja be a PID vezérlő a fűtőbetétet egy kívánt hőmérséklet eléréséhez és szinten tartásához.

Működik!

A sikeres firmware-feltöltéshez még egy apróságot át kellett állítani a firmware-ben (config.h fájlban), így:

#define LANG_MODE              0 // primary language only
//#define LANG_MODE              1 // sec. language support

A firmware szerkesztését követően lefordítottam azt és felküldtem a nyomtatóra.

Felküldjük a nyomtatóra a módosított firmware-t

Felküldjük a nyomtatóra a módosított firmware-t

Izgalmas pár perc volt, de végül működött és a nyomtató már a valós hőmérsékletet mutatta! Legalábbis akkor még azt hittem.

Kalibrálás

A sok-sok kutakodásom mellett még egy további hasznos Zen3D cikket olvastam, ami abszolút kapcsolódott az átépítéshez: a termisztor kalibrálásáról írt benne Zoli, akiről alig győzöm hangsúlyozni, mennyire jók a cikkei.

A kalibrálást nem fogom bemutatni részletekbe menően, mivel arra ott van Zoli cikke, de címszavakban azért leírom.

Saját, multiméteres hőmérőmet kalibráltam forró víz segítségével. Forrásban lévő vízben 99.9-100.0 fokot mért, így azt feltételeztem, hogy használható lesz magasabb hőmérsékletek beállításához is. (Mérnökileg ez a következtetés teljesen megalapozatlan és vitatható, de bízom a Fluke mérnökeiben, hogy jó minőségű hőmérőt adtak a műszerükhöz).

A műszerem hőmérőjét bedugttam a kicsavart Nozzle helyére és betömködött alufóliadarabbal stabilan rögzítettem.

Hőmérsékletmérés és kalibrálás a nozzle helyén

Hőmérsékletmérés és kalibrálás a nozzle helyén

Bekapcsoltam a nyomtató firmware-ében (Configuration_adv.h fájlban) a nyers ADC értékek mutatását, így:

//Show Temperature ADC value
//The M105 command return, besides traditional information, the ADC value read from temperature sensors.
#define SHOW_TEMP_ADC_VALUES

Így a nyomtató a vélt vagy valós kiszámolt hőmérsékletértéke mellett kiírja a konzolban vagy a Pronterface applikációban az adott hőmérséklethez tartozó ADC értéket (a fenti 0-1023) skálából.

A fentiek alapján már nincs más dolgunk, mint 20 fokonként beállítani a hotend hőmérsékletét, leolvasni az ADC értéket, és a fenti thermistortables.h fájlban átszerkeszteni az adott hőmérsékletekhez tartozó értéket.

Nekem például a 66-os táblázat alapján beállított nyomtató 200 fok felett már 20-30 fokos eltérést is mutatott a multiméter hőmérőjéhez képest.

Egy példa a 240 fokos hőmérséklet kalibrálására:

Beállítottam a nyomtatón 240 fokot. Vártam. A nyomtató felmelegedett, de valójában csak kb. 220 fokig (a multiméter hőmérője alapján). Ezért a nyomtatón addig állítottam feljebb a hőmérsékletet (261 fokig), míg a multiméter hőmérője el nem érte a valós 240 fokot. Ekkor az M105 paranccsal vagy a Pronterface alkalmazás segítségével leolvastam a kiírt ADC értéket. Ezt pedig beírtam a korábban elkészített 66-os termisztortáblámba a benne lévő érték helyett, és így lett végül egy módosított, kalibrált táblázatom.

Látható az eltérés, emiatt is fontos kalibrálni!

Látható az eltérés, emiatt is fontos kalibrálni!

#if (THERMISTORHEATER_0 == 66) || (THERMISTORHEATER_1 == 66)  || (THERMISTORHEATER_2 == 66) || (THERMISTORBED == 66) // Mellow Dyze 500
const short temptable_66[][2] PROGMEM = {
{         17.5*OVERSAMPLENR , 850 },
{         17.9*OVERSAMPLENR , 500 },
{         21.7*OVERSAMPLENR , 480 },
{         26.6*OVERSAMPLENR , 460 },
{         33.1*OVERSAMPLENR , 440 },
{         38.0*OVERSAMPLENR , 420 },
{         43.0*OVERSAMPLENR , 400 },
{         52.0*OVERSAMPLENR , 380 }, // ettől felfelé már nincs kalibrálva
{         58.9*OVERSAMPLENR , 360 }, // idáig kalibrálva
{         77.3*OVERSAMPLENR , 340 },
{        102.9*OVERSAMPLENR , 320 },
{        135.9*OVERSAMPLENR , 300 },
{        184.8*OVERSAMPLENR , 280 },
{        246.5*OVERSAMPLENR , 260 },
{        319.5*OVERSAMPLENR , 240 },
{        415.4*OVERSAMPLENR , 220 },
{        534.5*OVERSAMPLENR , 200 },
{        684.6*OVERSAMPLENR , 180 },
{        799.3*OVERSAMPLENR , 160 },
{        887.8*OVERSAMPLENR , 140 }, 
{        949.6*OVERSAMPLENR , 120 },
{        986.0*OVERSAMPLENR , 100 },
{       1006.6*OVERSAMPLENR ,  80 },
{       1015.8*OVERSAMPLENR ,  60 },
{       1021.3*OVERSAMPLENR ,  30 },
{         1022*OVERSAMPLENR ,  25 },
{         1023*OVERSAMPLENR ,  20 },
};

#endif

A 20 fokonként kalibrált értékekkel újból lefordítva és feltöltve a firmware-t a nyomtatóra más a beállított hőmérséklet igen megközelítette a valós hőmérsékletet, pár fokos eltérést sikerült elérnem. Ezt követően még futtattam egy PID kalibrációt is a hőmérsékletvezérlés adaptálásához. Én 360 fokig kalibráltam a nyomtatómat, egyelőre nem láttam értelmét ennél feljebb menni, de elvileg a termisztor 450-500 fokig tudna pontosan mérni.

Hőmérsékletkalibrálás több lépcsőben

Hőmérsékletkalibrálás több lépcsőben

Miután végeztem a kalibrálással, betekertem a nozzle-t, és lefuttattam a teljesen összeépített nyomtató XYZ kalibrációját, és az első rétegvastagság kalibrációját is. Minden rendben lefutott, és végre lett egy (remélhetőleg) sokkal megbízhatóbban működő, normálisan karbantartható Prusa i3 MK3S nyomtatóm, amiben büntetlenül tudok cserélni fúvókát, ha úgy tartja kedvem, anélkül, hogy utána a csöpögéstől kellene tartanom!

Az első olvadt műanyagcseppek!

Az első olvadt műanyagcseppek!

Nagyon sokat tanultam ezzel a pár órásnak induló, de pár napossá nyúló átalakítással, és remélem, hogy a leírásom másnak is hasznos lesz egyszer. Ha Neked is van hasonló történedet, írd meg komment formájában, nagyon érdekel!

Helyzetjelentés egy hónappal később

A fenti átalakítás több problémát is hordozott magában, amik csak pár napi, pár heti használat után derült fény. Ezekről még írok, mert ezek kapcsán pár javítást is eszközöltem, és megspórolnám az időt annak, aki hasonló átalakításba vágja a fejszéjét.

Első rétegmagasság pontatlansága

Az egyik probléma az volt, hogy az első réteg magasságát valamiért mindig után kellett állítani. Eleinte nem értettem miért van ez, és arra gyanakodtam, hogy a PINDA (extruder függőleges helyzetét érzékelő) szenzor vagy a tartószerkezete minimálisan elmozdul, és emiatt kell állítgatni az első rétegmagasságon. A probléma oka nem ez volt, hanem a teljes tartószerkezet anyagválasztása, és a kialakítás egy fontos hiányossága.

Én a megszokott módon PETG-ből nyomtattam ki az extruder tartószerkezetét, de valamiért a Mosquito felső, befogott része (a fekete hűtőborda) túlságosan felmelegedett, és lassan elkezdett deformálódni a tartószerkezet. A kialakításból látható, hogy az egész extrudert egy pár milliméteres alsó perem tartja felfüggesztve, és mivel az is megolvadt, a lefelé történő folyamatos nyomástól az extruder egy idő után lesüllyedt. Ezt már csak akkor vettem észre, amikor egy nyomtatás során konkrétan alulra ki is kandikált, és csak trancsírozta maga alatt az anyagot.

Első gondolatom az volt, hogy a komplett tartószerkezetet újranyomtatom hőállóbb anyagból, nevezetesen PC-ből (Polikarbonátból). A PETG-nek a lágyulási hőmérséklete kb. 75 fok, míg a PC-nek ezzel szemben kb. 150 fok. 60-70 fokot nagyon könnyen elérte az extruder teteje, ezért nem volt meglepő a megolvadás.

A hűtőborda immár stabilan rögzítve

A hűtőborda immár stabilan, csavarral is rögzítve!

Ugyanakkor észrevettem még, hogy kár lenne kihagyni a stabil rögzítés érdekében a hűtőborda tetejében lévő furatokba tehető csavarok lehetőségét. Gyorsan átterveztem a modellt, és már így küldtem el Attilának nyomtatásra. Tökéletes lett, és nagyon masszívan lehetett rögzíteni benne az egész extrudert. Az eredeti probléma kb. egy hét alatt jelentkezett, és a megoldást követően már három hete stabil a rendszer, úgyhogy ezt a kérdést megoldottnak tekintem.

Visszahúzásokból adódó dugulás

Angolul “Retraction”-nek hívják, amikor a nyomtató picit visszahúzza a nyomtatószálat olyankor, amikor átmegy egy másik helyre nyomtatni. Ha ezt nem tenné, akkor az átmenet közben is folyna a megolvadt műanyag, és pókhálót húzna. Ugyanakkor ha egy modellben sok a visszahúzási alkalom, vagy esetleg túl nagy érték van megadva visszahúzs mértékének, könnyen előfordulhat, hogy a meleg nyomtatószál felvezeti a hőt olyan magasra, hogy már nem egy lenyomható merev rúdként viselkedik, hanem egy lágy pálcaként, amit nem lehet már lenyomni a nyomtatófej tűhegynyi lyukán keresztül. Ilyenkor bedugul az egész rendszer, és azon túl, hogy valahogy ki kell dugítani, meg is kell fejteni a probléma okát, ami sokszor nem egyértelmű.

Már az első rétegnél eldugult a nyomtatófej

Már az első rétegnél eldugult a nyomtatófej

Ezt a dugulást okozhatja túl lassú extudálási sebesség, túl hosszú visszahúzás, de okozhatja az extruder motor felmelegedése is, ami a tengelyén keresztül érintkezik az anyaggal és idő előtt meglágyíthatja azt. Kifűzéskor viszont nem a klasszikus “heat creep” jeleit láttam a megmaradt nyomtatószálon, amikor látszik, hogy az anyag felfelé menve meglágyul és dugót képez, hanem azt, hogy felfelé menve a szál teljesen merev, majd egy rövid szakaszon meglágyult. EZ a rövid szakasz egybeesett a hűtőborda bemeneti nyílásával, így arra gondoltam, hogy valamiért túl sok hő jut fel a hűtőbordáig, vagy legalábbis nincs elegendően lehűtve. A ventilátor jól működött, így azt, mint hibaforrást kizártam.

A megolvadt nyomtatószál a hűtőborda tetején

A megolvadt nyomtatószál a hűtőborda tetején

Én arra gyanakodtam, hogy a korábban is említett 4 darab hőszigetelő csövecske falvastagsága nem elég vékony ahhoz, hogy jól elválassza a hideg és meleg zónát az extruderben, ezért kértem Zolitól 4 darab vékonyabb falú csövecskét, amire kicseréltem az én vastagabb faló csöveimet. Egyelőre úgy tűnik, hogy ez lehetett a hiba oka, nem volt azóta PETG anyaggal dugulásom. PLA-val nem nyomtatok (az kényesebb erre), így azt másnak kell letesztelnie. Azóta rendeltem tartalék csövecskéket is, nem árt ha van.

(Egyébként visszatérve a tartószerkezet megolvadására: simán lehet, hogy a rosszabb hőszigetelés miatt jutott fel elegendő hő a szerkezet megolvasztásához. Ez már nem fog kiderülni, szerintem továbbra is érdemes az extruder tartószerkezetét hőálló anyagból készíteni.)

Alátámasztás nélküli felületek nyomtatási minősége

Észrevettem, hogy a nagyobb “overhang”-ek esetében elcsúnyul a nyomtatási minőség. Ennek is sok oka lehet, lehet orvosolni több módon: több rétegnyi külső fallal (perimeter), lassabb nyomtatással, alacsonyabb hőmérséklettel, erősebb és precízebben irányított hűtéssel. Ezek közül majdnem minden állítható szoftveresen, kivéve a hűtés irányítottsága, ezért miután már számtalan lehetőséget kipróbáltam, és még mindig nem voltam elégedett, úgy dönteöttem, hogy áttervezem a tárgyhűtő ventilátor kivezetését (fan shroud).

Próbálkozások a tárgyhűtő légterelőjével

Sikertelen próbálkozások a tárgyhűtő légterelőjével

Mivel a Prusa gyári extrudere szemből nézve szimmetrikus, ezért annál könnyű megoldani a szemből áramló levegő útvonalának kétoldali szimmetriáját. A Mosquito hotendje viszont oldalról nézve vzimmetrikus, ezért eleinte hiába módosítottam szélesebbre a gyári Prusa fan shroud-ot, az nem igazán segített: bal oldalon jó volt a hútés, jobb oldalon nem, mert ott már túl messze került a nozzle-től a légterelő.

Így hát azt találtam ki, hogy a szemből érkező levegő egyik felét nekivezetem a nozzle-nek, a másik felét pedig hátracsatornázom, és hátulról hűti a tárgyat. Ez egyébként a gyári Prusa fan shroud-nek is problémája, hogy a hátrafelé néző tárgyrészeket nem hűti eléggé.

Jól látszik a levegő útja, illetve a szimmetria

Jól látszik a levegő útja, illetve a szimmetria

Néhány iteráció után már elégedett vagyok az eredménnyel, szebben is sikerülnem az apró, túlságosan is részletgazdag modellek. Az új légterelő egyébként eléggé lefogja a ventilátort, hangosabb is tőle, biztosan lehetne még fejleszteni rajta, de az időm sajnos nem végtelen, így ennyire futotta, szerintem egész jó lett.

Teszteléshez Stian Ervik Wahlvaag (@agepbiz) apró, print-in-place modelljeit használtam, amik meglehetősen jól sikerültek!

Apró, működőképes mütyűrök - sikeresen kinyomtatva!

Apró, működőképes mütyűrök

A fenti hibajavításokkal frissített modelljeimet le lehet tölteni a Youmagine oldalamról.

A reklám helye

3D nyomtatónkkal nemcsak magunkat szórakoztatjuk. A folyamatos fejlesztéssel és finomhangolással tehetünk szert egyre nagyobb tapasztalatra, amit szebb és jobb termékek gyártásával tudunk kamatoztatni Ügyfeleink részére. Megrendelésre gyártunk mütyűröket, díszeket, alkatrészek prototípusait, képzőművészeti alkotásokat, és gyakorlatilag bármit, ami elfér egy 20x20x20-as kockában.

Komoly tapasztalattal rendelkezünk 3D modellezés (Fusion 360) terén is, így ha valamiről nincsen letölthető mdoell, akkár le is modellezzük. Termékfejlesztési projektekben is szívesen részt veszünk.

Ha bármilyen ötleted vagy kérdésed adódna, keress minket bátran! A 3D nyomtatás oldalunkon minden fontos részletet megtalálsz!

Értesítsünk új cikkeinkről?

Ha tetszett a cikkünk, feliratkozhatsz értesítési listánkra.

Nem küldünk semmiféle reklámot, csak újonnan megjelent cikkeinkről értesítünk.

Vélemény, hozzászólás?

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