Pat a Mat staví 3D tiskárnu III: Elektronika

Po minulých dílech máme složený rám, máme usazené části, které se jakžtakž i hýbou a na patřičných místech jsou i motorky, které by tím měli hýbat. Zbývají tedy nějaké elektronické serepetičky, které z části tohle všechno ovládají a z druhé části poskytují věci, aby to vůbec něco dělalo (tryska, podložka). Jdeme tedy na to.

Zatímco předchozí díly byly o tom, jak totálně zprasit něco, na co existuje podrobný obrázkový návod jak pro žáky zvláštní školy, nyní se dostáváme o něco dále. O elektronice totiž návod buď úplně mlčí nebo se zmiňuje jen tak okrajově. Co nám tedy shází? Potřebujeme mozek, tedy něco, do čeho nacpeme g-codu a ono to podle toho bude vše řídit. Dnes už existuje vícero variant, já se rozhodl pro proklínanou, ale hojně rozšířenou, kombinaci Arduino MEGA 2560 a RAMPS (ostatně pro tuhle variantu je i designovaná krabička na elektroniku v návodu). RAMPS je shield pro arduino; napíchává se na vhodné piny na arduinu a jsou zde místa pro zapojení všech věcí, co budeme na tiskárně chtít. Dále potřebujeme vyhřívanou podložku aka heatbed, trysku (ta část, co taví plast), drivery pro krokové motorky, větrák (pro tisk z PLA) a nějakou lehkou bižuterii - mikrospínače pro endstopy, kabeláž pro připojení napájení a mikrospínačů, konektory, atd. Velkou část (tryska, heatbed, arduino + RAMPS) objednávám z Číny (aliexpress), zbytek v místním GME.

Číňané celkem překvapují a první balíčky přichází ani ne 2 týdny po objednání. Bohužel ne všechno dopadlo tak úplně bez problémů, ale o tom za chvíli. Postupně tedy, co se nám tu vrší na montáž.

Heatbed dorazil vcelku bez problémů. Objednal jsem levnější verzi MK2B (s tím že jestli to někdy bude aspoň trochu fungovat, tak lepší jde koupit vždycky) - narozdíl od zkušenosti jiných se tohle zahřívá úplně bez problému. Když se na něj dívám nyní, tak mi přijde lehce přiohnutý, ale to se kdyžtak srovná. Na heatbedu byla vidět nějaká rýha, což sice estetické není, ale na funkci roslitnáře to také nemá vliv. Termistor přišel s heatbedem, nicméně v pytlíku zvlášť. Bylo tedy potřeba jej transplantovat do díry uprostřed heatbedu. Nakonec jsem díru zahamtal plastelínovým epoxidem, do toho nacpal termistor (je výrazně menší než ta díra) a zespodu několikrát přelepil kaptonovou páskou. Kdybych neměl obě ruce volšové, tak by to bylo asi celkem solidní řešení. Takhle si úplně jist nejsem, ale zatím to tam solidně drží a termistor ukazuje hodnoty co naměřím všude jinde po heatbedu. Ještě doplním, že upadnutý termistor je opravdu velký problém - elektronika při tisku uvidí pokojovou teplotu a heatbedem bude topit až do roztavení tiskárny...

Doručený j-head (tryska) vypadal také celkem solidně. Při výběru to nakonec vyhrála PEEK verze s 0,4 mm tryskou asi za 30 USD. Celokovovému hotendu jsem se chtěl vyhnout - on se obvykle musí chladit větrákem, což mi nepřišlo jako dobrý nápad (předchozí zkušenosti naznačovali, že při tisku větších věcí z ABS stačí jenom trocha průvanu na to, aby se to někde odlepilo nebo prasklo nebo obojí). Číňané sice prodávají běžně celokovy i bez chlazení, ale to že se to prodává ještě neznamená, že je to dobrý nápad. Oproti tomu PEEK byl malý, nemusí se na něj foukat a v zásadě jedinou limitací je, že se nedá žhavit přes 270 °C, kde už PEEK začne křehnout. Zatím mi nepřišlo, že bych to potřeboval. Při zkušebním zahřívání se při překročení teploty 150 °C začalo z trysky bíle kouřit (tedy spíš stoupal takový malý kouř jako od pájky, takové drama to nebylo). Po několikátém pokusu a kontrolování, že se opravdu netavilo nikde nic co nemá, jsem to vyšoupnul na balkon a nechal jsem to tam půl hodiny rozpálené na 200 °C. Od té doby se to výrazně snížilo a po pár dalších nahřátí už se nekouří vůbec. Asi nejspíš nějaký zbytek maziva po obrábění. Termistor v tomto případě byl už zakomponován v těle trysky (hurá) a na druhé straně zakončen konektorem (2x hurá).

Nejhorší osud asi potkal drivery na krokové motorky. Objednával jsem DRV8825 (do RAMPSu jdou nastrkat i starší A4988, hlavní rozdíl je asi v tom, že 8825 umí až 32 mikrokroků oproti 16 u A4988). Potřeba jsou 4 drivery (osa X, Y, Z (společný drivery pro oba motorky) a extruder), objednával jsem výhodný 5 pack. Jeden by si myslel, že tady se nic nepokazí, mám přece jeden navíc. Mno. Jeden z nich byl samozřejmě vadný (nastavování napětí na trimmeru normálně šlo, ale motor se ani nehnul), tak nastalo vybalení pátého, náhradního. Po vybalení bylo zvláštní, že PCB je zelená, když všechny ostatní byly fialové. Jaké to obrovské překvapení, když jsem zjistil, že ten pátý není DRV8825, ale A4988. Ano, je sice funkční a jo, dá se to zkombinovat, ale že by člověk měl radost z toho, že mu tohle skončí v pracně piplané tiskárně po tom, co si objednal ty lepší (a ještě o 1ks více, než bylo potřeba)... to také ne. Napsal jsem číňanovi, že se mi tohle přihodilo a jestli to nechtějí nějak řešit. Obratem napsal, jestli mu můžu poslat fotku. Po odeslání fotky se už nikdo neozval. Taknějak tipuju, že se tam vsadili, jestli ten cajzl pozná, že mu pošlou něco jinýho a teď se tomu hrozně smějí. Takže jim asi napíšu ještě jednou, jestli to budou nějak řešit nebo si mám dát příště hodně velký pozor na to, abych feedback vyplnil až po pečlivém přezkoumání, že to co mi poslali opravdu funguje. Do té doby jsem A4988 strčil na osu Z, kde funguje a absence počtu kroků zde nijak zvlášť nevadí (osa Z se při tisku hýbe velice sporadicky - jednou za x minut se posune o pár desetin mm).

Arduino s RAMPSem vypadají vcelku OK. Arduinu zatím nebylo co vytknout. U RAMPSu byly některé konektory pro nasazení na arduino přiohnuté, ale trocha hrubé síly to vyřešila. Také je zde klasický problém kdy pájený spoj se zaráží o externí napájení pro arduino; to pro změnu vyřešily štípačky. S RAMPSem vesměs bývají hlavně dva problémy, které občas vedou k vyvonění celého bytu esencí spáleného plastu. Potíž bývá zejména s nevhodným MOSFETem a nevhodnou svorkovnicí pro připojení 12V napájení. Oboje souvisí s vyhříváním heatbedu - oni ty MOSFETy jsou zde i pro žhavení j-headu a větráku; napájení zrovna tak, ale problém heatbedu je, že ze všech částí žere suverénně nejvíce a přes RAMPS při vyhřívání teče přes 10A. Potíž MOSFETů pak obvykle spočívá v tom, že buď nejsou na tenhle proud stavěny (nebo jsou těsně na hranici) anebo při spínání 5V napětím (které jde z arduina) se MOSFET plně neotevře a při průchodu proudu se pak zahřívá. U svorkovnice pak opět problém, že není na tenhle proud zrovna dělána. V mém případě to zatím vypadá všechno celkem dobře. MOSFET by sice mohl být lepší; ten můj se při vyhřívání zahřívá, ale ne až tak zásadně (v GME jsem pro MOSFET, který spíná právě vyhřívání heatbedu, dokoupil ještě hliníkový chladič, což mu také trochu pomůže). Svorkovnice zatím také nevyhořela, ale uvidíme časem... Klasický postup je ten, že po tom, co MOSFET shoří, se vymění za pořádný a když shoří svorkonice, tak se dráty do RAMPSu zapájí napřímo :-)

Arduino a RAMPS vedle sebe

Následně už zbývá pár drobností, které jdou nakoupit lokálně. Potřeba bude kabeláž - na připojení napájení od 12V zdroje do RAMPSu a na zapojení mikrospínačů (alternativně může být potřeba kabel pro heatbed nebo j-head, ale ty moje přišly už s kabelem). Pro napájení RAMPSu se jako vhodný vodič doporučuje měděná licna 2,5mm^2. Do RAMPSu se navíc připojuje napájení 2x (patrně aby všechna zátěž netekla po jednom drátu), takže je vhodné dráty od zdroje natáhnout rovnou 4. Na připojení mikrospínačů se potom hodí nějaká dvoulinka; kdosi někde doporučoval 0,5mm^2, což se v praxi ukázalo jako dost blbost - je to na tohle použití až zbytečně moc tlusté (a tlustší než můj originální drát pro vytápění 30W j-headu).

Bohužel nezbytnou součástí, kterou je potřeba také zakoupit, jsou ty hnusné 2 a 4 pinové konektory s 2,54mm roztečí (jaké se používají třeba v PC pro připojení tlačítek na skříni). Kupují se zvlášť samotné plastové šasí konektoru a pak jednotlivé piny, které se nakrimpují na drát a do konektoru zastrčí. Na krimpování pinů se prodávají speciální kleště, které jsem kvůli "pár" konektorům kupovat nechtěl, ale pravda je, že dostat dráty do pinu ručně je neuvěřitelný oser (nutno dodat, že nemám ověřeno, že to není podobný oser i se správnýma kleštěma). Původní snaha byla drát do konektoru "zakrimpovat" kombinačkami. Obvykle to skončilo pohmožděným pinem, který už na nic nešel nasadit a drátem, který z pinu lehce vyklouznul při prvním úchopu. Následně jsem tedy zkoušel dráty do pinu letovat. To už šlo výrazně lépe. Jako osvědčený postup se pak jevilo pocínovat licnu a tu pak přiložit k pinu a zapájet. Nicméně je potřeba dbát na to, aby na ní cínu bylo co nejméně. V případě přebytku cínu se pak stane přesně to, že cín se velice ochotně rozleje po pinu, neomylně zamíří do té dutinky a z pinu se následně na věky stane kus plechu s cínovým překvapením uvnitř. Jinak tyhle hrůzné konektory se používají na připojení krokových motorků (4 pinová verze) a zapojení endstopů a termistorů (2 pinová verze) do RAMPSu.

U mikrospínačů (které se použijí jako endstopy) je asi relativně jedno, co se koupí (pokud pohyblivá část tiskárny tomu v kýžené polože ten spínač stiskne). Firmware obvykle předpokládá, že se používá NC kontakt. Tedy že vodiče vedoucí do mikrospínače jsou trvale spojeny a teprve při stisknutí spínače se kontakt rozpojí. Proto je tedy vhodné koupit spínače s NO/NC kontakty (konvence potom prací, že ty správné vývody pro zapojení jsou ty krajní). Nicméně, mělo by to jít softwarově i otočit. Mírná komplikace ještě může nastat s kvalitou mikrospínače pro osu Z. Osa Z je nepříjemná v tom, že je potřeba endstop nastavit velice přesně, tedy aby první tisknutá vrstva byla lehce zažehlena do podkladu (pokud se to přežene, tak tiskárna netiskne, protože z té trysky to nemá kam vytékat. Pokud se to naopak zvedne moc, tak tiskárna tiskne do vzduchu a výtisk se nepřilepí a rozpadne). Jelikož se tu bavíme o desetinách milimetru, tak je opravdu potřeba, aby mikrospínač sepnul vždy ve stejné poloze (jinak není šance to nastavit tak, by to fungovalo opravdu správně). A tady právě často některé mikrospínače selhávají. Koupil jsem nějaké zippy z GME, ale jak je to s kvalitou v tomhle ohledu zatím ještě nevím, ale to brzy při tisku zjistíme...

Poslední položkou je 40x40mm ventilátor. Ten co jsem nakonec koupil se příliš neosvědčil. Zde nastává drobet problém při řízení otáček. Ventilátor se připojuje do RAMPSu na posledná z výstupních svorek (jako j-head a heatbed). Pro regulaci otáček zde funguje softwarové PWM. To v praxi vypadá tak, že když se má ventilátor pustit na menší otáčky (jiné, než na plný výkon), tak on v pravidelných intervalech spíná napájení pro ventilátor. V podstatě tak, jak fungují standardní PWM ventilátory do PC, jen to dělá přímo na napájecím drátu a ne na 4. dedikovaném. Problémem je, že některé motůrky (jako třeba ten v mém ventilátoru) se takto řídit nedají. Takže se v tomto případě dají pustit akorát na plný výkon (kdy se prostě sepne napájení natvrdo) a točí na plný výkon. Při jakémkoliv spínání napětí se stane akorát to, že se větráček přestane točit a začne vydávat roztodivné zvuky. Snížit otáčky u takového ventilátoru se stále dá - například strčením vhodného rezistoru do zapojení větráčku. Problémem je, že tohle otáčky sníží natvrdo a nelze to softwarově měnit (nutnost vyměnit rezistor za jiný). Pokud je tedy potřeba měnit softwarově otáčky ventilátoru, je potřeba vybrat/vyzkoušet takový, který se dá tímhle způsobem řídit (jojo, po bitvě je každý generál... samozřejmě jsem na tohle přišel až ve chvíli, kdy mi to na stole vřískalo, ale nefoukalo).

Na tiskárně jsou umístěné krokové motorky, zatím nikam nezapojené. Můžeme začít s osazováním...

Samotné pozapojování všeho už je celkem přímočaré, byť relativně pracné. Na arduino se nasadí RAMPS deska. Do RAMPSu se osadí všechny propojky pod každou pozicí pro driver krokového motorku (je jich tam 5, nicméně ten 5. je určený pro 2. extruder, který minimálně já nemám) - budeme používat maximální počet mikrokroků a následně se do RAMPSu pozasouvají drivery. Pozice pro drivery jsou pojmenované X, Y, Z (podle os) a E0, E1 pro extrudery. Dále každý pin pro každý driver je na RAMPSu nadepsán a stejně tak na driveru - driver tedy zasuneme tak, aby piny proti sobě souhlasily. Jeden z chytáků, kterými se liší DRV8825 a A4988 je, že mají ten trimpot a chip každý na druhé straně, takže oba typy driverů v jednom RAMPSu se jeví jako otočené...

RAMPS nasazený na arudinu a osazený 4 drivery. Zde jsou ještě správné DRV8825 - bylo to foceno předtím, než jsem zjistil, že jeden z driverů je vadný a 5. náhradní je jiný.

Předtím než elektroniku nacpeme ještě do krabičky je potřeba připojit výstupy (D8 - D10 - po zasunutí do krabičky je k nim dost špatný přístup). Vyhledání obrázku "RAMPS wiring" napoví co kam zapojit (a ono to také typicky jde i ve firmwaru stejně změnit), nicméně obvykle do D8 přijde heatbed, D9 větrák a D10 j-head. Přes tyto kontakty (hlavně v případě heatbedu) teče velký proud, takže je vhodné konce vodičů pocínovat a svorky pořádně dotáhnout. Za svorkami jsou také umístěné zmíněné MOSFETy, na které pak lze případně doplnit hliníkové chladiče. Jinak já jsem ještě veškeré kabely vedoucí kamsi po tiskárně oblékal do takové košilky (cable sleeving na aliexpressu nachází vhodný materiál) - jednak to vypadá lépe, jednak potom více vodičů vede jako jeden svazek a košilka zabraňuje nějakým extrémním zlomům. Kabel od heatbedu (a jeho termistoru) je také dobré přichytit páskou na pevno k noze Y vozíku, aby při ježdění osy Y se nenamáhal spoj. Jinak elektroniku už můžeme zastrčit do krabičky.

Po namontování heatbedu to již celkem začíná vypadat jako tiskárna. Bohužel samotná montáž heatbedu je sice hodně jednoduchá, zbývá ale hromada jiných věcí, které na pohled už tolik vidět nebudou :-)

Rozmístit mikrospínače také moc těžké není. X a Y se akorát svaknou páskou k hlazence, Z se cvaká páskou k držáku, který se pak k hlazence přišroubuje. V téhle fázi stačí mikrospínače od oka strčit někam do míst, kde maji být (a kde se při pohybu nic nezničí, než na ně tiskárna najede) - doladit se to dá potom a ta trocha rezervy na kabelu se tam vejde. Následně je potřeba ke spínačům připájet kabel (na NC kontakt, typicky dva krajní).

A následuje moje nejoblíbenější činnost z celé stavby - přidělat ty pitomé pinové konektory tam kde je potřeba. K nalezení jsou zde 4 pinové a 2 pinové. 4 pinové se přidělávají na dráty od motorků, 2 pinové potom na mikrospínače a termistory (alespoň pokud nepřišly už z konektorem - například na termistoru pro j-head už jsem konektor přidělán měl). Zapojení drátů u mikrospínačů a termistorů je úplně jedno (nemá vliv), u motorků je ale už potřeba dát si pozor. Za pozornost také stojí to, že pro osu Z jsou na RAMPSu dva konektory pro motorky (každý motorek má svůj konektor pro jeden driver). Pokud si toho člověk všimne včas, tak nemusí prasit dráty od dvou motorků do jednoho konektoru, jako jsem to udělal já... Zapojení vodičů od motorku do konektoru by mělo korespondovat s návodem... U motorů od Microconu jsem pochodil s pořadím oranžová, černá, bílá, modrá. V zásadě jde o to najít páry, co k sobě patří. Někde se tvrdí, že jako test, zda pár vodičů je ten správný, stačí vodiče spojit k sobě a zkusit motorem pohnout - v případě správného páru by měl jít motor mnohem více ztuha. Nicméně nemůžu říct, že bych si takového chování na těch mých všimnul.

Následně je potřeba nakonektorované věci nastrkat do RAMPSu; opět poslouží obrázek RAMPS wiring. Termistory a endstopy nemají polaritu, takže je jedno jakou orientací se konektor do desky zastrčí. U motorů už to jedno není (v mém případě to bylo oranžovým drátem směrem na horní stranu RAMPSu), ale při přehození se také nic neděje - jenom se motor hýbe na druhou stranu, než si firmware myslí. To je potřeba na začátku ověřit, protože jinak při prvním povelu k zahomování os nastane neštěstí (firmware pojede motorem tak dlouho, dokud se mu nerozpojí mikrospínač daného endstopu, ale jelikož pohyblivá část jede na druhou stranu od endstopu, tak se ji nedotkne nikdy a pojede dál a dál...). U zapojení termistorů je potřeba zase dbát na to, aby každý byl na své pozici, tedy aby se nepřehodily mezi sebou. Firmware má typicky ochrany proti extrémním hodnotám (odmítne nahřívat, pokud termistor ukazuje 0 nebo naopak nesmyslně velkou hodnotu), ale prohození termistorů nemá jak detekovat - opět v tomto případě nastane neštěstí, protože se korektně zapne vyhřívání, ale čidlo které by mělo snímat teplotu vyhřívané části, bude ukazovat stále stejnou teplotu; takže se bude nahřívat dál a dál... Poslední zapojovanou částí je samotné 12V napájení do RAMPSu. To se (u toho, kde ještě neshořela) zapojuje na dvoudílnou svorkovnici, která se pak do RAMPSu zapojuje zespoda zvenku krabičky. Licnu, která vede od zdroje do svorkovnice, doporučuji opět pocínovat.

Při zapojování kabelů do RAMPSu je ještě potřeba brát zřetel na ty, které se při tisku pohybují. Týká se to obou termistorů, vytápění heatbedu a j-headu, motorů pro posun X a extruderu, větráku pro chlazení výtisku a endstopu pro osu X. Tím, že se při tisku vodiče pohybují, tak je jednak potřeba, aby z krabičky dosáhly do své krajní pozice a jednak aby při pohybech, které budou vykonávat, přívodní kabely nikde nezavazely, nelezly do tisknoucí plochy, a tak dále. Zde právě košilky na kabely přijdou vhod, protože kabel potom drží celkem nějaký daný tvar a dají se nasměrovat tam, kam nepřekáží. U kabelů, které se hýbou opravdu hodně (týká se to již zmiňovaných přívodních drátů pro Y vozík - vytápění a termistor a části s extruderem na ose X) je ještě dobré plastovými stahovacími páskami vodiče přichytit tak, aby se při pohybu nijak nelámaly. Zvláště vodiče od motorků jsou slabé a při jejich neustálem ohýbání do extrémní polohy by se mohly zlomit.

Takhle nějak to vypadá zezadu po zapojení všech serepetiček. Také je to ukázka, jak to zrovna vypadat nemá. Ti šikovnější mají v této fázi krásně srovnanou, pozapojovanou, ukázkovou kabeláž. Ti méně šikovní mají vrabčí hnízdo z drátů podobné tomu na fotce :-)

Tím je pracná a nudná část instalace u konce. Do krabičky zašroubujeme zavírací část a zároveň se tím i kabely vedoucí do horní části upevní tak, aby nelítaly všude možně. Teoreticky ta tiskárna je hotová (vyjma extruderu, k němu se ještě někdy vrátím a váže se na něj speciální příběh :-) ). Prakticky je potřeba se ještě pohrabat ve firmwaru, aby doopravdy ujeté vzdálenosti seděly, termistory správně měřily, a tak podobně. Tedy, před samotným tiskem je ještě potřeba provést nějakou kalibraci a nastavení. Pokud by se někdo dostal do téhle fáze a měl velkou touhu to začít zkoušet, upozorním ještě na to, že je nezbytně nutné:

  • zkontrolovat a případně nastavit typ používaných termistorů (minimálně v klidu musí ukazovat +- pokojovou teplotu) - jinak budou měřit nesmysly a stejně tak nemůžou vyhřívání smysluplně regulovat
  • nastavit správně maximální proud pouštěný do motorků - nastavuje se otáčením trimmeru na krokových driverech (a měří se voltmetrem mezi zemí a potencionálem na trimmeru)

Ignorování těchto dvou věcí při zapojení tiskárny do elektřiny a pokusu o vyhřívání něčeho nebo pohybu může vyústit v roztavení části tiskárny a spálení motorků. Jinak ne, tohle se mi zrovna nepodařilo (a s velkým štěstím i přes to, že na to nastavení proudu jsem zapomněl) :-)