October 01, 2020 / Írta: Ambrus
Láttam egy videót a lehetetlen kocka kinyomtatásáról 3D nyomtatóval.
Én is ki szerettem volna nyomtatni, mert éppen nem volt semmi dolgom, viszont nekem nem tetszett, hogy a kinyomtatott kockát csak egy bizonyos szögből nézve láthatjuk úgy, mintha egy lehetetlen kocka lenne. Az egyetlen szóbajöhető megoldáshoz folyamodtam, mégpedig ahhoz, hogy 2D-ben nyomtatom ki.
Terveztem egy kiegészítőt a Creality Ender 5 nyomtatómra, amit gyorskötözővel egyszerűen rá lehet erősíteni a mozgó fejre. [Letöltés] Pont akkora luk van rajta, hogy egy ceruza beleszoruljon. A Z irányú kalibrációt el kellett tolni kicsit, mert a ceruza lejjebb lóg, mint a nozzle. Én egy kis fadarabot erősítettem a nyomásérzékelő szenzor alá.
A rajzot úgy alakítottam 3D fájllá, hogy beillesztettem Fusion 360-ba, körberajzoltam a besatírozandó területeket, majd kiextrúdáltam egy réteg vastagságnyit (a slicerekben ez a layer height beállítás).
Biztos nem a leggyorsabb megoldás, de ez jutott eszembe és nem keresgéltem sokat.
A slicer programban be kell állítani a bed és a nozzle hőmérsékletét 0-ra, hogy feleslegesen ne melegítsük a papírt. A Z-hop paramétert beállítottam valami pozitív számra, hogy felemelkedjen a ceruza, amikor egy másik alakzatot kezd el rajzolni, így nem lesznek átkötő vonalak. Miután kiexportáltam a .gcode fájlt, megnyitottam egy szövegszerkesztőben és kiszedtem az összes olyan sort, ami tartalmazott E betűt. Erre azért volt szükség, mert az E parancs felel az extruder vezérléséért a gcode nyelvben és én nem kívántam kinyomott filamenttel összekenni a csodálatos rajzomat. A kész fájlt elmentettem a microSD kártyára és 15 perc múlva kész is volt a szép kis rajz.
Nézheted innen…
…innen…
….vagy akár innen is:
Az eredeti problémámat már meg is oldottam, elkészült a több szögből nézhető lehetetlen kocka 3D nyomtatóval nyomtatva.
Itt viszont nem álltam meg, kinyomtattam a Foki-kártyát is, aminek teljes méretű verziója a Fazekas pinceklubjában tekinthető meg az egyik falon.
Ezt már picit több idő volt körberajzolni, közben sokat gondoltam rá, hogy kéne erre találni valami automatizált megoldást, de ez még a jövő feladata.
A képek nyomtatása után elkezdtem kísérletezni azzal, hogy hogyan tudom irányítani egy USB kábelen keresztül számítógépről a nyomtatót. Soros porton [serial port] keresztül gcode parancsokat lehet átküldeni a nyomtatónak, amiket az rögtön végre is hajt. Olyan parancs is létezik, ami elküldi a gépnek a nyomtatófej aktuális pozícióját, így tudok olyan programot írni, ami vár addig, amíg egy adott feladatot el nem végzett a nyomtatófej.
Írtam TypeScriptben (JavaScript, csak típusokkal) NodeJS-ben egy könyvtárat, amivel programból tudunk egyszerű metódushívásokkal kommunikálni a nyomtatóval. Feltöltöttem Githubra és NPM-re is és ez volt az első olyan kódom, amit szépen dokumentáltam és már mások is használhatnak saját kódjukban.
A dokumentáció és a forráskód elérhető ezen a github repo-n: https://github.com/tothambrus11/3d-printer-controller
A program elején létre kell hozni egy új Printer példányt, megadva konstruktor paraméterként a COM portot, a baud rate-et, valamint a nyomtatási területet. (Ezen túl nem mehet a nyomtatófej.)
const myPrinter = new Printer("COM5", 115200, {x: 220, y: 220, z: 300});
Ezután meg kell hívni az init() metódust, hogy kapcsolódni tudjon a program a nyomtatóhoz.
await myPrinter.init();
Itt mutatok pár példát a vezérlésre:
// Nyomtatófej kalibrálása a megadott tengelyeken await myPrinter.autoHome(["X", "Y", "Z"]); // GCode küldése await myPrinter.sendGCode("G28"); // Mozgási sebesség beállítása await myPrinter.setSpeed(80); // Mozgatás megadott pozícióra // A nozzle a (30mm; 60mm; 1mm) koordinátára megy: await myPrinter.goTo({x: 30, y: 60, z: 1}); await myPrinter.goTo(50, 90, 2); // A nozzle a (50mm; 90mm; 2mm) koordinátára megy. await myPrinter.goTo(30, 50); // Nincs megadva Z koordináta, ezért az ugyanaz marad, mint előbb. XY irányban mozog a (30mm; 50mm) koordinátára.
Ezzel eljátszogattam kicsikét, kb. úgy lehet programozni, mint az Imagine Logo-t – tollat fel, tollat le…
Tags: 3d nyomtatás
Kategóriák: Barkácsolás