Druhou premenou 3D tlačiarne je premena na súradnicovú vŕtačku.
Mechanická časť
Srdcom vŕtačky je motor (ako ináč, z Ćíny) s klieštinovým vretenom. Zvolený motor je malý, ľahký, trasľavý a nevýkonný, no hlavne vreteno prejde otvorom vo vozíku a ťažisko vŕtacej hlavy nie je ďaleko od koľajníc osi X.
K motoru sme vytlačili jednoduchý držiak, ktorý umožňuje beznástrojovú výmenu. Aby sme mohli nástroje pohodlne vymieňať, vreteno sme po stranách mierne zbrúsili a vytlačili sme malý kľúč, ktorý dokáže vreteno uzamknúť. Detaily sú vidno na nasledujúcich obrázkoch.
K ovládaniu poslúži ovládanie ventilátora, ktoré je spínané tranzistorom s maximálnym trvalým prúdom 60A(中文).
Aby sme mohli vŕtanie prerušiť a pokračovať v ňom po výmene nástroja, potrebujeme pripojiť ovládacie tlačítko. Repetier firmvér implementuje príkaz M226
(čakanie na stav digitálneho IO), ktorý na tento účel využijeme. Digitálny výstup pripojíme cez odpor 10k k napájaciemu napätiu a tlačítkom ho skratujeme voči zemi. Ideálnym je niektorý zo servo výstupov (D4, D5, D6 alebo D11), kde máme všetky tri signály k dispozícii na jednom trojvývodovom konektore.
Firmvér
Repetier firmvér podporuje tzv. CNC mód, avšak nepodarilo sa nám rozchodiť tak, aby ovládanie motora bolo riadené cez výstup pre ventilátor. Takže v prvej fáze budeme vreteno zapínať a vypínať príkazmi na ovládanie ventilátora.
K tejto problematike sa neskôr vrátime (skúsime využiť nepoužité napájanie druhého extrudera), avšak to bude znamenať kábel navyše.
Príprava podkladov a vytvorenie g-code
Na úvod trochu skuhrania. Pri našich experimentoch sa ukázalo, aké veľké sú rozdiely medzi g-code podľa normy RS274/NGC a implementáciami vo firmvéroch pre 3D tlačiarne. Nejde iba o význam jednotlivých príkazov, ale aj spôsob ich zápisu. Napríklad podľa štandardu sa rýchlosť otáčania vretena (S
) alebo rýchlosť pohybu (F
) nastavujú samostatným príkazom. U 3D tlačiarní sa používajú ako parameter prikazu G
alebo M
a ako samostatne stojace príkazy sú ignorované. Na druhej strane – podľa štandardu – tieto nastavenia nie sú povolené ako parametre. Je to pochopiteľné – zatiaľ čo podľa štandardu majú príkazy S
a F
jednoznačne stanovenú funkciu, u 3D tlačiarní môžu znamenať čokoľvek. Druhým problémom je, že podľa štandardu je možné príkaz vynechať a zadať iba nové parametre (príkaz sa automaticky zopakuje); u 3D tlačiarní je príkaz vždy povinný.
Tieto odlišnosti vedú k tomu, že vŕtací kód vytvorený softvérom na návrh DPS nie sme schopní použiť s firmvérom 3D tlačiarní.
Takže nám ostáva niekoľko možností. Prvou je napísať príslušný g-code ručne. Nie je to až taký problém. Druhou možnosťou je skúsiť generovať g-code z kresliaceho programu. Keďže sme nič také nenašli, vytvoríme si vlastné rozšírenie pre Inkscape. No a poslednou možnosťou je vytvoriť konvertor z Excellon formátu (väčšina CAD softvérov poskytuje vŕtacie dáta v tomto formáte, je to vlastne neformálny predchodca g-code).
Manuálna tvorba g-code
Jednoduchý komentovaný príklad, ktorý vyvŕta dve diery s priemerom 0.5mm a dve diery s priemerom 0.8mm. Príklad nevyžaduje nejaký ďalší komentár. Kód predpokladá, že máme pripojené tlačítko k digitálnemu vstupu D11.
Malou nepríjemnosťou je chovanie Repetier firmvéru pri zabrazení správy. Správa sa síce zobrazí, avšak vzápätí sa premaže dôležitým oznámením „Idle“.
; Inicializácia G92 X0 Y0 Z0 ; nastavenie virtuálnej nuly G21 ; Jednotky: milimetre G90 ; absolútne súradnice ; Požiadavka na prvý nástroj M107 ; zastavenie motora G00 Z20 F700 ; zdvih do pozície na výmenu nástroja ; zobrazenie správy M117 Change drill: 0.5mm M226 P11 S0 ; čakanie na stlačenie tlačítka M106 S255 ; spustenie motora G00 Z2 F700 ; presun do transportnej výšky G4 S1 ; čakanie na stabilizáciu otáčok ; Vŕtanie prvým nástrojom G00 X10 Y10 F5000 ; presun na polohu G01 Z-3 F50 ; vŕtanie G01 Z2 F700 ; návrat G00 X20 Y10 F5000 ; presun na polohu G01 Z-3 F50 ; vŕtanie G01 Z2 F700 ; návrat ; Požiadavka na výmenu nástroja M107 ; zastavenie motora G00 Z20 F500 ; zdvih do pozície na výmenu nástroja ; zobrazenie správy M117 Change drill: 0.8mm M226 P11 S0 ; čakanie na stlačenie tlačítka M106 S255 ; spustenie motora G00 Z2 F700 ; presun do transportnej výšky G4 S1 ; čakanie na stabilizáciu otáčok ; Vŕtanie druhým nástrojom G00 X20 Y20 F5000 ; presun na polohu G01 Z-3 F50 ; vŕtanie G01 Z2 F700 ; návrat G00 X10 Y20 F5000 ; presun na polohu G01 Z-3 F50 ; vŕtanie G01 Z2 F700 ; návrat ; Ukončenie práce M107 ; zastavenie motora G28 X ; zaparkovanie hlavy M84 ; vypnutie motorov
Filter pre Inkscape
Rozšírenie pre Inkscape sme museli kompletne napísať od začiatku, keďže sme nenašli nič použiteľné. Stiahnuť ho môžete na konci článku alebo na Githube. Inštalácia je jednoduchá: súbory treba skopírovať do systémového alebo užívateľského adresára s rozšíreniami (adresáre sú definované v konfigurácii Inkscape: Edit->Preferences->System).
Rozšírenie vytvorí vŕtací plán zo všetkých kruhov v nakreslenom návrhu, ktorých priemer nepresiahne zvolenú hodnotu. Do úvahy sa berú iba kruhy; elipsy alebo oblúky sa do úvahy neberú.
Máme na výber z dvoch formátov výstupného súboru: Excellon alebo g-code kompatibilný s 3D tlačiarňami. Excellon formát je nepísaným štandardom pri vytváraní vŕtacích plánov z CAD softvérov a môžeme ho použiť ako vstup pre ďalšie spracovanie.
BASTL Drill Tool nájdeme v menu Extensions (Rozšírenia), podmenu BASTL Tools. Po jeho zvolení sa objaví dialóg s voľbami, rozdelenými do dvoch záložiek:
Na prvej záložke (s názvom General) nájdeme základné parametre pre tvorbu vŕtacích dát:
- Output Format: typ výstupného súboru – Excellon alebo g-code
- Unit: jednotky, v ktorých bude vytvorený výstupný súbor (milimetre alebo palce).
- Maximum Drill Diameter: Maximálna veľkosť otvoru. Otvory s väčším priemerom nebudú zahrnuté vo výstupnom súbore
- Filename: meno výstupného súboru
Na druhej záložke (s názvom G-Code) nájdeme parametre týkajúce sa vytvárania g-code:
- Spindle ON Command: príkaz na zapnutie vretena (vrátane otáčok)
- Spindle OFF Command: príkaz na vypnutie vretena
- Tool Change Command: príkaz na výmenu nástroja
- Additional initialization: dodatočná inicalizácia (ak nechceme meniť Program Header)
- Message Command: príkaz na zobrazenie správy na LCD displeji
- Drill Height: výška, do ktorej sa bude vŕtať (obvykle záporná).
- Safe Height: bezpečná výška, v ktorej sa môže vŕtacia hlava premiestňovať.
- Tool Change Height: výška, v ktorej sa budú vymieňať nástroje.
- Drill Speed: rýchlosť vŕtania (vnikania do matriálu)
- Retract Speed: rýchlosť vyťahovania vrtáku
- Transport Speed: rýchlosť presunu od diery ku diere
- Program Header: inicializačné príkazy programu
- Program Footer: záverečné príkazy programu
Pokiaľ potrebujeme definovať viacriadkové príkazy použijeme znak „|“ ako oddeľovač riadkov.
Konvertor Excellon formátu
Excellon formát je v podstate predchodcom štandardizovaného g-code. Je mierne orientovaný na konkrétny typ zariadení (od firmy Excellon) a dokáže popísať ako vŕtanie dier (v tzv. drill mode) tak aj frézovanie (route mode). V súčasnosti sa používa iba jeho podmnožina popisujúca vŕtací plán. V Excellon formáte produkuje vŕtacie dáta väčšina návrhových systémov pre DPS.
Napísali sme jednoduchý a trochu neučesaný konvertor podmnožiny Excellon formátu do g-code kompatibilného s 3D tlačiarňami. Pokiaľ potrebujeme štandardný g-code môžeme využiť niektorý z existujúcich konvertorov.
Náš konvertor je napísaný v Pythone a v podstate kopíruje funkčnosť rozšírenia pre Inkscape. Konvertor sme nazvali exc2gcode
(exc2gcode.py
) a pozná nasledujúce parametre:
Usage: exc2gcode.py [options] <filename> Options: -h, --help show this help message and exit -f OUTPUT_FILE, --file=OUTPUT_FILE Name of output file; if not specified stdout is used -u UNIT, --unit=UNIT Output unit (mm or in); if not specified the unit used in imput file is preserved -x MAXSIZE, --maxsize=MAXSIZE Maximum drill diameter (mm or in) --header=GHEADER Program header --footer=GFOOTER Program footer --spindle-on=SPINDLE_ON Spindle ON Command --spindle-off=SPINDLE_OFF Spindle OFF Command --init-cmd=INIT_CMD Additional initializatiom --tool-cmd=TOOL_CMD Tool Change Command --msg-cmd=MSG_CMD Display Message Command --drill-height=DRILL_HEIGHT Drill Height (mm or in) --safe-height=SAFE_HEIGHT Safe Height (mm or in) --tool-change-height=TOOL_HEIGHT Tool Change Height (mm or in) --drill-speed=DRILL_SPEED Drill speed (mm/min) --retract-speed=RETRACT_SPEED Retract speed (mm/min) --move-speed=MOVE_SPEED Move speed (mm/min)
Pokiaľ potrebujeme definovať viacriadkové príkazy použijeme znak „|“ ako oddeľovač riadkov.
Aby sme nemuseli opakovane zadávať všetky parametre môžeme vytvoriť súbor s preddefinovanými hodnotami. Máme dve možnosti:
- súbor s názvom
exc2gcode
v aktuálnom pracovnom adresári - súbor s názvom
.exc2gcode
v domovskom adresári užívateľa (~/.exc2gcode
alebo%USERPROFILE%\.exc2gcode
, v závislosti na použitom OS)
Najprv sa načíta súbor v domovskom adresári (pokiaľ existuje) a po ňom sa načíta súbor v aktuálnom pracovnom adresári. Hodnoty uvedené na príkazovom riadku majú prioritu pred hodnotami z konfiguračných súborov. Formát súboru je jednoduchý: obsahuje páry názov:hodnota
(oddelené dvojbodkou), kde názov zodpovedá dlhému názvu voľby z príkazového riadku. Napriklad:
header:G92 X0 Y0 Z0|G90 tool-change-height:40 drill-speed:30 tool-cmd:M226 P11 S0
Nastavenie a vŕtanie
G-code, ktorý používame – či ručne písaný alebo generovaný – predpokladá, že tlačiareň je ručne nastavená do bodu (0,0) a výška nástroja je nastavená tak, že sa dotýka povrchu vŕtaného materiálu. Tento bod sa nastaví ako „virtuálna nula“ príkazom G92 X0 Y0 Z0
(parametre sú u Repetier firmvéru nutné, ďalšia odchýlka od štandardu) a všetky súradnice sa odvíjajú od tejto virtuálnej nuly.
Najjednoduchší a hlavne bezpečný spôsob nastavenia výšky je osadiť vrták do klieštiny (nie na doraz), spustiť hlavu tesne nad povrch (zhruba 0.5mm) a klieštinu uvoľniť, aby vrták dopadol na povrch. Týmto spôsobom sa minimalizuje riziko zlomenia vrtáku pri presnom nastavovaní.
Pri nasadzovaní a výmene vrtákov používame dištančnú podložku. Jej výška by mala byť zvolené tak, aby vznikol dostatočný priestor na výmenu nástroja. Výšku dištančnej podložky zadávame ako „Tool Change Height“ parameter. Presnosť nie je kritická – počas celého programu by vrták pri horizontálnych pohyboch nemal klesnúť pod bezpečnú výšku (Safe Height), na kompenzáciu nepresnosti stačí ponechať dostatočnú rezervu pri vŕtaní (Drill Height).
Postup výmenu je nasledovný:
- Po spustení vŕtacieho programu alebo pri požiadavke na výmenu nástroja sa hlava zdvihne do polohy definovanej parametrom „Tool Change Height“ a program zastaví
- Nasadíme nový nástroj a zasunieme pod neho dištančnú podložku
- Nástroj zafixujeme v takej polohe, aby sa dotýkal povrchu dištančnej podložky
- Dištančnú podložku vyberieme a program necháme pokračovať (stlačením tlačítka)
Rýchlosť pohybu – najmä rýchlosť vŕtania – je stanovená experimentálne. Pokiaľ je rýchlosť privysoká vrták pod tlakom ubieha do bokov a vstup nie je čistý, nehovoriac o riziku zlomenia vrtáku. Tento jav je vidieť voľným okom. V takom prípade je potrebné rýchlosť znížiť. S použitým motorom to je menej ako 50mm/min pri priemeroch vrtáku do 1mm. Pozor na minimálnu povolenú rýchlosť, pri nízkych rýchlostiach bude potrebné upraviť hodnotu maximálneho povoleného zrýchlenia.
Minimálna rýchlosť sa počíta podľa vzorca:
vmin = 60.0 * A * sqrt( 2.0 / ( S * A ))
kde A je maximálne zrýchlenie na príslušnej osi a S je počet krokov motora na 1 milimeter. Tieto údaje vieme získať príkazom
M360
.V našom prípade máme pre os Z nastavené maximálne zrýchlenie 90mm/s2 a počet krokov 395 na 1 milimeter. Takže minimálna rýchlosť na osi Z je 40,5 mm/min.
Pre os X a Y sa vypočítáva hodnota spoločne podľa osi X, a to podľa väčšieho z dvoch zrýchlení – jedno sa stanovuje pre presuny (G0), druhé pre pracovné pohyby (G1, G2, G3). V našom prípade máme pre obe osi X a Y nastavené maximálne zrýchlenie 950mm/s2 a počet krokov 80 na 1 milimeter. Takže minimálna rýchlosť na osiach X a Y je 292.4 mm/min – to je limit na ktorý sme narazili pri laserovej gravírke.
Našťastie môžeme maximálne zrýchlenie nastavovať dynamicky pre presuny pomocou príkazu
M202 X... Y... Z...
a pre pracovné pohybyM201 X... Y... Z...
(samozrejme, stačí špecifikovať iba osi, ktoré potrebujeme zmeniť). Najjednoduchší spôsob je vždy nastaviť obe zrýchlenia (M202
aM201
) rovnako.
Pri vŕtaní DPS je vhodné povrch DPS prekryť vstupným materiálom, ktorý zamedzí vzniku ostrín na okraji vrtu. Používame hladkú maliarsku kryciu pásku, výsledok je viac ako dobrý.
Na obrázku vpravo je vidieť výsledok – dole sú otvory vŕtané vrtákom priemeru 0,4mm, hore vrtákom priemeru 0,3mm. Najväčšou slabinou použitého motora je nepresné a voľné uloženie osi (alebo jej krivosť), čo spôsobuje že špička vrtáka opisuje kružnicu. U malých priemerov vrtáku (0.3mm a 0.4mm) je tento problém veľmi viditeľný (a vedie k ich častému lámaniu), u väčších priemerov sa tento jav potláča. Krivosť čínskych „repasovaných“ vrtákov problém iba zhoršuje. K pokusom sa neskôr vrátime s kvalitnejšími motormi.
Druhým problémom môže byť nedokonalá kolmosť k povrchu, čo môže spôsobovať ubiehanie vrtáku do strany (možná príčina javu ktorý vidieť na otvoroch 0,3mm). Aj s tým skúsime niečo urobiť.
Nasledujúce video ukazuje priebeh vŕtania. Použitý je ručne písaný g-code z tohoto článku, čakanie na tlačítko je nahradené dvojsekundovou pauzou.
Na stiahnutie
OpenSCAD model držiaka vŕtačky
Rozšírenie pre Inkscape BASTL Drill Tool (alebo priamo na Githube)
exc2gcode konvertor (alebo priamo na Githube)