GRBL a použití funkce autosquare

Co je AUTOSQUARE? Jedná se o automatické “vyrovnání” počátků (HOME) dvou motorů použitých na posuv jedné osy CNC stroje. Auto square zajistí, že osa kolmá na osu se dvěma motory bude opravdu kolmá (tedy tak kolmá, jak dobře budou nastaveny koncové spínače).

CNC stroje mohou mít různé pohony jednotlivých os. Na našich strojích LUPA v3.3 a v3.5 používáme na delší ose dva motory. Je to kvůli jednoduššímu mechanickému řešení celé konstrukce. I když by se mohly motory jevit jako na sobě nezávislé, není tomu tak. Ovládací signály STEP a DIR mají společné. Používáme CNC Shield Protoneer v3.0, který umí ovládat 3 osy. Shield je osazen na Arduino UNO. Na shieldu jsou 4 sloty pro drivery X, Y, Z, A. Slot A nemá přivedeny vlastní ovládací signály STEP a DIR. Slot A umožňuje naklonování jednoho z ostatních slotů X, Y, Z. Naklonování se provádí zkratovacími propojkami. Jednoduše si zvolíte osu, kterou chcete naklonovat, a pomocí dvou propojek (jedna pro STEP, druhá pro DIR) na shieldu propojíte požadované piny. V této konfiguraci nelze autosquare použít, jednoduše proto, že ty dva motory na jedné ose nejsou ovládány samostatně.

GRBL nabízí nastavení pro využití autosquare, kdy jsou tyto dva motory na jedné ose ovládány samostatně. Funkci autosquare je vhodné použít u strojů se silnějšími motory a s posuvem os pomocí šroubů nebo pastorků na ozubených hřebenech. Na strojích se slabšími motory a posuvem os řemínky není funkce autosquare nutná.

Pro použití funkce autosquare je třeba GRBL nastavit. GRBL umožňuje v souboru config.h vybrat jeden ze dvou shieldů. 3.51 nebo Protoneer v3.0. I když by se mohlo zdát, že by bylo vhodnější vybrat přímo shield Protoneer v3.0, není tomu tak. Vhodnější je zvolit konfiguraci se shieldem 3.51 a upravit zapojení na shieldu Protoneer v3.0 pomocí drátových propojek. Při použití konfigurace pro Protoneer v3.0 totiž přijdete o možnost ovládat otáčky vřetene (PWM)! Pokud se vám nechce “drátovat” můžete použít přímo originál shieldu 3.51 ($14-15) jehož cena je výrazně vyšší než shieldu Protoneer v3.0 ($3). Na obrázku níže je doporučené nastavení v souboru config.h.

Použití GRBL s funkcí autosquare přináší oproti standardní verzi (bez autosquare) omezení. To je částečně zřejmě z popisu viz. obrázek výše. Jde o to, že Arduino UNO má omezený počet výstupů a pro ovládání dalšího motoru už není volný výstup. Musí se tak obětovat některá z funkcí standardního nastavení. V případě nastavení pro shield 3.51 je to možnost spínání vřetene. Níže najdete popis dvou variant nastavení. První jednodušší, to pokud se smíříte se skutečností, že přijdete o možnost spínání vřetene (funkce PWM zůstává zachována). Druhá s většími úpravami konfiguračních souborů, ale se zachováním spínání vřetene. U této varianty ale přijdete o možnost samostatně spínat chlazení. Holt něco za něco.

Ještě před popisem obou variant řešení video s demonstrací funkce autosquare na Youtube

1. jednodušší – úprava config.h

Pozor, v obou případech je v config.h potřeba vybrat nastavení pro desku 3.51 a nikoliv pro Protoneer v3.0, jak by se dalo očekávat. Na používané desce Protoneer v3.0 se musí druhý motor osy Y zapnout nikoli zkratovacími propojkami, ale musí se připojit na výstupy A4/A3 viz. obrázek.

Při kompilaci GRBL zřejmě vyskočí chyba u souboru report.c a to z důvodu chybějící závorky } v kódu. Je potřeba závorku na konci řádku 581 doplnit. Je ale možné, že chybová hláška nevyskočí.

Koncový spínač druhého motoru bude paralelně připojen ke spínači osy Z. Ostatní spínače zůstávají bez změn.
Při tomto nastavení není standardně k dispozici pin pro spínání relé vřetene (zapnutí / vypnutí). Na pin D13, kde byl původně výstup pro spínání vřetene (přesněji řečeno ovládání směru otáčení vřetene), je nyní přiveden výstup spínání chlazení. Takže pokud potřebujete spínat vřeteno, lze to udělat s využitím výstupu pro chlazení a s ručním dopsáním příkazů pro spuštění / vypnutí chlazení (M8 / M9) do G-kódu. Standardně se v G-kódu pro zapnutí / vypnutí vřetene používá M3 / M5 a tyto příkazy bývají generovány softwary použitými pro vytváření G-kódu.

2. složitější – úprava config.h, grbl.h, cpu_map.h

Toto nastavení zachová spínání vřetene na D13, ale přijdete o výstup pro spínání chlazení. Pozor, opět je v config.h potřeba vybrat nastavení pro desku 3.51 a ne Protoner v3.0. Zapojení je stejné jako v předchozím případě, jen na D13 bude spínání vřetene.

A teď to nejhorší, úprava všech souborů. Autorem úprav je Jakub Kraus.

Změny:

  • v config.h nastavit USE_SPINDLE_DIR_AS_ENABLE_PIN
  • v grbl.h vymazat chybovou hlášku “USE_SPINDLE_DIR_AS_ENABLE_PIN not supported with dual axis feature.”
  • v cpu_map.h:
    •  v části #ifdef DUAL_AXIS_CONFIG_PROTONEER_V3_51 nastavit

      #define COOLANT_FLOOD_DDR   DDRC   … původně DDRB

      #define COOLANT_FLOOD_PORT  PORTC   … původně PORTB

      #define COOLANT_FLOOD_BIT   7   … původně 5

… je to sice trochu prasárna protože bit 7 neexistuje, používat neexistující pin je v lepším případě nedefinované chování a v horším to něco rozbije            

  • v části #ifdef VARIABLE_SPINDLE nastavit

        #define SPINDLE_ENABLE_BIT    5   … původně 3

      #else

        #define SPINDLE_ENABLE_BIT    4

      #endif

Pokud se nechcete s úpravami souborů trápit, tak si je stáhněte zde a nahraďte jimi ty původní ve vaší instalaci GRBL. Velmi doporučuji zálohovat původní soubory.

Závěr

Popsané řešení nevystihuje kompletní zapojení elektroniky potřebné pro ovládání CNC stroje. Je věnováno jen a pouze funkci autosquare a to při použití samostatné desky Arduino UNO a shieldu Protoneer v3.0 resp. jeho kopie. Popsané řešení nemusí být kompatibilní s hotovými ovládacími deskami GRBL (grbl control boards).

Výše popsané platí pro standardní GRBL 1.1. Pokud se chcete zbavit omezení GRBL 1.1, tak přejděte na grblHAL. Veškeré úpravy děláte na vlastní nebezpečí! Neručíme za žádné škody vzniklé v souvislosti s realizací výše popsaných změn.

Vřeteno 300W brushless

Hledali jsme malé vřeteno, které by bez nadměrného zahřívání umělo více otáček než to, které jsme používali na naše první stroje (stejnosměrné 500W). Náhodou, klasicky při hledání něčeho úplně jiného, mi na Aliexpressu padlo do oka takové malé, pěkné, střídavé …

Prodejce uváděl ideální parametry – 14000ot/min při napájení 36V. Tak jsem objednal vřeteno i vhodný zdroj. Netrvalo dlouho a obojí se sešlo na stole. Radost z rychlého dodání a precizního provedení zkazila skutečnost, že vřeteno při 36V dává pouze 12000ot/min. Chvíli jsme si s prodejcem dopisovali ohledně chybných údajů. Nakonec se ukázalo, že žádné vřeteno 14000ot/min/36V neexistuje. Nic však není ztraceno protože driver motoru umí až 50V tzn. otáčky naženu napětím jak už to u stříďáků lze snadno provést. Jen ten zdroj 36V bylo nutné nahradit zdrojem 48V.

Vřeteno prodejce dodává jak samotné, tak v několika variantách s příslušenstvím. Zajímavě se jeví varianta vřeteno + držák + driver + “tachometr”. Driver umožňuje připojit speciální displej (tachometr), který přesně ukazuje otáčky vřetene. Poznámka pro hračičky: z driveru lezou dle otáček pulzy 0-10V a kdo by si chtěl hrát může si měřáček postavit třeba z Arduina. Vybrali jsme variantu bez “tachometru”.

Motor je střídavý s hřídelí jejíž součástí je upínání ER11 (hřídel a upínání je skutečně jeden kus, ne jako u výše zmiňovaného stejnosměrného 500W). To má samozřejmě jasný vliv na přesnost upnutí nástroje. Průměr motoru v místě upevnění 55mm, čela jsou větší – to je mírná nevýhoda, protože vřeteno nelze do držáku zasunout a dvoudílný držák se při montáži či demontáži motoru musí rozebrat (povolit všechny 4 šrouby). Vypadá to jako banalita, ale rozebráním se ztratí přesná poloha držáku na stroji takže po montáži je nutné otestovat přesnou svislost vřetene vůči základní desce stroje (pro srovnání zmiňované 500W vřeteno lze z držáku vyjmout povolením jen dvou šroubů, zbylé dva stále drží držák na stroji). Dále už jen samé výhody: nízká hmotnost 1100g vč. držáku (500W – 1300g), zakrytý vnitřní větrák (o jeho účinnosti jsem neměl valné mínění), precizní uložení hřídele v ložiskách a čelech motoru, tichý chod. Výrobce dále uvádí doporučené zatížení 12A, maximální 15A.

K řízení otáček motoru slouží univerzální driver pracující v rozsahu 20-50V, který podporuje připojení již zmíněného “tachometru” a také umožňuje řídit motory s hall senzory (vřeteno tyto senzory nemá). My využíváme pouze možnost ovládání otáček potenciometrem a vypnutí/zapnutí vřetene samostatným vypínačem. Při zapnutí se motor plynule rozjede do potenciometrem nastavených otáček. Při vypnutí vytrácí otáčky pomalu, nemá brzdu. Nechtěně jsem vyzkoušel odolnost driveru proti přepólování – utavil se jeden pin konektoru pro připojení napájení, ale driver vydržel. Jestli má třeba integrovanou vratnou pojistku jsem nezjišťoval.

Vřeteno jsme dlouhodobě testovali na vysoké otáčky (16000/min). Největší zátěž absolvovalo asi na výstavě Maker Faire v Brně 23.-24.10. 2021, kde jsme prezentovali naši frézku standardních rozměrů LUPA v3.3. Frézka pracovala prakticky bez odpočinku po celé dva dny výstavy. Jedno vřeteno je instalováno také na frézce ve firmě vyrábějící modely letadel a lodí, kde rozhodně neodpočívá.

Vřeteno lze ovládat manuálně vypínačem a potenciometrem, které jsou součástí dodávky. Pro naše použití jsme ovládání přizpůsobili a je ovládáno z ovládací elektroniky frézky (LUPA BOX v.3). Pro zapnutí/vypnutí je použito relé a pro nastavení otáček PWM modul vlastní výroby (lze koupit na E-shopu SWplanes.cz), který nahrazuje potenciometr. Díky tomu můžeme zajistit ovládání otáček z ovládacího programu (např. Candle) a tedy i přímo z G-kódu. Průběh regulace je téměř lineární.

Vřeteno si troufám hodnotit jako velmi povedené a kvalitativně i užitnou hodnotou převyšující naše původní stejnosměrné 500W vřeteno. Nadále od 500W vřetene upouštíme a na našich hobby frézkách s pohonem os X a Y řemínky budeme používat jen toto střídavé. Škoda, že není podobné vřeteno s ještě vyššími otáčkami. Lze sice sehnat obdobná výkonnější vřetena, která se liší jen délkou těla motoru, ale bohužel všechna jen s nižšími max. otáčkami.

Obsah balení: Střídavé vřeteno 300W s upínáním ER11, driver ovládání otáček (20-50V), držák motoru vč. šroubů, kleština 1/8″ (ER11).

Montáž všech komponent musí být provedena odborně aby nedošlo k úrazu elektrickým proudem.

Vřeteno lze zakoupit např. na E-shopu SWplanes.cz.

Sada vřetene – vřeteno, držák, driver s kabeláží
Upínání ER11 je součástí hřídele
Základní kabeláž s potenciometrem a vypínačem. Volná pole svorkovnice avizují další možnosti.
Driver ovládání motoru. Vlevo masívní konektor pro připojení napájení a motoru. Vpravo subtilnější konektor pro připojení vypínače, potenciometru atd.

Jardovo odsávání

Jarda Pelán vymyslel a vymodeloval sestavu pro odsávání. Jedná se o několik 3D modelů navržených pro výrobu 3D tiskem. Vše důležité je snad zřejmé z fotek. Princip řešení odsávání je takový, že hlavní držák je umístěn na pevné části osy Z (tzn. odsávání se nepohybuje nahoru / dolů společně s osou Z a zůstává stále ve stejné výšce nad opracovávaným materiálem). “Bariéru” pro uzavření prostoru kolem nástroje tvoří zástěra z PET lahve upevněná na rámeček, který se pomocí magnetu uchytí na hlavní tělo odsávání. Je tak zjednodušen přístup k nástroji. PET třásně jsou poddajné, takže nehrozí zaseknutí o nějaký výstupek při frézování a současně vytvoří kompaktní stěnu kolem nástroje což vede k lepšímu odsátí prachu. Když se třásně opotřebují jednoduše se nahradí novými.

3D data dal Jarda k dispozici, takže si je můžete stáhnout (data *.STL). Nastavení tiskárny si musíte pořešit dle svých zkušeností a autor nenese záruku, že zrovna na vaší tiskárně se podaří vytisknout bezvadný výrobek. Co by vás mohlo při kompletaci překvapit je, že autor použil čtvercové matice M3. Neodymové magnety mají velikost 5x2mm.

A jak to celé může dopadnout je vidět na připojených obrázcích.

Hlavní díl odsávání a rámeček (bez třásní)
Hlavní díl s nasazeným rámečkem (bez třásní)
Rámeček s nalepenými třásněmi, které jsou ještě přitaženy stahovací ZIP páskou.
Hlavní díl (pozor, tady ještě jedna z dřívějších verzi) na držáku, který je upevněn na nepohyblivou část osy Z.
Detailní pohled na spojení držáku a hlavní trubice. Hlavní trubice je upevněna posuvně, takže se dá snadno nastavovat výška nad materiálem.

Vřeteno 500W

Když jsme hledali vhodné vřeteno pro naše frézky řady LUPA v.2 našli jsme tohle vřeteno na Aliexpressu. Bylo skladem někde v Evropě a tak za necelý týden zvonil pošťák na dveře. Nečekali jsme nic extra, ale vřeteno nás příjemně překvapilo. Ačkoli není kleština součástí hřídele a je jen na hřídel nasunuta a zajištěna šroubky, tak je perfektně souosá a nástroj v ní upevněný nehází. Tohle první vřeteno jsme dost trápili a vyzkoušelo si frézovat jak dřevo, tak hliník. Při provozu se trochu hřeje, ale možná i díky masívnímu kovovému úchytu se nepřehřívá a teplota prakticky nezávisí na zátěži. V horní části je na hřídeli umístěn větrák – to je asi největší zdroj hluku. Na různých internetových diskuzích lze najít, že si někteří na vřeteno namísto tohoto sranda větráčku dávají vlastní, např. tištěné na 3D tiskárnách. Podle našich zkušeností to ale není třeba.

S vřetenem je dodáván i zdroj, který slouží pro regulaci otáček. Výrobce udává otáčky 3000-12000/min. Na zdroji lze nastavit i otáčky vyšší (přes 14tis/min). Jaký to bude mít dopad na životnost jsme zatím nezjistili. Zdroj není zrovna zázrak bezpečnosti. Připojuje se do sítě 110/230V dvoužilovým kabelem bez ochranného vodiče. Ke zdroji se všechny kabely připojují přes šroubovací svorkovnici, jen pro připojení potenciometru regulace otáček je použit konektor. Do svorkovnice se připojuje také vřeteno – je stejnosměrné, takže záleží na připojení kabelů. Vřeteno je regulováno napětím a to může dosahovat až cca 100V! Od výrobce jsou dva vstupy na svorkovnici propojeny kablíkem. Tento vstup slouží pro případné spínání vřetene pomocí relé – jednoduše pokud jsou vstupy na svorkovnici propojeny, tak se vřeteno po připojení napájení roztočí a pokud propojeny nejsou, tak se neroztočí. Pozor, spíná se přímo 230V! V naší ovládací elektronice LUPA BOX v.2 spínání pomocí relé používáme.

Kromě spínání vřetene pomocí relé používáme také regulaci pomocí PWM na kterou není zdroj od výrobce připraven. Vyrábíme si vlastní elektroniku, která regulaci vřetene přes PWM umožňuje a nahrazuje ovládání potenciometrem. Díky tomu můžeme zajistit ovládání otáček z ovládacího programu (např. Candle) a tedy i přímo z G-kódu. Průběh regulace je bohužel dost nelineární, ale i to jsme vyřešili použitím dalšího Arduina NANO, které kromě převodu a řízení otáček používáme ještě pro další pomocné funkce. Pro úplnost doplním, že lze koupit verzi, kde je zdroj připraven pro regulaci 0-10V, ale ta bývá hůře dostupná a obyčejně je dražší. Pak je nutné pro regulaci použít externí modul, který převede PWM (signál, který je výstupem z GRBL) na napětí 0-10V. I tak se ale při koupi této varianty budete potýkat s nelinearitou regulace otáček.

Vřeteno hodnotím jako ideální pro hobby použití. Používáme ho na našich hobby frézkách a zatím jsme neměli jediný problém. CNC profíci nejspíš ohrnou nos protože si nedokáží představit nic jiného než výkonné střídavé vřeteno s frekvenčním měničem. To už je ale jiná cenová hladina. Takové vřeteno je navíc docela těžké a stroj na to musí být dimenzován. Zkrátka začarovaný kruh …

Technické parametry:

  • Otáčky motoru 3000 – 12000 /min (lze i více)
  • Průměr motoru 52mm
  • Délka motoru 208mm
  • Maximální napětí na motoru 100V
  • Maximální proud 6A
  • Točivý moment 0.5Nm
  • Upínání ER11

Obsah balení: Vřeteno 500W (stejnosměrný motor) s upínáním ER11, regulátor otáček (zdroj 110-230V), držák motoru vč. šroubů, kleština 1/8″ (ER11).

Montáž musí být provedena odborně aby nedošlo k úrazu elektrickým proudem. Všechny kovové části musí být dodatečně uzemněny a zdroj musí být umístěn do nevodivé krabice se zajištěným odvětráním.

Vřeteno lze u nás zakoupit jako příslušenství frézek.

Sada vřetene – vřeteno, držák, zdroj (regulátor) s potenciometrem
Na hřídeli vřetene je upínání ER11
Pro upevnění vřetene na stroj je dodáván držák. Vypadá pěkně, ale díry zřejmě výrobce vrtá od oka, takže co držák, to originál.
Vlevo konektor pro připojení potenciometru manuálního ovládání otáček. Nad konektorem modro-bílý potenciometr, kterým se dají nastavit maximální otáčky. Svorkovnice je popsána: ON/OFF pro případné spínání pomocí relé, MOTOR pro připojení kabelů motoru a POWER pro připojení síťového napětí 110/230V.

Základní odsávání

Při frézování obyčejně vzniká spousta odpadu a tak se hodí odsávání. Až vás přestane bavit šmejdění trubicí vysavače kolem nástroje, tak dalším krokem může být třeba navrhované řešení. Opravdu se jedná o úplný základ a vlastní invenci se meze nekladou.

Jedná se o dva díly postavené na 3D tiskárně (data *.STL). Odsávací hubice se napojí na vysavač. Držák s protaženou hubicí se nasazuje na úchyt vřetene. Držák je navržen pro nasazení na úchyt, který je často součástí obyčejných čínských stejnosměrných vřeten. Při výměně nástroje se odsávání jednoduše z úchytu vřetene sundá. Držák nemá zrovna nejvhodnější tvar pro 3D tisk na běžné SLA (“slintací”) tiskárně, takže se hodí ho rozdělit na dvě půlky (spodní / horní) a po vytištění je jen jednoduše spojit vruty. Výtisk na obrázcích není zrovna prvotřídní kvality, ale na funkci to nemá vliv.

Mějte prosím na paměti, že běžný vysavač není určen pro dlouhodobé použití a hlavně velmi rychle ho naplníte. Propojovací hadici je třeba umístit tak, aby neomezovala pohyb stroje – na obrázku je připojení spíše demonstrativně a pohybu stroje by vadilo.

A jak to celé může dopadnout je vidět na připojených obrázcích.

Výše popsané odsávání se hodí spíše pro frézování plochých věcí, kde vřeteno zajíždí stále do stejné hloubky. Pokud budete chtít frézovat prostorově (výškově) členitější tvary, tak je vhodnější řešit uchycení sání spíše na nepohyblivé části konstrukce osy Z, aby se nepohybovalo nahoru / dolů. Možné řešení na dalším obrázku. Překližková deska je přišroubována ke konstrukci stroje. Na desku jsou uchyceny typové úchyty pro novodurové odpadní trubky a celá sestava je vyskládána právě z odpadních trubek. Odsávání je hadicí s větším průměrem napojeno na průmyslový odsavač pilin.

V praxi pak frézování s odsáváním může vypadat třeba takto … video na YouTube.

Dotyková sonda pro osu Z

Při nájezdu nástrojem na obráběný materiál se hodí dotyková sonda (tzv. Touch Probe), která umožní rychle a efektivně měřit vzdálenost nástroje od materiálu. Sonda může vypadat třeba jako na fotce. Dotyková destička s kabeláží pro připojení k ovládání frézky.

Dotyková sonda pro osu Z (té díry v desce si nevšímejte, pro výrobu desky byl použit zbytek cuprextitu s dírou 🙂 )

Pokud budete pro obsluhu frézky používat GRBL s Arduinem a CNC shieldem (níže shield pro Arduino UNO), tak můžete sondu zapojit vč. signalizace LED diodou. Pozor! Dioda není vřazena přímo do okruhu sondy, ale je zapojena samostatně. Na diodě dochází k úbytku napětí a při vřazení přímo do obvodu sondy by Arduino nemuselo dotyk správně vyhodnotit. Praktické provedení se signalizací by pak mohlo vypadat třeba tak, že LEDka a konektor pro připojení sondy budou někde na portálu v samostatné krabičce a sonda s krokodýlkem se připojí v případě potřeby.

Zapojení sondy k CNC shieldu (GRBL) se signalizací LED diodou

Na videu ukázka funkce sondy. Tady je signalizace přímo na desce sondy. Při použití červené diody (má nejnižší úbytek napětí) sonda ve spojení s LinuxCNC bez problémů funguje.