CNDY Shield GRBL CNC Arduino UNO vartotojo vadovas
V1.2

GRBL kištukas ant Arduino Uno
Analoginis 0 = nutraukimo mygtukas*
Analoginis 1 = tiekimo sulaikymo mygtukas* (SAFETY_DOOR yra bendrinamas su tiekimo sulaikymu. Įjungta pagal konfigūracijos apibrėžimą)
Analoginis 2 = ciklo paleidimo / paleidimo iš naujo mygtukas*
3 analogas = Aušinimo skysčio įjungimo išvestis
4 analogas = (neprivaloma) Rūko aušinimo skysčio išėjimas (arba ALARM_STATE diagnostikos lemputė**)
5 analogas = zondo įvestis*
Skaitmeninis 13 = Suklio kryptis
Digital 12 = ribiniai jungikliai Z ašis*
Skaitmeninis 11 = suklio / lazerio įjungimo PWM
Digital 10 = ribiniai jungikliai Y ašis*
Digital 9 = X ašies ribiniai jungikliai*
Skaitmeninis 8 = žingsniniai varikliai įjungti / išjungti
Skaitmeninis 7 = kryptis Z ašis
Skaitmeninis 6 = kryptis Y ašis
Skaitmeninis 5 = kryptis X ašis
Skaitmeninis 4 = Žingsnio impulso Z ašis
Skaitmeninis 3 = žingsnio impulso Y ašis
Skaitmeninis 2 = žingsnio impulso X ašis
Pasirenkama dviejų ašių funkcija
Uno Analog Pin 3 = A ašis DUAL_DIRECTION (anksčiau buvo aušinimo skysčio įjungimo išvestis)
Uno analoginis kaištis 4 = A ašis DUAL_STEP (anksčiau buvo pasirenkama rūko aušinimo skysčio išvestis)
Uno Digital 13 = aušinimo skystis (pakeičia suklio kryptį.)
Įdiegę grbl saugyklą kaip biblioteką „Arduino“, panaikinkite komentarus toliau pateiktose eilutėse config.h file grbl bibliotekos aplanke.
#define ENABLE_DUAL_AXIS // Numatytasis išjungtas. Atšaukite komentarą, kad įgalintumėte.
// Pasirinkite vieną ašį, kad atspindėtumėte kitą variklį. Šiuo metu palaikomos tik X ir Y ašys.
#define DUAL_AXIS_SELECT Y_AXIS // Turi būti X_AXIS arba Y_AXIS
PASTABA: Dviejų ašių riba bendrinama su (Z ašis) pagal numatytuosius nustatymus ribotas kaištis.
Dviejų ašių funkcijai veikti reikalingas nepriklausomas žingsninis impulsinis kaištis. Nepriklausomas krypties kaištis nėra absoliučiai būtinas, bet palengvina krypties apvertimą naudojant Grbl $$ nustatymą. Šie kaiščiai pakeičia suklio kryptį ir pasirenkamus aušinimo skysčio rūko kaiščius.
Ši pasirenkama dviejų ašių funkcija visų pirma skirta nukreipimo ciklui, kad būtų galima savarankiškai nustatyti dvi dviejų variklių platformos puses, ty savarankiškai nustatyti kvadratą. Tam reikalingas papildomas klonuoto variklio ribinis jungiklis. Norint savarankiškai kvadratuoti, abu klonuotos ašies ribiniai jungikliai turi būti fiziškai išdėstyti taip, kad suveiktų, kai platforma yra kvadratinė. Primygtinai rekomenduojame, kad varikliai visada būtų įjungti, kad platforma išliktų kvadratinė, kai nustatymas yra $1 = 255.
„Grbl“ „Arduino Uno“ klonuotas ašies ribinis jungiklis turi būti bendrinamas su z ašies ribiniu kaiščiu ir prijungtas prie jo, nes trūksta kaiščių. Nukreipimo ciklas turi nukreipti z ašį ir klonuotą ašį skirtingais ciklais, o tai jau yra numatytoji konfigūracija.
Dviejų ašių funkcija veikia klonuojant ašies žingsnio išvestį į kitą žingsnio ir krypties kaiščių porą. Klonuoto variklio žingsninis impulsas ir kryptis gali būti nustatomi nepriklausomai nuo pagrindinės ašies variklio. Tačiau norint sutaupyti brangios blykstės ir atminties, ši dviejų ašių funkcija turi turėti tuos pačius nustatymus (žingsnis/mm, maksimalus greitis, pagreitis) kaip ir pirminio variklio. Tai NĖRA nepriklausomos ketvirtosios ašies funkcija. Tik variklio klonas.
ĮSPĖJIMAS: būtinai patikrinkite savo dviejų ašių variklių kryptis! Jie turi būti sukonfigūruoti taip, kad judėtų ta pačia kryptimi PRIEŠ pradėdami pirmąjį nukreipimo ciklą arba bet kokį ilgą judesį! Priešingomis kryptimis judantys varikliai gali rimtai sugadinti jūsų mašiną! Naudokite šią dviejų ašių funkciją prisiimdami atsakomybę.
PASTABA: šiai funkcijai reikia maždaug 400 baitų blykstės. Tam tikroms konfigūracijoms gali pritrūkti blykstės, kad jos tilptų į Arduino 328p / Uno. Palaikomos tik X ir Y ašys. Kintamasis veleno / lazerio režimas yra palaikomas, bet tik vienai konfigūravimo parinkčiai. Šerdis XY, veleno krypties kaištis ir M7 rūko aušinimo skystis yra išjungti / nepalaikomi.
Siekiant išvengti, kad nukreipimo ciklas sugadintų dvigubą ašį, kai viena riba įsijungia anksčiau už kitą dėl jungiklio gedimo ar triukšmo, nukreipimo ciklas automatiškai nutraukiamas, jei antrojo variklio ribinis jungiklis neįsijungia pagal tris toliau nurodytus atstumo parametrus. Ašies ilgio procentas automatiškai apskaičiuos nesėkmės atstumą kaip procentątage kitos nedvigubos ašies maksimalaus eigos, ty jei dviejų ašių pasirinkimas yra X_AXIS ties 5.0%, tada nesėkmės atstumas bus apskaičiuojamas kaip 5.0% y ašies maksimalaus eigos. Fail distance max ir min yra ribos, kiek toli arba mažas yra galiojantis nesėkmės atstumas.
#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Slankioji (procentais)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Plūdis (mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Plūdis (mm)
Pastaba dėl I2C prievado
Analog 4 (A4) ir Analog 5 (A5) naudojami I2C prievadui Arduino Uno arba 328p. Tai reiškia, kad tol, kol naudojate numatytąją zondo funkciją, aušinimo skysčio rūko, dviejų ašių arba pasirinktinę ALARM_STATE LED diagnostinę lemputę, naudoti I2C nebus įmanoma. Ryšys su kitu „Arduino“, kad padidintų funkcionalumą, turės būti per nuoseklųjį ryšį D0 ir D1.
Darbo pradžia (Stepper tvarkyklės)
Pirma, norint prijungti žingsninius variklius prie Grbl, jums reikės kai kurių žingsninių variklių tvarkyklių, kurios maitintų žingsninius ir prijungtų tvarkyklės įvestis prie Arduino valdiklio kaiščių. Yra keletas tvarkyklių, galinčių tai padaryti – visiškai sukonstruotos, iš dalies pagamintos arba visiškai „pasidaryk pats“. Stepper tvarkyklės turės bendrinti žingsninio įjungimo kaištis (D8) prie atitinkamų įjungimo kaiščių, o krypties ir žingsnio impulsų kaiščiai (D2-D7) turės būti prijungti prie atitinkamų tvarkyklių kaiščių. Tiesiog įsitikinkite, kad visos jūsų tvarkyklės ir „Arduino“. dalijasi bendru pagrindu (žvaigždė įžeminta naudojant variklio tvarkyklės galią). Tai yra viskas, ko jums reikės norint pradėti.
Paskirties ir ribiniai jungikliai
Po to, kai nuspręsite, kad esate pasiruošęs arba norėtumėte kad įgalintų persijungimą ir (arba) griežtus apribojimus, turėsite prijungti a paprastai atidarytas ribinis jungiklis prie kiekvieno ribinio kaiščio (D9, D10 ir D12). Pristatymas ir griežtos ribos naudoja tuos pačius jungiklius. Šie ribiniai kaiščiai jau laikomi aukštai naudojant vidinį traukimo rezistorių, todėl tereikia juos prijungti prie žemės. Taigi, kai uždarote jungiklį, jungiklis patrauks ribinį kaištį į žemę. Jei norite, kad abiejuose ašies eigos galuose būtų tvirti ribiniai jungikliai, tiesiog prijunkite du ribinius jungiklius lygiagrečiai ašies ribiniam kaiščiui ir įžeminimui. Įsitikinkite, kad jungikliai yra sumontuoti prieš bandydami atlikti nukreipimo ciklą, ir įsitikinkite, kad naudojate tinkamus laidų prijungimo metodus, kad sumažintumėte išorinį elektros triukšmą ant įvesties kaiščių.
Gera laidų instaliacijos praktika gali apimti ekranuotų kabelių arba jungčių naudojimąamp- ant ferito kabelių gyslų ir naudojant kai kuriuos 0.1 uF kondensatorius lygiagrečiai su ribiniais jungikliais, skirtus atšaukti / triukšmo filtravimui. Taip pat gali būti gera idėja laikyti variklio laidus toliau nuo eigos jungiklio laidų.
Jei norite, galima sukonfigūruoti GRBL naudoti normaliai uždarytus ribinius jungiklius. Kai kurie mano, kad įprastai uždari galiniai jungikliai gali padėti sumažinti katastrofišką avariją ribinio jungiklio gedimo atveju. Daugelis vartotojų nenaudoja jokių ribinių jungiklių ir vietoj to pasirenka programinės įrangos apribojimus.
Grbl v0.8 ir naujesnėje versijoje yra ciklo pradžios, tiekimo sulaikymo ir vykdymo laiko iš naujo nustatymo komandos, todėl galite turėti fizinius valdymo mygtukus savo kompiuteryje. Kaip ir ribiniai kaiščiai, šie kaiščiai yra aukštai laikomi vidiniu traukimo rezistoriumi, todėl tereikia prie kiekvieno kaiščio ir įžeminimo prijungti įprastai atidarytą jungiklį. Dar kartą įsitikinkite, kad naudojate gerus laidų prijungimo metodus, kad sumažintumėte išorinį elektros triukšmą ant įvesties kaiščių.
Veleno ir aušinimo skysčio kaiščiai
Jei turite norą ar poreikį verpstės (D13) arba aušinimo skysčio valdymas (A3 ir A4) , Grbl perjungs šiuos išvesties kaiščius aukštai arba žemai, priklausomai nuo G kodo komandų, kurias siunčiate Grbl. Kai įjungta v0.9+ ir kintamo veleno PWM, D11 kaištis išves tam tikrą tūrio diapazonątages nuo 0 V iki 5 V, priklausomai nuo veleno greičio G kodo komandos. 0V šiuo atveju rodo, kad velenas išjungtas. Kadangi visi šie kaiščiai priklauso nuo taikymo, kaip jie naudojami, paliksime jums nuspręsti, kaip juos valdyti ir naudoti savo įrenginyje. Taip pat galite nulaužti veleną ir aušinimo skysčio valdymo šaltinį fileNorėdami lengvai pakeisti jų veikimą, tada sukompiliuokite ir įkelkite pakeistą Grbl per Arduino IDE.
Diagnostinė LED lemputė
Komercinės CNC mašinos dažnai turi bent vieną diagnostinį LED švyturėlį mašinos gedimo ar pavojaus kodo atveju. Naujiesiems GRBL ir „pasidaryk pats“ CNC staklių naudotojams ši funkcija labai naudinga norint sužinoti, kada įvyko ALARM_STATE (pvz., nepavyksta įjungti mašinos, kai įjungtas nukreipimo ir eigos jungiklis).
GRBL pagal numatytuosius nustatymus neturi diagnostinės LED lemputės. Taip yra todėl, kad „Ardunio UNO“ su 328p lustu turi ribotą programavimo erdvę ir šiuo metu naudojama beveik visa ta vieta (nors ir ne visa!). Ne visos pageidaujamos funkcijos gali būti įdiegtos tokiame mažai atminties įrenginyje, todėl kartais tenka paaukoti.
Be to, šiuo metu naudojami visi galimi I/O prievadai ir tokiai lemputei reikalingas bent vienas I/O kaištis. Laimei, šią funkciją galima lengvai pridėti nulaužus GRBL C kodą, o 3p luste vis dar yra apie 328% atminties!
Daugelis mašinų šiuo metu nenaudoja pasirenkamos MIST COOLANT funkcijos Analog 4, todėl galime lengvai iš naujo apibrėžti šį kaištį. Alternatyvus būdas galėtų būti tokių LED lempučių kodavimas išoriniame „Arduino“, kuriame būtų visi įvesties / išvesties prievadai, kuriuose būtų galima prijungti tiek LED lempučių / garsiakalbių, kiek norima, ir palaikyti ryšį per nuoseklųjį arba I2C.
Norėdami nulaužti GRBL šaltinio kodą ir naudoti CNDY skydo ALARM LED, atlikite šiuos veiksmus:
1 veiksmas: „Linux“ arba „Macintosh“ sistemoje atidarykite teksto rengyklę (sistemoje „Windows“ naudokite „Notepad++“) ir redaguokite cpu_map.h file:
Pakeiskite tai:
// Apibrėžkite užtvindymo ir miglos aušinimo skysčio įjungimo išvesties kaiščius.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4
Į tai:
// Apibrėžkite užtvindymo ir miglos aušinimo skysčio įjungimo išvesties kaiščius.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
//#define COOLANT_MIST_DDR DDRC
//#define COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4
///////////////////
// Apibrėžkite ALARM LED IŠVESTĮ
#define SIGNAL_LIGHT_DDR DDRC
#define SIGNAL_LIGHT_PORT PORTC
#define SIGNAL_LIGHT_BIT 4 // Uno Analog Pin 4
// #define signal_light(on) (SIGNAL_LIGHT_DDR |= (1<
// #define signal_light_init() signal_light(off)
#define signal_light_init signal_light_off
#define signal_light_on (SIGNAL_LIGHT_DDR |= SIGNAL_LIGHT_PORT |= (1<
#define signal_light_off (SIGNAL_LIGHT_DDR |= SIGNAL_LIGHT_PORT &= ~(1<
///////////////////
2 veiksmas: „Linux“ arba „Macintosh“ sistemoje atidarykite teksto rengyklę (sistemoje „Windows“ naudokite „Notepad++“) ir redaguokite protokolas.c file:
Pakeiskite tai:
// Vykdo vykdymo komandas, kai reikia. Ši funkcija pirmiausia veikia kaip Grbl būsena
// mašina ir valdo įvairias realiojo laiko funkcijas, kurias gali pasiūlyti Grbl.
// PASTABA: nekeiskite, nebent tiksliai žinote, ką darote! void protocol_exec_rt_system()
{
uint8_t rt_exec; // Temp kintamasis, kad būtų išvengta nepastovių skambučių kelis kartus.
rt_exec = sys_rt_exec_alarm; // Nukopijuokite nepastovų sys_rt_exec_alarm.
if (rt_exec) { // Įveskite tik tada, jei bet kuri bitų vėliavėlė yra teisinga
// Sistemos signalizacija. Viskas buvo išjungta dėl kažko, kas labai sugedo. Pranešimas
// klaidos šaltinis vartotojui. Jei kritinė, Grbl išjungia įvesdamas begalinį skaičių
// ciklo iki sistemos atstatymo / nutraukimo.
sys.state = STATE_ALARM; // Nustatykite sistemos aliarmo būseną
report_alarm_message(rt_exec);
Į tai:
// Vykdo vykdymo komandas, kai reikia. Ši funkcija pirmiausia veikia kaip Grbl būsena
// mašina ir valdo įvairias realiojo laiko funkcijas, kurias gali pasiūlyti Grbl.
// PASTABA: nekeiskite, nebent tiksliai žinote, ką darote!
void protocol_exec_rt_system()
{
uint8_t rt_exec; // Temp kintamasis, kad būtų išvengta nepastovių skambučių kelis kartus.
rt_exec = sys_rt_exec_alarm; // Nukopijuokite nepastovų sys_rt_exec_alarm.
////////////////////////
// Apibrėžkite ALARM LED IŠVESTĮ
signal_light_init; //init LED išjungtas
if (sys.state==STATE_ALARM) {signal_light_on;}
else if (sys.state!=STATE_ALARM) {signal_light_off;}
// kitaip {signal_light_off;}
////////////////////////
if (rt_exec) { // Įveskite tik tada, jei bet kuri bitų vėliavėlė yra teisinga
// Sistemos signalizacija. Viskas buvo išjungta dėl kažko, kas labai sugedo. Pranešimas
// klaidos šaltinis vartotojui. Jei kritinė, Grbl išjungia įvesdamas begalinį skaičių
// ciklo iki sistemos atstatymo / nutraukimo.
sys.state = STATE_ALARM; // Nustatykite sistemos aliarmo būseną
report_alarm_message(rt_exec);
Ką tik padarėme, tai pakeitėme apibrėžtą Analog 4 (A4) funkciją iš pasirenkamo aušinimo skysčio rūko į mūsų LED lemputę. Tada mes įrašėme kodą C, kad galėtume įrašyti (PC4) prievadą C 4 (Analog4) aukštą arba žemą, priklausomai nuo to, ar jis buvo įjungtas, ar išjungtas. Tada parašėme paprastą „jei-kita“ teiginį, kad patikrintume GRBL būsenos mašiną ir praneštume, ar esame aktyvioje ALARM_STATE būsenoje ir kada turime įjungti šviesos diodą.
Jei viskas klostysis gerai, galime sukompiliuoti Arduino IDE, įkelti kodą ir dabar turėsime veikiančią ALARM_STATE LED diagnostinę lemputę! Pasirinktinai galime prijungti išorinį LED švyturį, kad jis būtų pastatytas aukštai virš mašinos, kuris bus matomas visoje patalpoje.
Galimos problemos
Idealiu atveju šie pakeitimai bus atlikti naudojant naujausią turimą grbl šaltinio kodą ir padaryti PRIEŠ pridedant grbl „biblioteką“ prie Arduino IDE. Jei jau turite grbl savo Arduino bibliotekų aplanke, turėsite naršyti rankiniu būdu ir ištrinti grbl aplanką arba redaguoti files arduino bibliotekoje. Mano „Linux“ kompiuteryje „biblioteka“ yra adresu: /home/andrew/Arduino/libraries/grbl. Naujausią grbl leidimą galite rasti adresu https://github.com/gnea/grbl/releases. Galima atsisiųsti turimą ZIP failą file ir aplanką pavadinimu grbl-1.1h.20190825 galima rasti viduje. Šiame aplanke aplankas pavadinimu grbl bus tas, kurį norėsite įtraukti į „Arduino IDE“ kaip „biblioteką“ „zip“. file“. Būtinai pakeiskite cpu_map.h ir protocol.c files prieš pridėdami jį prie Arduino IDE. Priešingu atveju turėsite redaguoti files jūsų bibliotekos/grbl aplanke. Yra žinoma grbl-1.1h zip dvigubos ašies funkcijos klaida file, tai ištaisoma, jei vietoj to atsisiunčiate pagrindinę grbl šaką. https://github.com/gnea/grbl
CNDY Shield atnaujinimai ir klaidos
*V1.1: yra nedidelė šilkografijos klaida, kai sukeisti suklio PWM ir veleno kryptis. Tai buvo ištaisyta V1.2.
V1.2 nebėra pasirenkamų triukšmo mažinimo kondensatorių 5 V linijoje, o kitose įvesties mygtukų linijose yra naujų. V1.2 turi pasirenkamą šviesos diodą, prijungtą lygiagrečiai su Spindle PWM. Tai gali būti naudinga atliekant lazerinius nustatymus saugumo sumetimais.
Atnaujinta 28 m. rugpjūčio 2021 d
Papildomą informaciją galite rasti adresu RabbitMountainResearch.com.
Dokumentai / Ištekliai
![]() |
CNDY skydas GRBL CNC Arduino UNO [pdfVartotojo vadovas GRBL CNC, Arduino UNO |




