Klipper - druhá část
29. března 2023 11:32V druhém pokračování článku o FW Klipper jsem slíbil, že se budeme věnovat zkvalitnění a zrychlení tisku. Pokud jste nečetli první část, doporučuji si přečíst. Budu vycházet z informací, které jsem zmínil právě v něm.
Pressure advance
Já osobně mám zkušenosti se dvěma užitečnými vylepšeními, které Klipper nabízí. První z nich je funkce Pressure advance.
Tato funkce vám umožní eliminovat bloby (přeextrudovaní) v rozích a obecně zahnutých plochách výtisku. Funguje to tak, že Klipper predikuje, co bude tisková hlava dělat v následujících pohybech a podle toho upravuje posun materiálu do trysky. Pokud začne tisková hlava zpomalovat například před nějakým rohem, Klipper zpomalí posun tiskové struny do trysky a po jejím projetí, nebo těsně před ním, ho opět zvýší. Tím se v trysce nejdříve sníží tlak a v samotném rohu se nevytlačí přebytek materiálu a za rohem zase materiál nechybí. Jednoduše řečeno by se dalo říct, že při zpomalení dochází k pomalé „retrakci“. Reálně to ale není zasunutí materiálu zpět, ale jen jeho zpomalení oproti běžnému tisku.
Na Obrázku 1 je vidět, jak toto funguje při úplném zastavení toku materiálu a následném přesunutí tiskové hlavy bez vytlačování struny při vypnutém Pressure advance.
Obrázek 1 – tlak v tiskové hlavě bez Pressure advance. https://www.klipper3d.org/Kinematics.html
Na Obrázku 2 je vidět samotná kompenzace. Je zde vidět, že těsně před samotným pohybem je do trysky vytlačeno více materiálu, aby byl vyvinut dostatečný tlak materiálu pro následný tisk. Při zpomalení je to zase naopak. Nejdříve se zpomalí průtok materiálu v extruderu, tím se sníží tlak v trysce a při ubrání už jen doteče materiál, který v trysce je.
Obrázek 2 - Kompenzace Pressure advance. https://www.klipper3d.org/Kinematics.html
Aby tato funkce správně fungovala, musí se vhodně zvolit potřebné parametry. Tyto parametry se určují experimentální metodou, kdy se vytiskne objekt, na kterém je možné sledovat potřebné změny v návaznosti na změny parametru Pressure advance. Já jsem postupoval podle návodu ze stránky https://www.klipper3d.org/Pressure_Advance.html. Zde je ke stažení krychlový objekt, na kterém jsou tyto vady zřetelně vidět.
Pro samotný tisk objektu jsem nastavil rychlosti 100 mm/s, žádný infill, výšku vrstvy 0,3 mm (75 % průměru trysky), přesně jak je doporučeno. Dále jsou zde dva příkazy, které se zapíší do konzole. Příkaz „SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500“ nastaví zrychlení tiskárny na 500 mm/s2, což je malé zrychlení, aby se více projevovaly právě tyto nedostatky. Druhým příkazem je „TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005“. Tímto příkazem se nastaví nulové Pressure advance na první vrstvě. To se ale bude postupně zvyšovat o 0,005 každou vrstvou. Následně se může tisknout.
Výsledkem je zajímavý výtisk, viz Obrázek 3, na kterém je na první pohled vidět, že se během tisku opravdu v nastavení tiskárny něco měnilo. Já konkrétně jsem objekt zastavil asi na 66 % tisku, protože další vrstvy už byly očividně zbytečné.
Obrázek 3 – Výsledek tisku testovacího objektu s Pressure advance
Na výtisku je vidět, že přestože jsem použil velmi malý krok zvětšování parametru Pressure advance, už v prvních vrstvách byla jeho hodnota velmi dobrá. Naopak ve vyšších vrstvách už bylo snižování tlaku v trysce příliš velké a díky tomu chyběl v rozích materiál. Nyní je důležité si výtisk pořádně prohlédnout ze všech stran a určit, která vrstva je ta nejhezčí. Je to ta, u které není vidět před a za rohem úbytek materiálu a na samotném rohu zase není přebytek materiálu. Následně je potřeba co nejpřesněji změřit vzdálenost této vybrané vrstvy, nebo oblasti od první vrstvy. Já jsem použil posuvku a výsledkem byla vzdálenost 3,43 mm, jak je vidět na Obrázku 4. Tuto hodnotu je nyní potřeba zahrnout do výpočtu.
Obrázek 4 - Měření výšky ideální vrstvy
Parametr Pressure advance PA = (startovací výška + změřená vzdálenost) * zvolený krok v druhém příkazu, který se zadal do konzole. V mém případě se tedy jedná o výpočet PA = (0+3,43) * 0,005. Z tohoto měření a výpočtu vyplývá, že ideální nastavení parametru Pressure advance pro moji tiskárnu je 0,017. Toto číslo se následně zapíše do konfiguračního souboru v Klipperu a je hotovo. V mém případě, jelikož mám tiskárnu osazenou přímým extruderem BIQU H2 a tisknu spíše na nižší teploty, je hodnota Pressure advance nízká. V minulosti, když jsem měl na tiskárně ještě originální extruder s dlouhým bowdenem, měl jsem tento parametr okolo 0,4. To znamená, že kompenzace musela být výraznější.
Resonance Compensation
Druhou funkcí, která vám pomůže vylepšit a zrychlit tisk, je rezonanční kompenzace. Touto funkcí je možné se zbavit takzvaných duchů. Duchy jsou povrchová vada tisku, která se projevuje opakováním se nějaké struktury tisku. Typicky se jedná o rohy, které jsou ve směru tisku ještě několikrát vidět na povrchu výsledné plochy. Jedná se tedy o kompenzaci této vizuální povrchové vady, jako je vidět Obrázku 5. Tyto vady vznikají mechanickými vibracemi samotné tiskárny, typicky nízkou tuhostí rámu, špatně nataženými řemeny apod. Vibrace jsou tedy závislé na pohybující se hmotě, především na samotné tiskové hlavě. Čím je těžší tisková hlava a méně tuhá konstrukce, tím jsou vady zřetelnější a jejich počet je větší. Možné řešení bez zásahu do FW je co nejvíce odlehčit tiskovou hlavu a snížit zrychlení při tisku. Klipper ale umí tyto neduhy tiskárny eliminovat. Za podobného principu jako v případě Pressure advance, se experimentální metodou změří tyto frekvence a následným zvolením vhodných parametrů je dokáže Klipper kompenzovat. Druhou možností je použít metodu měření pomocí akcelerometru, který bohužel nevlastním.
Obrázek 5 - Duchy na výtisku
Pro nastavení rezonanční kompenzace jsem opět použil návod ze stránky https://www.klipper3d.org/Resonance_Compensation.html. Zde je opět k dispozici model a seznam parametrů tisku, díky kterým je možné kompenzaci nastavit. U samotného tisku je potřeba vysoká rychlost, žádná výplň a vypnuté řízení zrychlení ve sliceru. Právě změnou zrychlení na jednotlivých částech tisknutého objektu budeme moci vhodně zvolit natavení tiskárny. Je také nutné mít na podložce objekt správně orientovaný, protože se pomocí značek X/Y nastavují parametry pro příslušné roviny tiskárny.
Následně se pomocí příkazů nastaví tiskárna tak, aby proběhl tisk podle našich představ. Prvním příkazem je „SET_VELOCITY_LIMIT ACCEL_TO_DECEL=7000“, kterým se zvýší maximální zrychlení tiskárny na 7000 mm/s2. Další příkaz je „TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=1500 STEP_DELTA=500 STEP_HEIGHT=5“. Tento příkaz nám zajistí, že se v průběhu tisku bude zvyšovat zrychlení od hodnoty 1500 mm/s2 po 500 mm/s2 každých 5 mm výšky tisku. Z toho vyplývá, že prvních 5 mm tisku bude nastaveno zrychlení 1500 mm/s2 a posledních 5 mm budou v tomto případě tisknuty se zrychlením 7000 mm/s2, protože má tisknutý objekt 12 částí po 5 mm. Tím je nastavení hotovo a může se tisknout testovací objekt.
Tisk je velmi rychlý a do 30 minut se muže jít měřit. Pro samotnou kompenzaci potřebujeme zjistit frekvenci kmitání, která se projeví právě výše zmíněnými duchy. Pro co nejpřesnější měření je vhodné použít posuvku a přeměřit co největší počet duchů. Princip odečtu frekvence je takový, že se změří šíře většího počtu duchů (oscilací) na výtisku, jako je vidět na Obrázku 6.
Obrázek 6 - Měření oscilací (Zdroj: https://www.klipper3d.org/Resonance_Compensation)
Měření musíme provést pro obě osy. V mém případě mi pro osu Y vyšla vzdálenost 15,25 mm na 8 oscilací. Pro výpočet frekvence v Hz slouží vzorec: f=(v*n)/d, kde „v“ je rychlost tisku v mm/s, „N“ je počet oscilací a „D“ je celková naměřená vzdálenost v mm. Po dosazení mých hodnot vyjde fy= 100 * 8 / 15,25 = 52,459 Hz.Pro osu X jsem naměřil hodnotu 12,92 pro 7 oscilací(přiložený obrázek měření není můj). Výsledná frekvence fx mi vyšla 51,99 Hz. Tyto hodnoty se následně vloží do konfiguračního souboru printer.cfg. Pod hlavičku [input_shaper] tedy vložíme pro každou osu příslušnou frekvenci. V mém případě vypadají řádky takto: shaper_freq_x: 51.99 a shaper_freq_y: 52,46. S těmito parametry se config uloží a pokračuje se v testování. Dalším parametrem, který ovlivňuje vliv této kompenzace na výsledný tisk, je typ kompenzace. Klipper podporuje dva základní typy – MZV a EI. Každý z nich kompenzuje tyto rezonanční frekvence jinak, a proto je vhodné vyzkoušet oba dva. Pomocí příkazu „SET_INPUT_SHAPER SHAPER_TYPE=MZV“ a ,,SET_INPUT_SHAPER SHAPER_TYPE=EI“ vytiskneme ještě dvakrát testovací objekt. Výsledky následně porovnáme s původním tiskem, jestli opravdu došlo ke zlepšení. Pokud ano, měřili jsme oscilace správně a následně porovnáme dva nové tisky mezi sebou. Pokud mezi nimi nevidíme výrazný rozdíl, zvolíme input shaper MZV. Ten má oproti EI výhodu v tom, že má menší vliv na tisknutý objekt. Jinak řečeno EI shaper více ovlivní tvar výsledného objektu. Toto byl i můj případ, a proto jsem do configu za frekvence pro jednotlivé osy připsal parametr „shaper_type: mzv“. Pokud se i po nastavení rezonančních frekvencí do configu rezonance objevují, je vhodné měření opakovat. Na Obrázku 7 je vidět porovnání mých výtisků před a po kompenzaci. V horní části obrázku je vždy původní tisk bez kompenzace a dole výtisk s kompenzací.
Obrázek 7 - Porovnání před a po kompenzaci (osa Y vlevo a osa X vpravo)
Na Obrázku 7 vlevo, tedy ose Y, je vidět obrovské zlepšení po nastavení kompenzace. I při zrychlení 7000 mm/s2 jsou oscilace viditelné minimálně, což považuji za velký úspěch a měření jsem provedl správně. Co se týče obrázku vpravo, tedy osy X, tam je zlepšení také vidět, ale výsledek není tak dobrý jako u osy Y. Důvodem může být nepřesné měření nebo nevhodný typ kompenzace. Pro dosažení lepších výsledků je ideální postup opakovat anebo použít akcelerometr, který by nám dokázal změřit frekvence s výrazně větší přesností. Pro hrubé naladění tiskárny ale tato experimentální metoda dostačuje.
Další parametr, který se dá během tohoto měření určit, je maximální zrychlení tiskárny. S rostoucím zrychlením se totiž zvyšuje vyhlazení výtisku, a to nám může ovlivňovat výslednou funkci výrobku. Z toho důvodu je potřeba se na testovací výtisky podívat znovu. Konkrétně nás zajímá ona vlnkatá část vlevo, která se s rostoucím zrychlením rozděluje, čímž vzniká mezera, jako je vidět na detailu osy Y, viz obrázek 8. Zde je vidět, že od cca 5. až 6. vlnky zespodu vznikají malé dírky a ty značí, že má zrychlení značný vliv na výsledek tisku. Pokud bych tedy chtěl zachovat kvalitu a funkci tisku, nastavil bych maximální zrychlení tiskárny na 3500-4000 mm/s2. U sedmé vlnky (zrychlení 4500 mm/s2) už je zaoblení z mého pohledu velké. V závislosti na požadované rychlosti tiskárny a kvalitě výsledného tisku si ale může každý zvolit maximální zrychlení, jak uzná za vhodné.
Obrázek 8 – Vznik mezery – volba maximálního zrychlení
V tomto článku jsem se pokusil shrnout základní funkce Klipperu, které nejsou nikterak speciální, ale je to takový základ, který tiskárnu pomocí výpočetního výkonu Raspberry posune na vyšší level. Výsledný tisk je pak znatelně lepší a takovéto hrubé naladění nezabere člověku moc času.
Lukáš Žídek