HyperCube Marlin konfigurálása

Lépésenként megmutatom hogyan kell a Marlin firmware-t konfigurálni egy HyperCube 3D nyomtatóhoz. A Tech2C fájljai között található egy Configuration.h fájl, de ne használjuk ezt kiindulási alapként, csak sorvezetőnek. Egyrészt ez még 1.1.4-es Marlin-hoz készült és ezen cikk írásakor már 1.1.9 az aktuális verzió. Másrészt érdemes egyszer a konfigurációt a nulláról végigcsinálunk, hogy megtapasztaljuk, mennyire egyszerű dolog is ez. Sokkal magabiztosabban javítunk majd bele a jövőben, ha tudjuk, hogy a fájl minden módosításával tisztában vagyunk, kézben tartjuk a firmware-t.

A példaként végigmutogatott fáljt megosztom GitHub-on, de nem abból a célból, hogy egy az egyben használja valaki, hanem azért, hogy egy-egy önálló módosítást egy-egy commit-ként jól olvashatóan meg lehessen nézni.

Minden épített 3D nyomtató valamennyire egyedi, így egyedileg testre szabott firmware-re van szüksége. Például lehet, hogy a stepper motor kábeleket fordítva kötöttem be hozzád képest. Egyébként ez az első, amit ki kell próbálni, hogy a motorok megfelelő irányba forognak-e. Egy “óvatos Home-ot” elindítunk a firmware feltöltése után, és ha rossz irányba mozog valami, akkor gyorsan áramtalanítjuk a nyomtatót, hogy ne kínozza saját magát a tengelyek végein. Javítjuk a firmware-t és újra próbáljuk.

MKS GEN 1.4 board-ot használok, a példában egyrészt ez fog szerepelni, másrészt kitérek arra is, hogy RAMPS esetében mit kell az adott sorba írni. De vigyázat: a RAMPS-os példáimat nem próbáltam ki! A célom nem az, hogy működő kódot adjak a kezedbe, hanem az, hogy megmutassam melyik sorokat kell módosítanod a saját nyomtatód bekonfigurálásához.

K.I.S.S: Keep it simple, stupid

Mindent olyan egyszerűre kell csinálni, amennyire csak lehet, de nem egyszerűbbre.

Nagyon erősen javaslom, hogy kis lépésekben módosítsuk a kódot és egy-egy önállóan tesztelhető beállítás után azonnal próbáljuk is ki a művünket! Ne csináljuk azt, hogy mint valami kérdőívet kitöltjük az elejétől a végégig a konfigurációs fájlt és minden számunkra szimpatikus, jópofa funkciót bekapcsolunk. Ennek egészen biztosan az lesz a következménye, hogy elrejtünk valami kis hibát, amit aztán órákig keresgélhetünk.

A cél az legyen, hogy minden egyes sor módosításának a hatásával tisztában legyünk!

Szerintem nem túlzás valamilyen forráskód kezelő szoftvert, például Git-et vagy SVN-t használnunk a Marlin kódunk karbantartásához. De ha ezt nem is teszed, akkor legalább készíts másolatot minden működő változatáról a Configuration.h fájlnak. Ha valami hibát keresel, akkor például a TotalCommander Összehasonlíás tartalomra… funkciójával azonnal láthatod, hogy miket változtattál meg az utolsó működő változathoz képest.

Na de sok a rizsa, csináljunk végre valamit:

Marlin legfrissebb változatának letöltése

Az aktuális verziót innen tölthetjük el: http://marlinfw.org/meta/download/

A zip-ben lévő Marlin nevű könyvtárra lesz szükségünk, ezt másoljuk ki oda, ahol dolgozni fogunk vele. Első lépésként nevezzük át a mappát valami egyedibbre, például Marlin_1-1-9_HyperCube-ra és a benne lévő Marlin.ino fájlt ugyan így Marlin_1-1-9_HyperCube.ino-ra.

Ez azért lesz jó, mert ha több Marlin változatot is tárolunk a gépünkön, akkor az Arduino IDE fejlécében látni fogjuk, hogy éppen melyik van nyitva. Az Open Recent menüben is segít, ha nem csupa egyforma “Marlin” sorakozik egymás alatt.

Első módosításként a 139. sorban nevezzük el a nyomtatónkat. A sorok számozását konkrétan fogom megjelölni, de természetesen ezek elcsúszkálhatnak a Te verziódhoz képest. Vegyük ki a sor elején lévő komment jelet és írjunk be valami nevet:

#define CUSTOM_MACHINE_NAME "HyperCube"

Fordítsuk el a programot Ctrl+R billentyűkkel! Ha minden rendben, akkor elkezdhetjük az érdemi munkát:

A mechanika működésé beállításai

Az első nagyobb csomagban azokat az alapbeállításokat végezzük el, melyekkel a tengelyek mozgatását, Home-ot, ki lehet próbálni.

CoreXY felépítés

A 494. sorban állítsuk be a CoreXY mechanikát. Vegyük ki a kommentet:

#define COREXY

A későbbiekben ha mást nem írok, akkor “beállítás” alatt a komment jelek törlését fogom érteni!

Végálláskapcsolók

MKS GEN és RAMPS esetén is fordítsuk meg a végállás kapcsolók jelének az értékét. A false-okat írjuk át true-ra:

#define X_MIN_ENDSTOP_INVERTING true 
#define Y_MIN_ENDSTOP_INVERTING true 
#define Z_MIN_ENDSTOP_INVERTING true 
#define X_MAX_ENDSTOP_INVERTING true 
#define Y_MAX_ENDSTOP_INVERTING true 
#define Z_MAX_ENDSTOP_INVERTING true 
#define Z_MIN_PROBE_ENDSTOP_INVERTING true 

Lépések száma milliméterenként

Ha 1/16-os lépésközt állítottuk be a motor vezérlőknek a jump-erekkel és MK7-es extrudert használunk, akkor ezeket a lépésszámokat állítsuk be:

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 400, 100 }

Ha azt tapasztaljuk, hogy fele, vagy dupla távolságokat mozognak a tengelyek, mint amit várunk tőlük, akkor itt a megfelelő értéket duplázni, vagy felezni kell. Amikor pedig már minden jó nagyjából, akkor finomhangolhatjuk is ezeket az értékeket.

Motorok iránya

Nekem ezekkel a beállításokkal mozog helyes irányba a nyomtató:

#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR true
#define INVERT_E0_DIR true

Ezen nem érdemes gondolkodni, mindjárt kipróbáljuk.

Vízszint szenzor

Ha nem használsz vízszint szenzort, akkor ugord át ezt a részt. Az alábbiakban MKS GEN alaplaphoz PNP bekötésű indukciós szenzort állítok be. Más csillagállás esetén lehet, a Z EndStop-ot invertálnod kell például. A lehetőségekkel kapcsolatban irányadó lehet a Tech2C videója a témában: Auto Bed Level Inductive Sensor for 3D Printers

#define FIX_MOUNTED_PROBE
#define X_PROBE_OFFSET_FROM_EXTRUDER 28 
#define Y_PROBE_OFFSET_FROM_EXTRUDER 12 
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0  
#define AUTO_BED_LEVELING_BILINEAR

Nyomtatási terület mérete

Be kell állítanunk a tengelyek hosszait, mivel csak a kezdő pontokra tettünk végálláskapcsolókat, így a tengelyek másik végeinek elérést szoftverből számolja a firmware. Én így állítottam be, de lehet neked picit nagyobb értékek is megadhatók:

#define X_BED_SIZE 200
#define Y_BED_SIZE 180
#define Z_MAX_POS 130

Minimum oldalak szoftveres vizsgálatát viszont kapcsoljuk ki:

//#define MIN_SOFTWARE_ENDSTOPS

Próbáljuk ki a művünket!

Igaz, még képernyő kezelést sem állítottunk be, de konzol segítségével ki tudjuk próbálni, hogy eddig mindent jól csináltunk-e. A tengelyeket kézzel állítsuk nagyjából középre, hogy legyen időnk felismerni, ha rossz irányba indulnának el.

Fordítsuk le a programot és töltsük fel a vezérlőre, majd nyissuk meg a konzolt Arduino IDE-ben, vagy az OctoPrint-ben. Helyezzük áram alá a nyomtatót!

Végálláskapcsolók ellenőrzése

Az M119-es paranccsal ellenőrizhetjük, hogy mit gondol a vezérlő a kapcsolók aktuális állapotáról. Ha egyik tengely sem ütközik kapcsolónak, akkor mind a háromra open státuszt kell kapnunk:

Send: M119
Recv: Reporting endstop status
Recv: x_min: open
Recv: y_min: open
Recv: z_min: open
Recv: ok

Ha nem így van, akkor invertálnunk kell azt az értéket, amit beállítottunk. Ha okés minden, akkor kézzel fogjuk le az egyik kapcsolót és adjuk ki ismét az M119-es utasítást:

Recv: x_min: TRIGGERED
Recv: y_min: open
Recv: z_min: open

Ha az az irány került TRIGGERED állapotba, amelyikhez tartozó kapcsolót kézzel lefogtunk, akkor próbáljuk tovább a többit. Az indukciós szintezőt is ki tudjuk próbálni, ha valami fém tárgyat teszünk alá, és látjuk, hogy világít a lámpája. Ha valami mégsem úgy van, ahogy várjuk, akkor valószínű a vezetékeket nem kötöttük be megfelelően.

Ha továbbra is minden okés, akkor adjunk ki egy G28 parancsot. Ezzel Home helyzetbe mozgatjuk a nyomtatót. Figyeljünk nagyon, hogy valóban a végállás kapcsolók felé indulnak-e el a motorok. Ha nem, akkor áramtalanítsuk a nyomtatót és javítsuk a vonatkozó INVERT DIR beállítást.

Ha sikerült helyesen a home, akkor megdicsérhetjük magunkat, a konfiguráció nehezén már túl is vagyunk. Folytassuk a munkát, csináljunk 3D nyomtatót ebből a remekül mozgó robotból!

Az eddigi módosítások a GitHub-on: Mechanika működés commit

Elektronikák beállításai

Vezérlő típusa

Ha nem RAMPS-ot használunk, akkor a 134. sorban mondjuk meg, hogy melyik nyomtatóvezérlő pin kiosztását használja a Marlin. MKS GEN esetében:

 #define MOTHERBOARD BOARD_MKS_GEN_13

LCD képernyő

MKS GEN alaplaphoz MKS mini LCD képernyőt használok, ezt így kell beállítani:

#define MKS_MINI_12864

Ha RAMPS-ot használunk például 20×4-es LCD kijelzővel, ahogy az eredeti videóban látható, akkor pedig ezt a sort aktiváljuk:

#define REPRAP_DISCOUNT_SMART_CONTROLLER

Ha valami egyéb megoldást választottunk, akkor nézzünk utána, hogyan kell a Marlin-ban azt a konkrét kijelzőt beállítani. Mindegyik esetben kapcsoljuk még be az SD kártya elérhetőségét is:

#define SDSUPPORT

Filament vastagság

Állítsuk be az 1.75mm-et filament vastagságként:

#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

Fűthető tálca

A fűthető tálcát a tálcához tartozó termisztor típusának megadásával kapcsoljuk be:

#define TEMP_SENSOR_BED 1

Probáljuk ki ismét a módosításainkat!

A K.I.S.S. jegyében, elégedjünk meg ennyi beállítással és töltsük fel a firmware-t a nyomtatóra. Ugyanis mindazt beállítottuk, ami minimálisan szükséges ahhoz, hogy nyomtatni tudjunk.

Próbáljuk ki a kijelzőt, indítsunk el rajta funkciókat, fűtést, tengelyek mozgatásait. Próbálgassuk kicsit a nyomtatót és ha az eddigi szándékainkkal ellentétesen működik valami, akkor javítsuk a hibát.

Ha mindent rendben találtunk, akkor jöhet a következő rész, a finomhangolás. Előtte persze egy megérdemelt korsó sör. :-)

Sör!


Második lépés a GitHub-on: Elektronikák beállítása


A GitHub-ra feltöltött kódot kipróbáltam, nekem jól működik. De ennek ellenére lehet, hogy a fentiekben mégis tapasztalsz valami pontatlanságot. Ha így van, kérlek például kommentben jelezd nekem és pontosítom a leírást.

Hozzászólás küldése

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük