V minulém článku jsme lákali na připravované vývojářské deníčky – a první vlaštovka je zde. Co jsme si pro vás přichystali? Prostřednictvím vývojářských deníčků vás chceme seznamovat s nejrůznějšími technologickými a vývojářskými postupy. Bude se proto jednat o techničtěji zaměřené texty. Dnes se podíváme na Mesh Bed Leveling, tedy kalibraci, která se stará o to, aby tiskárna dobře tiskla i s mírně nerovnou podložkou.

Začalo to komunitou

Mesh Bed Levelling 7×7 (dále jen MBL) byl před časem velké téma a mnoho uživatelů od něj hodně očekávalo. Jeho podstatnou mělo být dle prvních reakcí výrazné zlepšení kompenzace ohnutí tiskové plochy, aby bylo možné první vrstvu tištěného modelu položit téměř dokonale. Přibližně před půl rokem se na našem Githubu objevily první pull requesty implementující 7×7 MBL. Ani s jednou implementací jsme nebyli zcela spokojeni, ty nejlepší však posloužily jako základ pro naši vlastní implementaci.

Především nám chyběla tvrdá data, skutečná měření. Proto jsme se nejdříve rozhodli kvalitu algoritmů MBL exaktně změřit úchylkoměrem a ne jen vizuálně na testovacím modelu.

Vytvořili jsme proto sadu speciálních firmwarů, přičemž každý obsahoval jednu implementaci nového MBL  (přejaté pull requesty od externích přispěvatelů a naše vlastní implementace). Všechny byly doplněny automatickým měřením vzdálenosti od plochy pomocí digitálního úchylkoměru.

Konkrétně jde o:

  • Náš Prusa FW s MBL 3×3
  • FW od uživatele stahlfabrik s podporou MBL 7×7
  • FW od uživatele mionut taktéž s podporou MBL 7×7

Měření pomocí úchylkoměru se aktivovalo speciálním G-kódem, konkrétně šablonou: G78 Aaaa Bbbb Cccc Dddd Eeee Ffff, kde:

  • aaa je šířka měřené oblasti v ose x
  • bbb je šířka měřené oblasti v ose y
  • ccc je počet bodů v ose x
  • ddd je počet bodů v ose y
  • eee je offset v ose x
  • fff je offset v ose y

Příklad: G78 A205 B200 C3 D3 E0 F0

Naměřené úchylky byly automaticky zaznamenány na SD kartu k dalšímu zpracování.

Naši testeři provedli sadu měření na zvolené množině tiskáren a první výsledky byly, upřímně řečeno, dost rozpačité. MBL 7×7 dosahoval jen o 20-30% lepší přesnosti než MBL 3×3. Jinými slovy MBL 7×7 nepřinášel kýžené zásadní zlepšení.

V tabulce níže naleznete porovnání naměřených výsledků u jednotlivých firmwarů – největší rozdíl skutečné úchylky v milimetrech (čím menší, tím přesnější kompenzace ohnutí tiskové plochy):

Jméno firmwaru Bez MBL S MBL (3×3) S MBL (7×7)
Prusa 0,704 – 0,711 0,254 – 0,262 N/A
stahlfabric 0,690 – 0,701 0,247 – 0,265 0,189 – 0,197
mionut 0,694 – 0,703 0,232 – 0,263 0,180 – 0,194

Další analýzou bylo zjištěno, že je nutné minimalizovat chybu měření senzorem P.I.N.D.A. Proto jsme implementovali několikanásobné měření vzdálenosti při MBL. Dnes typicky používáme průměr ze 3 nebo 5 měření v jednom místě nad tiskovou plochou. Přesnost se dále zlepšila, očekávané úrovně chybovosti pod 0,05 mm se však stále dosáhnout nepodařilo.

Citlivost senzoru PINDA je navíc značně teplotně závislá. Proto je v aktuální verzi doplněna termistorem, který umožňuje detekovanou úroveň teplotní závislosti kompenzovat.

Další záludností byla kompenzace magnetů v heatbedu. Přestože je na vyhřívané podložce položen ocelový tiskový plát, stejně dochází k saturaci senzoru PINDA a tím pádem ke znehodnocení měření. PINDA dokáže nad magnetem zareagovat i 2 mm nad povrchem. Proto se magnetům vyhýbáme, firmware má definována přesná místa měření (není to úplně pravidelná síť 7×7).

Aby uživatelé nečekali

Aby mělo smysl spouštět proces MBL 7×7, bylo také potřeba jej zásadně urychlit. Proto si tiskárna místo měření jakoby oťukává – nevyjíždí nijak vysoko, dokud se naměřené hodnoty udržují v nastavených mezích. Lze si nastavit počet měření, doporučujeme minimálně 3 měření, případně 5 pro maximální přesnost. Pokud je některá změřená hodnota mimo meze, tiskárna se automaticky pokusí situaci napravit – vyjede s hlavou výše a pomalu sjede dolů, což odpovídá původní pomalé variantě měření. Pokud ani to nepomůže, je třeba provést Z-leveling. Překvapivým zjištěním bylo, že pokud stojí vedle sebe 2 tiskárny (např. na polici), dokáží vibrace jedné tiskárny ovlivnit MLB té druhé. I tuto situaci dokáže tiskárna řešit právě pomocí pomalého opakovaného měření.

Doby trvání MBL:

  • 7×7, 5 měření: 56s
  • 7×7, 3 měření: 46s
  • 3×3, 3 měření: 17s

MBL 7×7 výrazně pomáhá v případě, kdy je omylem po tiskovým plátem nějaká nečistota (typicky zbytek filamentu). Potvrdilo se také, že výsledky nejsou závislé na cílové teplotě plochy.

To dokazuje i mapa vytvořená ve vizualizačním pluginu OctoPrint-PrusaMeshMap:

Slovo závěrem

MBL 7×7 má prokazatelně lepší výsledky, nikoli však zásadní.  Předpokládáme, že u tiskáren s jinou konstrukcí tiskové plochy, kde může dojít k větším lokálním deformacím, by zlepšení bylo výraznější. I tak ale s ohledem na celkovou dobu tisku v řádu hodin není minutové zdržení s použitím maximální verze MBL až tak výrazné, tudíž jej můžeme doporučit i pro běžné použití.

Doufáme, že se vám naše první zveřejněné vývojářské zápisky líbily. Brzy si pro vás přichystáme zase jiné téma – koneckonců, zajímavých technologií a postupů používáme dost.

Mimochodem, těšit se můžete na budoucí aktualizace firmwarů. Verze 3.8.1 přinese hlavně opravy několika bugů a navíc i možnost provést kalibraci první vrstvy s jiným materiálem než s PLA. V listopadu 2019 by pak měl dorazit firmware 3.9.0. Na nových funkcích navíc spolupracujeme v těsné spolupráci s komunitou – jedním takovým plodem vzájemné spolupráce je chystaná funkce Linear Advance 1.5, která bude zpětně kompatibilní se staršími G-Cody. Plánujeme zlepšení v oblasti uživatelského rozhraní, zlepšení chování tiskárny a i vylepšení týkající se senzoru filamentu. V současné době pracujeme hned na několika různých zlepšovácích: zmiňovaná Linear Advance 1.5, dále detekce nárazu v ose Y při tisku s ASA, snížení teplot motoru extruderu (osa E) při tisku s PLA, omezení moiré vzoru atd. Nezapomeňte tedy firmware své tiskárny pravidelně updatovat.