Autolevel

https://3dfactory.cz/2018/09/16/autolevel/

Dobrý den, vítám vás u dalšího ze série článků z dílny malé továrny na velké věci. Pro tentokrát jsem zvolil lákavé téma, autolevel. Pochopitelně toto téma podrobně rozebereme, takže v článku najdete trochu teorie a praktických ukázek jak fungují čidla, poté se podíváme na konkrétní možnosti zapojení a na závěr vše nakonfigurujeme a pošleme v podobě nastaveného Marlina do tiskárny.

Teorie, aneb o čidlech…

Nejdříve se pojďme podívat, jaká čidla přiblížení máme vlastně k dispozici. Takovou úplně nejvíce nadřazenou skupinou budou kontaktní a bezkontaktní čidla. Kontaktní máte na tiskárně teď, těmi se zabývat nebudeme. Technicky sem patří i BL Touch senzory a jim podobné ale tohle není skupina, o které chci psát. Dalším rozdělením bychom se dostali na principy fungování, elektromagnetické, infračervené, optické, ultrazvukové, indukční a kapacitní. Tohle je to dělení, u kterého se zastavíme. Indukční a kapacitní? Podívejme se do učebnice základů elektrotechniky, co nám o tomto řekne:

Indukční snímače:

Základ snímače tvoří oscilátor pracující na principu změny činitele jakosti jádra Q při přiblížení kovového materiálu. Tato změna se projeví útlumem kmitů oscilátoru a oscilátor přestane kmitat. Vysazení kmitů oscilátoru vyhodnotí prahový detektor, který řídí klopný obvod ovládající výkonový koncový stupeň. Odstraněním kovového materiálu z aktivní spínací zóny oscilátor obnoví kmitání.

 

Kapacitní snímače:

Nespojité kapacitní snímače polohy pracují na principu vyhodnocování kmitů oscilačního RC obvodu. Vniknutím předmětu (vodivého i nevodivého) do elektrostatického pole kondenzátoru se mění kapacita oscilačního obvodu a tím amplituda jeho kmitů. Jejím dvouhodnotovým vyhodnocením se získá logický signál o přítomnosti předmětu v aktivní zóně snímače. Výhodou proti indukčnostním snímačům tohoto typu je větší spínací vzdálenost.

 

Ve dvou odstavcích odborné literatury jsem vám červeně označil důležité sdělení. Totiž indukční snímač, ze své podstaty, reaguje pouze na kovové předměty, zatímco kapacitní snímač dokáže vyhodnotit cokoliv, třeba i dřevotřískovou desku. Dobře to jsem trochu přehnal ale ať už budete v budoucnosti tisknout na cokoliv, kapacitní čidlo bude reagovat na povrch, na který budete pokládat plast. Indukční čidlo bude stále reagovat na hliníkovou vyhřívanou podložku. Říkáte si možná, o co jde, funguje to, tak co. Jenže, vlivem tepla se může hliníková podložka nepatrně prohnout (zpravidla uprostřed), vyrovnáte ji přiložením skla, vaše indukční čidlo však stále měří podle hliníku, kapacitní si změří povrch skla. Důkaz místo slibů najdete ve videu níže.

Jasně, video je někdy lepší než tisíc slov. Takže máme jasno ve výběru „proximity“ senzoru tedy ve výběru správného čidla přiblížení pro naši aplikaci.  Indukční ke snímaní kovu, kapacitní pro snímání povrchu jako takového. Mimochodem věděli jste, že: si takové kapacitní čidlo můžete koupit i v našem obchodě?

Zapojení, schémata, dráty…

Nastal čas, naše čidlo připojit do obvodu. Existuje několik druhů zapojení, my se podíváme na dvě základní. V jednom zapojení bude jako regulace výšky Z fungovat pouze čidlo. Ve druhém zapojení v obvodu pro jistotu necháme i původní spínač. Není totiž nic horšího, než když vám rozehřátá tryska zničí podložku, na kterou tisknete. Slíbená zapojení jsou na obrázcích níže.

https://3dfactory.cz/2018/09/14/autolevel/
Piktogram zapojení bez původního koncového spínače.
https://3dfactory.cz/2018/09/14/autolevel/
Piktogram zapojení se zachováním původního koncového spínače.

Zapojení je vcelku snadné, čidlo k desce připojíme do konektoru na místo původního spínače. S jedinou výjimkou a tou je hnědý drát z čidla. To totiž neumí pracovat s nízkým „logickým“ napětím 5V ale pro svou práci potřebuje přímo 12V z napájecího zdroje (připojit jej můžete třeba na vstup napajení řídící desky). Do obvodu proto musíme připojit také odporový dělič, který ochrání desku před zničujícími účinky vyššího 12V napětí. Kdybychom toto vynechali, snímač by se přiblížil k pracovní podložce, sepnul by a pustil nám do ovládací desky 12V. Ta by to pravděpodobně odnesla poškozením řídícího obvodu. Odporový dělič tedy zajistí snížení napětí na logickou úroveň 5V.

Odporový dělič

Opět bychom se mohli podívat do učebnice základů elektrotechniky, ale nebudu vás zdržovat, jistě už chcete tisknout. Pokud si budete pro své čidlo odporový dělič obstarávat, kupte si odpory R1=3K3 a R2=2K2. Pokud chcete experimentovat s odpory, které máte k dispozici. Správné hodnoty vypočítejte podle následujícího vzorce. A konečně, kdo si koupil senzor od 3dfactory.cz, tuto otázku nemusí řešit, odporový dělič včetně DuPont konektoru je připraven.

https://3dfactory.cz/2018/09/14/autolevel/

Umístění senzoru

Tato část návodu bude ze všech nejjednosušší. Stačí navštívit web thingiverse.com a najít si vhodný držák čidla. Na výběr jsou doslova desítky provedení. Kdo je zkušenější “hračička” navrhne si svůj, kdo se nechce zdržovat, použije hotový.

https://3dfactory.cz/2018/09/14/autolevel/ https://3dfactory.cz/2018/09/14/autolevel/
Několik náhodně vybraných držáků z webu thingiverse.com.

 https://3dfactory.cz/2018/09/15/autolevel/
Protože používám E3D V6 na alternativním vozíku, vyřešil jsem umístění jednoduchým držákem takto.

Marlin, kompilace, komplikace, nastavení…

Dobře, senzor je připojený k tiskárně, nyní se tedy podívejme jak jej nastavit ve firmware Marlin aby vše fungovalo správně. A aby nešlo jen o pouhé kopírování jednotlivých kroků tohoto návodu, pokusím se ke každé položce připsat i krátký komentář s vysvětlením, aby jste věděli, co nastavujete. Pro snadnější orientaci uvádím i čísla řádků. Ty se mi zobrazují, protože k úpravám používám program notepad++. Je zdarma ke stažení a umí krásně barevně oddělit důležité parametry a komentáře. Celý zdrojový kód se tak rázem stává čitelnější. Kdo z vás používá Arduino IDE, vyhledá si definice ve vyhledávacím okně po stisknutí ctrl+f. Připraveni?

řádek č.533 a č.537

#define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.

#define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe. – V tomto místě je potřeba zvolit logiku použitého čidla. Protože jich existuje celá řada vysvětlím jen okrajově, že některé čidla bývají v klidu otevřené a při kontaktu s kovem se vnitřní kontakty sepnou. Tyto čidla mívají označení NO (normaly open). Jiné typy jsou NC (normaly close). Ty bývají sepnuté a při kontaktu s kovem se jejich kontakty otevřou. A tohle se právě snažíme nastavit na tomto řádku. Pokud si nejste jistí správnou volbou, nechejte nastaveno „true“ a později si to ověříme.

řádek č.716

//#define FIX_MOUNTED_PROBE – tento řádek okomentujte smazáním dvou lomítek na začátku řádku, firmware tak pozná že používá čidlo trvale připevněné k extruderu.

řádek č.776

#define X_PROBE_OFFSET_FROM_EXTRUDER 50   // X offset: -left +right [of the nozzle] – tato hodnota (v mém příípadě 50) určuje vzdálenost čidla od středu extruderu, tedy od trysky. Kladná hodnota znamená posun vpravo, záporná hodnota znamená posun doleva od trysky. Moje čidlo je umístěné přibližně 50mm vpravo od trysky.

#define Y_PROBE_OFFSET_FROM_EXTRUDER 3   // Y offset: -front +behind [the nozzle] – Stejné nastavení jako o řádek výše, jen s tím rozdílem, že jde o osu Y. Kladná hodnota = čidlo je za tryskou, záporná hodnota = čidlo je před tryskou. Já mám čidlo asi 3mm za tryskou.

#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above [the nozzle] – Na tomto řádku by jste měli nastavit přesnou vzdálenost od špičky trysky ve svislém směru. Protože tuto hodnotu ještě neznáme, vyplníme 0 a později se k tomuto řádku vrátíme.

řádek č.900

//#define MIN_SOFTWARE_ENDSTOPS zakomentováním tohoto řádku povolíme posun tiskárny za hranice softwarového endstopu. Doslova umožníme posun trysky pod Z0 což obyčejně nejde. Budeme to potřebovat pro zjištění výšky čidla nad tryskou. Prozatím jen zakomentujte, později se sem opět vrátíme.

* V tomto kroku jsem měl v článku chybu na kterou mě upozornil jeden z čtenářů. Nyní je vše opraveno. Děkuji.

řádek č.975

#define AUTO_BED_LEVELING_BILINEAR – na výběr máme z několika druhů autolevelingu. Nejpoužívanější je právě bilineární proto tento řádek odkomentujte. Pokud chcete poznat i další typy, navštivte stránky projektu Marlin a prostudujte manuál. Ve zkrtce:

1. Lineární – změří na podložce X bodů, které zprůměruje a upraví celkovou vzdálenost trysky od podložky jedinou hodnotou.

2. Bilineární – každý změřený bod promítne do modelu na několika prvních vrstvách. Srovná tak případné nerovnosti. Z motory tak tedy neustále mění výšku podle toho, kde se zrovna nachází extruder.

*edit 13.12.2018

Při přepínání mezi typy autolevelingu, můžete narazit na chybové hlášení “Error: EEPROM datasize error”. Jedná se pouhé přemapování vnitřní paměti atmega kontroleru. Náprava je velmi jednoduchá, stačí vytvořit gcode soubor nebo se k tiskárně připojit přes některý z terminálů a spustit kód M502 a poté M500. Tímto se paměť nastaví a uloží ve správném formátu.

řádek č.1020

#define GRID_MAX_POINTS_X 3 // Počet bodů, které na podložce chceme změřit v podélné ose X. Standardně nastavené jsou 3 body. Kdo chce, může si přidat nebo naopak počet snížit.

#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X // Stejné nastavení jako na předchozím řádku, nyní se však jedná o osu Y. Ve výchozím nastavení je počet stanoven stejně jako na ose X. Celkem se tedy bude měřit 9 bodů. Chcete-li si počet upravit, nahraďte frázi GRID_MAX_POINTS_X jakýmkoliv číslem.

řádek č.1024

//#define LEFT_PROBE_BED_POSITION MIN_PROBE_EDGE

//#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE – MIN_PROBE_EDGE)

//#define FRONT_PROBE_BED_POSITION MIN_PROBE_EDGE

//#define BACK_PROBE_BED_POSITION (Y_BED_SIZE – MIN_PROBE_EDGE

U těchto čtyř řádků se můžeme na chvíli zastavit. Zde si totiž nastavíte mezní pozice měření. Ve standardním režimu si Marlin vypočítává měřící body z hodnot jako je velikost podložky X_BED_SIZE a vzdálenost měření od okraje MIN_PROBE_EDGE. Občas se mi stalo, že jsem se v těch číslech zamotal a celý firmware mi nešel zkompilovat, obzvláště pokud jsem si zároveň centroval střed podložky. Tuto situaci tedy řeším nastavením pevných hodnot. Ačkoliv měříme na devíti bodech, nastavujeme jen krajní. Střední body jsou vždy poloviční. Nezapomeňte, že nulová hodnota v ose X i Y je v levém předním rohu podložky. Moje nastavení tedy vypadá takto:

#define LEFT_PROBE_BED_POSITION 41

#define RIGHT_PROBE_BED_POSITION 185

#define FRONT_PROBE_BED_POSITION 30

#define BACK_PROBE_BED_POSITION 165

řádek č.1141

//#define Z_SAFE_HOMING // Odkomentováním této funkce bude mít extruder domácí pozici uprostřed podložky. Vysvětlím. Pro ty z vás, kteří máte čidlo nalevo od trysky nebo v její úrovni by nedošlo k homování. Čidlo by se dostalo mimo úroveň podložky. Po odkomentování tohoto řádku se standardně zahomuje osa X do svého endstopu, poté osa Y posune podložku až do zadního endstopu. Pak se extruder přesune na střed podložky a svou domácí pozici najde i osa Z.

A to je z nastavení Marlina vše. Takto jednoduché to je. Nyní si firmware nahrajte do řídící desky tiskárny a pustíme se do testů a kalibrování.

KALIBRACE

Pro usnadnění manipulace s tiskárnou bych doporučil nějaký software, který má terminál pro přímé odesílání kódů a taky směrovou ružici pro pohyb extruderu. Výborně se hodí třeba octoprint, repetier host, simplify3D a jiné.

Prvním krokem bude ověření funkce čidla o kterém jsem psal u řádku č.537. Zvedněte trysku do určité výšky, aby čidlo nesnímalo podložku. Terminálovým oknem odešlete příkaz M119. Tiskárna vám zpět odešle stavy jednotlivých endstopů. Všechny by měly být ve stavu „open“. Nyní přibližte k čidlu nějaký předmět a znova odešlete M119, endstop na ose Z by se měl vrátit jako „triggered“.

 https://3dfactory.cz/2018/09/15/autolevel/

https://3dfactory.cz/?p=2364&preview=true
Koncový spínač na ose Z je ve stavu “open”.

 https://3dfactory.cz/2018/09/15/autolevel/

Koncový spínač na ose Z je ve stavu “TRIGGERED”.

Pokud jste neudělali chybu v zapojení, vše by mělo fungovat. V případě, že se vám vrátily opačné výsledky, změňte firmware na řádku č.537 na hodnotu „false“.

Nyní terminálovým oknem odešlete příkaz pro přesun všech os do výchozích pozic. G28. Osy X a Y krásně zajedou k endstopům a podle vaší volby na řádku č. 1141 se nastaví i Z0. Buď, u kraje nebo uprostřed podložky.

Teď je ten správný moment pro přesné odměření rozdílu výšek trysky a čidla. Použijte, jak jste zvyklí, kousek kancelářského papíru a vložte pod trysku. Nyní v software, který používáte k ovládání tiskárny, posouvejte trysku opatrně níže, až přichytí papír. Úplně stejně jako jste to dělávali při manuální kalibraci. Až si budete jisti, terminálovým oknem odešlete příkaz M114. Vrátí se vám aktuální pozice Z, předpokládám se zápornou hodnotou. Nyní máte právě tu hodnotu, místo níž jsme na řádku č. 776 nastavili nulu, protože jsme ji neznali. Já jsem při kalibraci naměřil -3.90mm protože můj kapacitní senzor změřil rovnou sklo a je natolik citlivý, že ačkoliv byl umístěn vysoko nad tryskou, stále reaguje v dostatečné vzdálenosti.

https://3dfactory.cz/2018/09/14/autolevel/
Takto vypadá odpověď příkazu M114, zapamatujte si vaši hodnotu Z.

Pojďme si tedy poprvé spustit autolevel. Odešlete tiskárně příkaz G29 a sledujte tu parádu. Pokud jste si nastavili správné hodnoty pro vzdálenosti měřících bodů, čidlo v žádném místě neopustí podložku a krásně se změří. Benefitem bude tabulka naměřených hodnot, kterou vám tiskárna vypíše v terminálovém okně. To je překvapení na co jste tiskli, že? Klidně se svými prvními naměřenými hodnotami pochlubte v komentářích pod článkem nebo nám je připněte na facebookovou zeď.

Předpokládám, že se vám podařilo vše nastavit a autolevel proběhl bez komplikací. Můžeme se tak vrátit zpět do nastavení Marlina a dokončit nastavení a opět odkomentujeme řádek č.900, #define MIN_SOFTWARE_ENDSTOPS, případně si poupravte vzdálenosti měřících bodů na řádku č. 1024. Rozdílovou hodnotu Z uložíte do firmware odesláním příkazu M851 Z-3.90 a uložíte příkazem M500.

https://3dfactory.cz/2018/09/14/autolevel/

SLICER

Zbývá poslední úkol. Ve sliceru, který používáte, si do „start gcode“ přidejte nový příkaz G29. Ovšem pozor na správnou pozici. Nejdříve musí tiskárna provést homing G28 a poté teprve autolevel G29.

https://3dfactory.cz/2018/09/14/autolevel/

Hotovo

Tady se můžete podívat, jak má správně nastavený autolevel fungovat, respektive jak funguje ten můj z tohoto návodu…

Pokud se vám vše podařilo, autolevel máte nastavený, pošlete nám video na naši facebookovou stránku. Pro tento článek je informací až až, navíc máme hotovo takže jsme v jeho úplném závěru. Jaké téma rozebereme příště? Máte nějaký námět na dobré téma? Napište nám.

64 thoughts on “Autolevel

  1. Ahoj, rozhodne zajimave, mel bych jen dotaz proc ne BLtouch? Je tam nejaky markantni rozdil proc jej nepouzit a pouzit prave kapacitni senzor?

    Mozna dalsi dotaz je, jak moc dokaze tento autoleveling srovnat tisk, jde o to kolik +- milimetru na cca 22cm heatbedu se sklem je schopno toto reseni pokryt?
    Mam problem s manualnim levelingem, problem je v original H voziku co nese heatbead, prohyba se pri utazeni a tim zase zasekava loziska (mam uz plastove), prakticky po levelingu nejde pohnout vozikem. (Mam uz pripraveny L profily co tento neduh doufejme odstrani)

    Ma predstava je, ze bych zakladem srovnal heatbed napevno a autoleveling mi pripadne nerovnosti pokryl, je to mozne?

    1. Rozhodně BL touch nezavrhuji ale řešení s kapacitním čidlem je levnější a snazší na zapojení.
      Já když jsem si autolevel nastavoval, srovnal mi podložku docela dobře, jakože softwérově.
      Základem je mít rovný podklad. Čidlo pouze na devíti bodech změří výšku tryska/podložka, tu zprůměruje a podle ní tiskne. Teda v základním bilineárním modu který popisují ve článku. Pokud chcete srovnat každý bod zvlášť, musíte si zprovoznit “mesh” bed leveling. Ale to už je celkem náročné na volnou paměť takže je potřeba vypnout jiné funkce nebo vyměnit zavaděč za optiboot…

  2. Ahoj,

    napad na dalsi clanek: uprava proudu do stepper motoru. Po dlouhem tisku se mi Y stepper, zda ponekud teplejsi, ne ze by primo horel, ale vic nez se mi libi. Da se u Anet A8 upravit proud do motoru? Pripadne by se hodilo HOWTO 🙂

    Dale jsem videl mnoho napadu na zakryti tiskarny pro ABS tisk, aby nezchladl behem tisku a neodlupovaly se vrstvy; ci pripadne nejake odzvuceni tiskarny, udelal jsem uz mnoho upgradu a hodne jsem ji ztisil, ale mozna vis o nejake dalsi finte, co jsem nepouzil 🙂 Pripadne nejaky seznam a popis pouzivanych pluginu do OctoPrintu. Moznosti je hodne, ale urcite si poslechnu nejake, ktere uz nekdo pouziva dele a je s tim spokojen.

    Diky

    1. No jo, upravit proud motoru na desce s driverem. To by mohlo jít. Teď je tam nastavené úplně tabulkové optimum ale někdo by třeba rád ubral. Na to se podívám. Bude to ale asi hodně o pájení…
      Děkuji za dobré typy. Enclosure mám za ty roky taky už Xtý a ke každému nějaké zkušenosti…

  3. Super návod 🙂
    každopádně jen jestli to chápu dobře. Tímto způsobem se tiskárna zkalibruje tak, že i když by byl bed na křivo a tisk přes klasický end by nebyl možný tak toto zkoriguje tisknutý gcode tak aby tryska dokonale kopírovala povrch a vše se vytisklo jak má?
    Děkuji za odpověď 🙂

    1. Děkuji. Kdepak, autolevel v jakékoliv podobě pouze naměří bed a zprůměruje hodnotu pro nejpřesnější výšku vrstvy. Pokud by jste chtěl kompenzovat nerovnosti podložky, musel by jste použít “mesh” leveling. Ale ten jsem zatím nezkoušel takže odpovídám jen teoreticky. Nicméně bilinear z návodu výsledek zprůměruje.

        1. Nejen jednoduché, hlavně by jste tiskl křivé objekty. Šikmá podložka vs. předmět kolmo nahoru…

  4. A teď koukám že se to sice řeší již o trochu výše. Ve chvíli když jsem dotaz psal zde žádný komentáře ještě nebyli, tak proto. Jen pro upřesnění 😀

  5. Zdravim Vas. Opat jeden vyborny clanok. Pre mna zatial najpochopitelnejsi navod na instalaciu senzoru aky som cital. Mal by som vsak jednu otazku. Nie je potrebne pred samotnou instalaciou mat vylevelovanu podlozku klasickym sposobom?

    Dakujem za odpoved a za dalsie clanky ktore pre nas pripravujete

    1. Dobrý den, velmi děkuji za kladné hodnocení.
      K tomu autolevelu, samozřejmě je nutné mít srovnanou podložku ostatně jako vždy. I když ji tedy budete mít “trochu” křivou, bilineární autolevel vám tu nerovnost promítne do několika prvních vrstev modelu. Lineární, který teď používám nejčastěji, všechny změřené body zprůměruje. Je tedy lepší mít podložku opravdu co nejrovnější a případnou odchylku autolevel dorovná. Takový je koncept.

  6. Dobrý den
    Děkuji za vaše články,pro mě jako úplného začátečníka je to k nezaplacení.
    Jen bych potřeboval vysvětlit co znamená ODKOMENTOVAT a ZAKOMENTOVAT.
    Děkuji za odpověď

    1. Dobrý den, jsem rád, že jsou mé články přínosné.
      Komentáře…
      V jednotlivých řádcích firmware Marlin jsou mimo zdrojových dat, zapsaný taky komentáře, které nám vysvětlují funkci atd. Tyto komentáře se poznají podle dvojitého lomítka. Když tedy v kódu, na začátku řádku vidíte dvojité lomítko, znamená to, že zkráceně, firmware se bude do ovládací desky nahrávat bez tohoto textu.
      Takže výrazem “zakomentovat” myslím připsat dvojité lomítko aby se text z programu vynechal.
      Výrazem odkomentovat je myšleno smazat lomítka a tedy vyjmout text z komentářů a nechat program aby s daným řádkem pracoval.

  7. Dobry den. Mam este taky mensi problem a mozno budete vediet poradit. Po vsetkych nastaveniach a zapnuti tlace prebehne autolevel. Mam nastaveny bilinerany rezim. Problem je vsak ten, ze aj po manualnom vylevelovani bedu plechovymi mierkami (takze kazdy roh je maximalne presny ) po autoleveli je prava strana vytlacena dobre, no akonahle ide tryska na lavu stranu, priblizi sa natolko k bedu, ze nedokaze vytlacit vlakno. Citim ze sa motor snazi otacat ale nevidim efekt. Ten isty problem som mal aj pri prehodeni na linearny rezim. Je mozne ze ten rozdiel je tak maly, ze nedokaze motor otocit iba o taky maly kusok v osi Z ?

    Dakujem

    1. Ahoj,

      pokud resis levou a pravou rozdilnou vysku, doporucuji upravit manualne Z-osu, pri vypnutych motorech ci vypnute tiskarne, rucne pootoc zavitovou tyci o krok ci vice, dle tvych potreb. Takto jsem vyresil u me Anet A8 spatny leveling i kdyz dle kalibrace je vse OK. Bohuzel Anet nema spravnou tuhost voziku a ten se neprijemne ohyba misto toho, aby napinal heatbead, tak se ohyba sam …

      Jinak doporucuji udelat rucni leveling na necastejsi oblast tisku, vetsinou tisknu na stred +- par centimetru od stredu, takze delat leveling cca 2 cm od okraje je zbytecne, radeji si delam leveling 8 cm uhlopricne z kazdeho rohu, dosahuji tim lepsich vysledku.

  8. Dobrý den, dokonalý článek, na webu se tak srozumitelné a s pedagogickým citem podané návody téměř nevyskytují. Radost mi kazí skutečnost, že paměť mojí A8 nepojme firmware Marlin 1.1.9 se současně aplikovanými změnami pro autolevel a změnami podle článku Vícebarevný tisk s jedním extruderem. Kompilátor Arduina zjistil překročení úložného místa na 101% (asi 2kB). Pomohl by návrat k Marlin 1.1.8 (třeba je o pár kB útlejší), nebo jsou jiné cesty pro úsporu paměti? Pokud můžete, poraďte

    1. Dobrý den, děkuji za projevenou pochvalu.
      K vašemu problému: určitě existují nějaké cesty jak paměť uvolnit. První z nich by bylo vypnutí jiných funkcí. Řekněme třeba PID regulaci teploty, nebo jinou. Další možností by mohla být změna způsobu autolevelingu tak, že si místo bilinearního zvolíte lineární (tzv. jednoduchý).
      A konečně poslední možnost, použijete jiný zavaděč. Mnoho se o tom nenapsalo ale určitě jste mohl při vypalování bootloaderu / zavaděče narazit na název “Anet 1.0 optiboot”. Jde o zredukovaný zavaděč který dokáže ušetřit několik kb místa. Takže na google, hledaná fráze optiboot.

  9. Děkuji za pomoc. Myslíte, že by nevedlo k “cihle”, kdybych v configuration.h zakomentoval některé podmíněné příkazy, které “nezaberou” ? Např. když v ř. 977 (Marlin 1.1.9) zvolím “auto bed leveling linear”, pak by měly být nefunkční příkazy mezi řádkem 995 (#if …) a řádkem 1018 (-endif) a mohly by se zakomentovat. Podobných pasáží tam je více. Nebo mohou existovat tvrdé nepodmíněné “skoky” dovnitř těch podmíněných příkazů ? Asi to vidím jako Hurvínek válku !?!

  10. Dobrý den, super článek ale chtěl bych se zeptat. Jsem nováček v 3d tisku a jako první tiskárnu jsem si vybral Anet A8 a k tomu kapacitní sensor. Šel jsem krok po kroku a když dám domovskou pozici tak mi extruder jede dolů, senzor sepne, ale stále mi tlačí na skleněnou podložku dokud nevypnu tiskárnu. Zkontroloval jsem zapojením i nastavení marlinu jsem zkoušel podle návodu přepsat vícekrát ale nenašel jsem vůbec kde byl mohl být problém.

    1. Dobrý den, základem tedy bude ještě jednou zkontrolovat zapojení. Kapacitní čidla bývají 12V a deska pouze 5V čili je potřeba proměřit výstup jestli je opravdu vše správně. V článku je pak popsán způsob kdy pomocí M-kódu ověříte funkci čidla, jestli je sepnuté nebo otevřené. Když tohle všechno sedí, bude zřejmě chybka ve firmware. Můžete mi na email info@3dfactory.cz poslat vaše konfigurační soubory confifuration.h a configuration.adv.h a já je zkusím porovnat s mými.

  11. Dobrý den. Mám Anet A8 s deskou Anet 3D v. 1_5. Úpravy ve firmware Marlin 1.1.9 dělám pomocí PC s Windows 10 a programu Arduino 1.8.7 přes USB kabel (COM port). V nástrojích programu Arduino jsem dosud vždy vybral desku “Anet V. 1.0” a firmware se do desky nahrál bez problémů, usuzuji z toho, že deska má potřebný bootloader. Při mých dalších úpravách firmware ale kompilátor programu Arduino ohlásil, že “Projekt je moc velký” (101%). V nástrojích programu Arduino je na výběr také deska “Anet V. 1.0 (Optiboot)”, při jejím použití je kompilace programem Arduino o několik kB menší. Je možné takto vytvořený menší projekt nahrát do desky Anet v. 1_5 jako dříve, tedy bez změny bootloaderu ? Děkuji za rady a pomoc. J.K.

    1. Tuto optiboot verzi je nejdříve potřeba zavést jako bootloader. Jinak to nejde, respektive se mi to nikdy nepodařilo. Nejdříve tedy bootloder optiboot a pak již klasicky marlin s vybranou optiboot deskou.

  12. Dobrý den, výborná práce, děkuji za perfektní návody.
    Zadařilo se mi skoro vše, akorát se mi nepodařilo posunout v ose Z do mínusu. Postupoval jsem přesně podle Vašeho návodu a prostě pod nulu se dostat nemohu.
    Řádek //#define MIN_SOFTWARE_ENDSTOPS jsem odkomentoval, hodnotu Znastavil na0 přesně podle vašeho postupu nahrál do Anety a pod Z0 se nedostanu. Jinak Střed mám zahomovaný, vyrovnání proběhne v 9ti bodech OK, ale výšku od trysky jsem musel udělat mechanicky posunem kapacitního čidla v objímce. Nemáte někdo nějaký nápad?

    1. Děkuji. Už jsem o tomto přemýšlel, protože jsem tento dotaz už dostal. Prostě do mínusu nechce jít. Zkoušel jsem to i na jiné tiskárně, jiných deskách a pokaždé mě to do mínusu pustilo. Budu na to muset přijít.
      Je dobře, že jste si našel “alternativní” cestu .

      1. Tak jsem si trochu hrál a pro funkzi povolení os momo sw endstopy mně funguje povel M211 S0, který endstopy vypne a lze jít osou Z do záporných hodnot.
        Po vykalibrování požadovaného rozsahu zadat zase M211 S1, který zase endstopy zapne.
        Třeba se to někomu může do budoucna hodit.

  13. Dobrý den, mám stejný problém. Zkoušel jsem zadat i hodnoty nižší jen tak od oka, ale vždy se zastaví tryska na stejném místě jakoby nastavené hodnoty byly ignorovány.

  14. Výborný návod. Po konzultaci s autorem jsme našli řešení i mého problému s pohybem osy Z pod 0.00. Řádek č. 900 ,, //#define MIN_SOFTWARE_ENDSTOPS “musí zůstat zakomentovaný ( chyba v článku) musím poděkovat panu Kováčiku za velikou vstřícnost a trpělivost ne jen při řešení funkce AUTOLEVELINGU, ale i při řešení jiných operací a problémů. Tímto mu děkuji a těším se na další konzultace ohledrně 3D tisku a octoprintu.

    1. Já vám děkuji Václave, x-krát jsem ten článek pročítal a nikdy jsem si té chybky nevšiml. Díky vám teď další tiskaři můžou úspěšně instalovat autolevel na své tiskárny.

  15. Dobrý den. Po užití výše uvedeného postupu (s respektováním opravené chyby) autolevel funguje, ale výšku trysky nad deskou lze nastavit pouze ručním posunem senzoru. Změny ofssetu Z nemají vliv na polohu trysky nad deskou v domovské pozici, takže asi nefunguje ani korekce nerovnosti desky při tisku. Zvláštní je, že hodnota offsetu má stejnou hodnotu, jako souřadnice Z po najetí do domovské pozice, liší se však znaménkem. (Anet A8, deska 1,5, Marlin 1.1.9, senzor SN04). Není třeba začít s nějakým výchozím nastavením v určitém rozmezí? Děkuji za rady, trápím se tu s tím dlouhou dobu bez úspěchu.

    1. Dobrý den, musíte sledovat, jestli se hodnota změny opravdu uloží. Často mě zlobilo, že jsem zadával příkaz M851 Z-0,8. Je potřeba myslet na jiný oddělovač desetinných míst, který se používá ve světe. Je to právě rozdíl mezi tečkou a čárkou na kterém jsem se nějakou dobu zastavil. Správný příkaz na změnu výšky je tedy M851 Z-0.8, terminál pak vrátí hodnotu ok, M500 uložíme do paměti EEPROM a můžeme opět zkontrolovat M503 a podívat se na výsledek, zda se uložil správně.

    1. Článek je koncipován především pro desku tiskárny Anet. MKS jistě nebude mít příliš odlišností, snad jen v konektoru?

  16. Děkuji za návod.
    Nastavoval jsem podle toho Einsy. Byl to trochu porod, protože je to jiný, ale jako základ je to skvělé.

    1. Děkuji, jsem rád, že jste nakonec uspěl. Možná by stálo za zmínku, zveřejnit jaké odlišnosti na vás čekaly a pomoci tak případně jiným čtenářům.

  17. Dobrý den,
    Byl jsem přesvědčen tím, že umístění Indukčního čidla pro Auto-leveling bude jakousi verzi modernizace do me Anetky.
    No, záhy jsem zjistil, že to bylo spíše prokletí. Sehnal jsem si Ind. čidlo pro 6V což zákl. deska ještě uživí, navrhl si vlastní držák pro čidlo a začal seřizovat.
    Jenže seřídit správnou vzdálenost trysky k desce otáčením čidla v rozsahu třeba několika setin milimetru je prostě nadliský výkon nebo aspoň několika hodinový,
    bohužel dotáhnutí čidla, se naměřená vzdálenost dost rozhodí. Rád bych se vrátil k původnímu originálu, tedy ke spínači.
    K Vašemu článku mne zaráží jen jedna věc.. pár lidí mne do “čidla” přesvědčovalo, ale ani jeden znich nic neříkal o tom, že by upravoval program,
    chápu tedy správně, že je potřeba naměřit tiskovou plochu nebo je to jen způsob jak zlepšit tisk ?
    Já osobně, hledal v tomto článku způsob nastavení čidla v držáku vůči snímací ploše ku vzdálenosti trysky k desce, a našel jsem jen úpravu programu, proto mne to překvapilo.

    1. Dobrý den, souhlasím s vámi, že nastavování čidla jeho posouváním v držáku je nadlidský úkol. Článek popisuje metodu kdy si tyto výškové rozdíly nastavíte softvérově. Tedy čidlo umístíte napevno, a poté úpravou firmware zadáte správnou hodnotu rozdílu výšek. Jestli vás někdo přesvědčoval o funkčnosti bez nastavení, používá zřejmě jinou metodu. Takovou já bohužel neznám.
      Sám autolevel používám a musím se přiznat, že si jeho výhod užívám. Podložku jsem seřídil před několika měsíci a dodnes mám první vrstvu krásnou, právě díky autolevelu. S nastavováním je trošku práce ale podle článku se to dá zvládnout za pár hodin a po nastavení není potřeba čidlo dále korigovat. Jak jsem již zmínil, na originálním Omni firmware toto ale nezměníte, ten je pevně nastavený výrobcem. Mnoha čtenářům se instalace podle článku podařila na výbornou, veřím, že to takto taky zvládnete. Jen prvně projděte články o nahrání firmware marlin případně o vypálení zavaděče. Nejste-li si jistý, pošlete nám vaši desku a my vám tam Marlin nahrajeme, vše bezplatně, pouze za cenu poštovného.

      1. Dekuji za odpoved. Vcetne rady pro instalaci cidla, mi take radili prehrat Marlina. Takze mam oba, ale Vas postup mi nikdo nerekl. Zda dotycni pouzivaji jiny system nevim, ztratil jsem kontakt. Mam pravnepodobne podivne zkroucenou podlozku. Zprumerovanim kalibracnich hodnot bych mohl ziskat nesmysly. Dnes jsem problem s nastavenim castecne vyresil.. avsak vidim to na 3 az 5x vytisku a dojde k rozhozeni rozmeru.

        1. Takhle, autolevel jako funkce marlina nabízí nejen možnost zprůměrování naměřených hodnot ale pokud zvolíte mod bilineární, přesně podle článku, bude se každý naměřený bod promítat do tisku modelu. Čili pokud máte třeba střed podložky níže, Z motory budou tuto nerovnost promítat do tisku několika prvních vrstev.

          1. To zni zajimave.. Můžu v modu Bilineár naměřit dle Vašeho članku co nejvíce bodů na HotBedu nebo jsem limitován počtem měřitelných míst ? Děkuji za odpověď.

          2. Počet měřicích bodů je omezený velikostí vnitřní programové paměti ATmega kontroléru. Obvyklých 9 míst ale bohatě postačí.

  18. Mám prosbu – nainstaloval jsem na Anetu BL Touch senzor, nahrál Marlin SW a nestačím se divit… Po spuštění autolevelingu si sonda osahá 9 bodů, ale v ose Z probíhá pohyb pouze nahoru, cca o 10mm při každém testovacím bodu. Základní Marlin SW s mechanickým endstopem funguje bez problémů. V konfiguračním souboru asi něco přehlížím – nemáte s tímto senzorem zkušenost?

    1. Dobrý den, s tímto sensorem zkušenosti nemám kvůli zbytečně komplikované instalaci oproti kapacitnímu čidlu. Kdy přesně vyjede o těch 10mm nahoru, po tom zaměření devíti bodů?

  19. Najede na pozici prvního bodu a vyjede o 10mm, najede na pozici druhého bodu a opět vyjede o 10mm a tak projede všech 9 bodů. nedojde ani k náznaku pohybu dolů.

    1. Tak v takovém případě bych se podíval příkazem M119 jestli je v uvolněném stavu “open”. Protože mi to připadá, jakoby byl sepnutý “trigerred” a snaží se vyjet nahoru kde by se měl automaticky přepnout do “open” stavu.

      1. Ahoj, presne toto se mi stalo take. Senzor po oddaleni objektu zhasne LED indikaci, ale M119 vraci stale triggered. Nevite nekdo co s tim?
        Jedina pomoc byla odpojit senzor od napajeni a to presel zpet do stavu open. Zkratka jak jednou sepne tak marlin rika ze je triggered ale pohledem na LED diodu senzor rika ze je open.

        Pouzivam kapacitni senzor ljc18a3-h-z/bx

        1. A nemáte opačně fungující čidlo? Když pod ním nic není tak je triggered a když pod něj něco vložíte tak je open? Dioda neukazuje stav, jestli je open nebo close, jen upozorňuje že se změnil stav z normální polohy.

          1. Ahoj, je to NPN NO senzor, kdyz ho odpojim od napetoveho delice, M119 napise open, jak se priblizi objekt, M119 pise triggered, ale po odstraneni objektu zustava M119 triggered a ne open … i kdyz LED signalizuje ze objekt uz nedetekuje; po odpojeni signalu ze sondy to vse funguje do prvniho priblizeni a Marlin pak pise uz jen triggered, dokud neodpojim kabel od senzoru.

            Zkousel jsem pouzit i pana Googla a nekde doporucovali zkusit odporovy delic nahradit dvemi diodami, pry to “staci” na omezeni napeti.

            Napadla me jeste dalsi vec a to je zkusit ten signal ze sondy zeslabit pomoci zenerovy diody k zemi rekneme na 4.7V to by melo stacit. Pokud se mohu zeptat jake napeti namerite na vystupu ze sondy u delice? Vychazela mi tam zajimava hodnota 2.4V cca, coz muze zpusobit prave to ze signal neprejde z High na Low …

            Pripadne jake napeti bych mel namerit na signalu ze sondy bez pouziti odporoveho delice pro open a triggered? Zkusim to tak zbastlit aby to sedelo, aspon se mi potvrdi zda je chyba na sonde ci na marlinu.

            Diky

          2. Uvažujete správně. Bez odporového děliče čidlo spíná vstupní napětí čili naměříte napětí na zdroji. Vašim úkolem je tedy napětí zredukovat na 5V při sepnutém stavu a 0V při rozepnutém.

  20. Dobrý dne, díky moc za super článek a za zaslaný senzor. Jen poznámka, kdyby se někdo jeden dlouhý večer trápil stejně jako já 🙂 Namontoval jsem, nastavoval podle návodu….ale při Home Z vždycky sepnul senzor asi 10 cm nad podložkou a níž ho ne a ne dostat. Po probdělé noci jsem přišel na to, že šroubek nahoře na promixity senzoru není k jeho rozebrání, ale k nastavení jeho CITLIVOSTI. Po seštělování již vše funguje jak má 🙂

  21. Bohužel jsem našel tenhle článek až ve chvíli, kdy už mi dorazilo čidlo z dálného východu a chystám se na zapojení přes octocoupler, který už také dorazil.
    Černý a modrý z jedné strany od desky, černý a modrý z druhé strany od čidla, hnědý čidla do zdroje.

    Ale líbí se mi nápad nechat zapojené i původní čidlo (nejspíše tedy o trochu níže, skutečně jako pojistku proti poškrábání skla) – jak bych ho tam měl připojit?
    Předpokládám správně, že na straně drátů z desky (rozeberu dupoint), aby používal stejných 5V, co tam deska pošle?

    1. Přemýšlíte správně, spínač jako takovou pojistku připojíte paralelně k černému a modrému vodiči z čidla. Takhle kdyby náhodou přestalo fungovat čidlo, sepne se alespoň spínač a ochrání případně podložku před poškozením.

  22. super návod zatím vše funguje ale mám jen jedem malí dotaz, asi jsem jen špatně pochopil z návodu
    řádek č.776

    #define X_PROBE_OFFSET_FROM_EXTRUDER 50 // X offset: -left +right [of the nozzle] – tato hodnota (v mém příípadě 50) určuje vzdálenost čidla od středu extruderu, tedy od trysky. Kladná hodnota znamená posun vpravo, záporná hodnota znamená posun doleva od trysky. Moje čidlo je umístěné přibližně 50mm vpravo od trysky.

    chápu dobře že se vzdálenost měří od středu trysky. Moje otázka zní jestli se měří do středu čidla nebo na kraj v dané ose…. logické by bylo na střed čidla jelikož nikde není definované jak velké si čidlo někde pořídil….
    Velice děkuji za odpověď a ještě jednou se omlouvám za můj hloupý dotaz

    1. Dobrý den, chápete to správně, jestliže máte čidlo vpravo od “středu” trysky, nastavíte v Marlinu kladnou hodnotu. Samozřejmě je lepší udávat rozměr ke středu čidla. S tím pak bude marlin počítat. Když si nastavíte minimal edge na hodnotu třeba 30 (měření krajních bodů cca 30mm uvnitř podložky), nemáte co zkazit a třeba 18mm čidlo pak bude měřit v proužku 21-39mm, čili vždy správně nad podložkou.

      1. jinak super návod autoleveling funguje jinak mě to furt dělá nějaký kraviny mám čidlo LJ12A3-4-Z/BX 1. celkem obstojně funguje jen když mám zahřátou podložku (to mi ani nevadí) ale mám pocit že si pokaždé měří co chce je to možné? jinak ještě dotaz u souřadnicové tabulky 00 je levý přední roh a 30 levý zadní?

        1. Ano, 00 je prví kde měří tedy obvykle levý přední. Tabulky nejsou příliš přehledné ale když se podívám na první bod, měření lítá o 5 setin milimetru. To považuji za velmi dobrý výsledek. Samozřejmě je lepší při každém měření napodobit stejné výsledky čili já před tiskem umístím čidlo nad podložku ať se zahřeje na “provozní” teplotu a teprve potom spouštím samotný tisk. Jeden dva stupně neudělají rozdíl ale jestli má čidlo 20 nebo 60 stupňů se na výsledcích jistě projeví.

  23. 16:08:28.260 : Bilinear Leveling Grid:
    16:08:28.265 : 0 1 2 3 4 5
    16:08:28.268 : 0 -0.401 -0.242 -0.092 +0.040 +0.175 +0.300
    16:08:28.271 : 1 -0.452 -0.294 -0.143 -0.006 +0.119 +0.258
    16:08:28.276 : 2 -0.469 -0.311 -0.144 -0.011 +0.126 +0.265
    16:08:28.279 : 3 -0.462 -0.300 -0.142 +0.051 +0.132 +0.258
    16:08:28.284 : 4 -0.471 -0.300 -0.129 +0.019 +0.157 +0.277
    16:08:28.287 : 5 -0.474 -0.304 -0.141 +0.015 +0.147 +0.287
    16:08:28.293 : X:192.00 Y:195.00 Z:10.00 E:0.00 Count X:38400 Y:39000 Z:16920
    16:49:46.315 : X:122.00 Y:140.00 Z:5.00 E:0.00 Count X:24400 Y:28000 Z:0
    16:52:41.419 : Bilinear Leveling Grid:
    16:52:41.424 : 0 1 2 3 4 5
    16:52:41.427 : 0 -0.458 -0.274 -0.112 +0.039 +0.167 +0.290
    16:52:41.429 : 1 -0.482 -0.309 -0.153 -0.007 +0.128 +0.247
    16:52:41.435 : 2 -0.469 -0.292 -0.123 +0.017 +0.152 +0.256
    16:52:41.438 : 3 -0.469 -0.281 -0.114 +0.080 +0.172 +0.291
    16:52:41.442 : 4 -0.433 -0.252 -0.076 +0.085 +0.207 +0.319
    16:52:41.445 : 5 -0.456 -0.263 -0.072 +0.091 +0.226 +0.357
    16:52:41.451 : X:192.00 Y:195.00 Z:10.00 E:0.00 Count X:38400 Y:39000 Z:17144
    16:54:00.439 : X:122.00 Y:140.00 Z:5.00 E:0.00 Count X:24400 Y:28000 Z:0
    16:56:54.180 : Bilinear Leveling Grid:
    16:56:54.185 : 0 1 2 3 4 5
    16:56:54.188 : 0 -0.458 -0.278 -0.119 +0.030 +0.157 +0.276
    16:56:54.191 : 1 -0.480 -0.307 -0.156 -0.002 +0.118 +0.238
    16:56:54.196 : 2 -0.474 -0.299 -0.131 +0.008 +0.141 +0.250
    16:56:54.199 : 3 -0.469 -0.280 -0.111 +0.092 +0.167 +0.289
    16:56:54.204 : 4 -0.451 -0.267 -0.083 +0.077 +0.196 +0.307
    16:56:54.207 : 5 -0.450 -0.269 -0.080 +0.088 +0.218 +0.345
    16:56:54.213 : X:192.00 Y:195.00 Z:10.00 E:0.00 Count X:38400 Y:39000 Z:17105

    toto jsou tří tabulku mezi testem 1. a 2. je schladnutí a natopení hod bed 2. a 3. je po sobě jdoucí v řádu pár minut… podotýkám že hodbed je srovnán na papírek dle návodu a všude jemně škrtá

  24. Zdravím, vše funguje až na to že když se sliceru umístím vyrobek do postřed bedu, tak tiskarna začne tisknout cca o 5 cm vic vpravo, čím to muže být?

  25. Díky za výborně použitelný návod. Zapojení jsem použil pro Ramps 1.4. Tiskárna hliníkový rám 3030.
    Trošku mě pozlobil stav sensoru OPEN – TRIGGERED. Na vině byl odporový dělič, který jsem musel vyladit přes trimr a Arduino si dalo říct. (viz. problém Jiřího z 28.2. 2019)
    Sensor mám indukční na ocelovou podložku a prvotní nastavení jsem ladil otáčením v držáku (mám v něm naznačený závit). Pozdější lazení bude přes g-code.
    Všem , kteří chtějí spustit autolevel vřele doporučuji zkontrolovat nejdřív mechanické nastavení (výšku z os, srovnání bedu v rozích). Známe to všichni, tam se klepne, tam se ťukne a desetiny naskakují. 🙂
    Závěrem díky ještě jednou za suprové články na tomto webu.

    1. Děkujeme Ivo, za kladný komentář. Velmi mě těší, že jsou mé články přínosné a je podle nich možno postupovat při posouvání domácích tiskáren o úroveň výše.

  26. Dobrý den,
    ještě bych zde zmínil co jsem se dověděl nedávno, že jde v MArlinu aktivovat funkce:
    #define LCD_BED_LEVELING
    , kdy se dá podložka vycentrovat přes menu na displeji doladěním v ose Z.
    Ještě musí být povolené:
    MESH_BED_LEVELING
    PROBE_MANUALLY
    Funguje to parádně.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *