Jednoduchý filament runout sensor

Dobrý den, zdravím vás, milí čtenáři, u prvního letošního článku z dílny malé továrny na velké věci. Určitě už se vám někdy stalo, že jste přišli k tiskárně a zjistili, že už nějakou dobu tiskne bez struny. Není to nic neobvyklého, obzvláště když tisknete velké předměty a nejste si jisti, jestli je zbyvajících xxx gramů dostatečné. Dnes bych vám proto chtěl ukázat elegantní metodu, jak si vytvořit takzvaný filament runout sensor. Tedy mechanický spínač, který zastaví tisk, když dojde plast.

Platforma…

Osobně jsem velkým zastáncem tisku přes octoprint. Raspberry Pi Zero W je levná záležitost a její přínos je obrovský (kdo jej ještě nemáte, směle do toho: Jak nainstalovat tiskový server Octoprint). Právě octoprint využijeme ke sledování “blížícího se” konce struny. Standardní ovládací deska Anet bohužel nemá k dispozici jediný volně dostupný pin, který bychom mohli využít. Raspberry pi jich má spoustu a my tedy jeden použijeme ke sledování struny.

Princip fungování…

Octoprint čte jednotlivé řádky právě tisknutého gcode souboru a posílá je postupně tiskárně jako takové instrukce. Je tedy velmi snadné mezi ty instrukce vložit ve správný moment pár řádků, které tiskárnu bezpečně a bez následků odstaví. Vy si pohodlně vyměníte strunu za jinou a poté v octoprintu potvrdíte pokračování tisku. Jednoduše, čistě, snadno…

Zde se dokonce nabízejí dvě metody. První, říkejme jí “automatická”, předá tiskárně instrukci M600 a firmware marlin zařídí vše potřebné jako při vícebarevném tisku (Vícebarevný tisk s jedním extruderem). Druhá metoda, “manuální”, předá tiskárně jednotlivé instrukce jako přesun trysky dále od modelu, mírnou retrakci, vysunutí zbytku struny atd. Verzi automatickou nebo manuální si zvolíte při instalaci. V lepším případě zvládnete automatickou, pokud máte dostatek volného místa v paměti řídícího atmega kontroleru. V opačném případě si společně nastavíme manuální verzi, kterou si můžete hezky odladit přesně podle svého gusta.

Co budeme potřebovat?

Určitě vám nemusím rozepisovat, že potřebujete funkční octoprint, dále jeden spínač, kousek drátku, konektor, izolační pásku a nějaký rozumný vytištěný držák. Soupis jako pro MacGyvera… 🙂

Věděli jste, že si můžete vše potřebné koupit v našem obchodě? Zde je mechanický koncový spínač se 70-ti cm drátku, JST konektorem na jedné straně a DuPont konektorem pro  snadné zapojení do Raspberry Pi headeru, na straně druhé.

Dáme se do toho…

Začneme mechanikou. Nejdříve si tedy vytiskneme nějaký šikovný držák, na webu thingiverse.com jich je celá řada, namátkou třeba tyto… Osobně se mi nejlépe osvědčil právě TENTO, který konec konců uvidíte i dále v tomto článku.

https://3dfactory.cz/2018/12/07/jednoduchy-filament-runout-sensor/
https://3dfactory.cz/2018/12/07/jednoduchy-filament-runout-sensor/
https://3dfactory.cz/2018/12/07/jednoduchy-filament-runout-sensor/
https://3dfactory.cz/2018/12/07/jednoduchy-filament-runout-sensor/

Dobře, krabička je připravená, spínač je vložen, teď jej připojíme k RPI. Pro připojení potřebujeme minimálně 2 piny. Já jsem namátkou zvolil 3V3 kde se po zapnutí objeví 3,3V a pin GPIO24, který bude sledovat stav spínače.

Dále v prostředí Octoprintu nainstalujeme a nastavíme potřebný plugin. Není to nic složitého, stačí postupovat podle obrázků na kterých jsem označil pořadí kliknutí.

Nastavení

Teď nás čeká ta hezká část, nastavení. Po instalaci nového pluginu octoprint vyžaduje restartování tak mu to dopřejme a v nově naběhlém systému se proklikejme do nastavení našeho nového pluginu abychom jej mohli nastavit. Vidíme jednoduché okno s pár řádky.

Pin – zde bychom měli zadat číslo pinu, který bude sledovat stav našeho spínače. Zvolil jsem GPIO24, vy si samozřejmě použijte, kterýkoliv se vám bude hodit.

Debounce Time – přednastavených 250ms je úplně v pořádku. V podstatě se jedná o časovou periodu, ve které octoprint spínač sleduje. Ti z vás, kteří se “vrtáte” v elektronice víte o co jde, pro ostatní jen doplním, že standardní tlačítko se při stisknutí sepne mnohokrát po sobě než zůstane trvale sepnuté. Jsou to nepatrné zákmity v řádech milisekund. Tímto intervalem 250ms tento neduh odstraníme a jakmile RPI dostane signál ze spínače, následujících 250ms jej nebude kontrolovat.

Switch Type – existují dvě základní možnosti, NO (normaly open) a NC (normaly close) Když je spínač v klidovém stavu, může mít kontakty rozevřené nebo naopak sepnuté. Kdo máte spínač od nás máte v podstatě na výběr. DuPont konektor na konci kabelu má 3 piny, Mezi červeným a zeleným se spínač chová jako NC a mezi černým a zeleným se chová jako NO. Tedy podle vašeho výběru zvolte správný typ.

Board Pin Mode – zde si doplníme nastavení ke kroku jedna. Na výběr je “Board mode” a “BCM mode”. První možnost počítá s tím, že mu zadáte číslo pinu GPIO, tedy na našem obrázku RPI zero headeru je to pin č.24. Kdybychom použili druhou možnost, tedy BCM mode, museli bychom zadat fyzický pin na desce, tedy asi devátý zleva v horní řadě. Podle obrázku by to tedy byl pin č.18.

Out of filament GCODE – Krása, jsme u toho podstatného. Kdo máte nastavený Vícebarvný tisk s jedním extruderem zadejte si do tohoto pole pouze M600, o zbytek se již postará firmware marlin. Ostatní si pojďme složit vlastní instrukci. O značnou část se postará již plugin samotný. Především pauzne tisk a na displej vypíše hlášení “Out of Filament”. My si k tomu ale ještě přidáme pár řádek zlepšovátek.

Musíme si tedy nastavit, co se s tiskem stane když se spustí pauza. Přejděte tedy opět do nastavení octoprintu, tentokrát na záložku “GCODE Scripts” … anebo jednoduše následujte očíslovaný postup na obrázku…

Do pole č.3 zadejte co má tiskárna vykonat po pauze. Zde je tedy váš prostor pro kreativitu. Já vám zde uvedu základní, jednoduché, instrukce – vy si je můžete nahradit případně vylepšit jak se vám zlíbí.

  • G91 – přepnutí XYZ do relativního módu = (nehledě na aktuální pozici posun kam požadujeme)
  • M83 – přepnutí E do relativního módu
  • G1 Z+5 E-5 F4500 – zvednutí extruderu 5mm nahoru a vysunutí 5mm zbývající struny rychlostí 4500
  • M82 – přepnutí E do absolutního módu = (souřadnicový systém)
  • G90 – přepnutí XYZ do absolutního módu
  • G1 X0 Y0 – přesun extruderu do bezpečí na souřadnice X0, Y0, tedy do levého předního rohu, blízko k domácí pozici.

Do pole č.4 nyní zadejte co má tiskárna vykonat před obnovením tisku. Tady už má vaše fantazie trochu “svázané ruce” a je třeba se řídit určitými vzorci. Potřebujeme přeci aby se tiskárna vrátila na pozici kde naposledy tiskla. Octoprint si tyto informace uchovává v proměnných a je tak snadné vrátit se na posední známou pozici aniž bychom ji jako uživatelé potřebovali znát. Já jsem se v tomto kroku řídil podle vyzkoušené instrukce, kterou jsem objevil na internetu. Vypadá přesně takto:

  • M83 ; přepnutí E do relativního módu
  • G1 E-5 F4500
  • G1 E5 F4500
  • G1 E5 F4500 ; pročištění trysky
  • M82 ; přepnutí E do absolutního módu
  • G90 ; přepnutí XYZ do absolutního módu
  • G92 E{{ pause_position.e }} ; reset E
  • G1 X{{ pause_position.x }} Y{{ pause_position.y }} Z{{ pause_position.z }} F4500 ; návrat os XYZ na poslední známou pozici před pauzou
  • G1 {{ pause_position.f }} ; obnovení pozice vysunuté struny před pauzou

Tak, jsme tam, kde jsme potřebovali být. Extruder provedl mírnou retrakci, aby z trysky nadále nevytékal plast, zároveň se přemístil dále od výtisku a samotný tisk se zapauzoval. Je čas vytáhnout zbytek struny, a zavést strunu novou. Nejprve ji ale nezapomeňte protáhnout kolem nového spínače 🙂 Teď jen v octoprintu znova spusťte tisk.

Závěr

Doslova miluji tyhle “udělátka”, které v tomto případě, dokáží zachránit tisk. Jednoduše, čistě, prakticky. A to je finále přátelé. Pokud se vám podařilo sestavit vlastní “úžasnou / vyladěnou” instrukci, určitě se o ni s námi podělte například v komentářích.

* Za motivaci a podklady k tomuto článku musím poděkovat čtenáři Václavu Horákovi, který tuto metodu používá také k výměně filamentu při vícebarevném tisku. Zde na ukázku jeho výsledek…

Napsat komentář

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