Uporabniški priročnik CNDY Shield GRBL CNC Arduino UNO
V1.2

Pinout GRBL na Arduino Uno
Analogno 0 = Gumb za prekinitev*
Analogno 1 = Gumb za zadrževanje vira* (SAFETY_DOOR je v skupni rabi z zadrževanjem dovoda. Omogočeno z definicijo konfiguracije)
Analogni 2 = Gumb za zagon/ponovni zagon cikla*
analogno 3 = Izhod za omogočanje hladilne tekočine
analogno 4 = (izbirno) Izhod hladilne tekočine megle (ali diagnostična lučka ALARM_STATE**)
Analogni 5 = vhod sonde*
Digitalni 13 = Smer vretena
Digital 12 = Končna stikala Z-os*
Digital 11 = vreteno/laser omogoči PWM
Digital 10 = končna stikala Y-Axis*
Digital 9 = končna stikala os X*
Digital 8 = Koračni motorji omogočeni/onemogočeni
Digital 7 = smer Z-os
Digital 6 = smer Y-Axis
Digital 5 = smer X-os
Digitalni 4 = stopenjska impulzna os Z
Digital 3 = Korak impulz Y-Axis
Digital 2 = Korak impulz X-os
Izbirna funkcija dvojne osi
Uno Analog Pin 3 = A-os DUAL_DIRECTION (nekoč je bil izhod za omogočanje hladilne tekočine)
Uno analogni zatič 4 = A-os DUAL_STEP (nekoč je bil izbirni izhod hladilne tekočine za meglo)
Uno Digital 13 = Hladilna tekočina (zamenjava smeri vretena.)
Ko namestite repozitorij grbl kot knjižnico v Arduinu, odkomentirajte naslednje vrstice v config.h file v mapi knjižnice grbl.
#define ENABLE_DUAL_AXIS // Privzeto onemogočeno. Če želite omogočiti, odstranite komentar.
// Izberite eno os za zrcaljenje drugega motorja. Trenutno sta podprti samo osi X in Y.
#define DUAL_AXIS_SELECT Y_AXIS // Mora biti X_AXIS ali Y_AXIS
OPOMBA: Omejitev dvojne osi je v skupni rabi z (os Z) privzeto omejitveni zatič.
Funkcija dvojne osi zahteva za delovanje neodvisen stopničasti impulzni zatič. Neodvisni zatič smeri ni nujno potreben, vendar omogoča enostavno obračanje smeri z nastavitvijo Grbl $$. Ti zatiči nadomestijo zatiče za smer vretena in izbirne zatiče za meglico hladilne tekočine.
Ta izbirna dvojna osna funkcija je predvsem namenjena ciklu premikanja, da neodvisno locira dve strani portala z dvojnim motorjem, tj. samokvadriranje. To zahteva dodatno končno stikalo za klonirani motor. Za samokvadranje morata biti obe končni stikali na klonirani osi fizično nameščeni, da se sprožita, ko je portal kvadraten. Zelo priporočamo, da so motorji vedno vključeni, da zagotovite, da portal ostane pravokoten z nastavitvijo $1=255.
Za Grbl na Arduino Uno mora biti končno stikalo klonirane osi v skupni rabi in ožičeno z mejnim zatičem osi z zaradi pomanjkanja razpoložljivih zatičev. Cikel premikanja mora namestiti os z in klonirano os v različnih ciklih, kar je že privzeta konfiguracija.
Funkcija dvojne osi deluje tako, da klonira izhod koraka osi na drug par zatičev koraka in smeri. Koračni impulz in smer kloniranega motorja je mogoče nastaviti neodvisno od motorja glavne osi. Vendar pa mora ta dvoosna funkcija prihraniti dragoceno flash in pomnilnik enake nastavitve (korak/mm, največja hitrost, pospešek) kot osnovni motor. To NI lastnost za neodvisno četrto os. Samo motorni klon.
OPOZORILO: Preizkusite smer vaših dvoosnih motorjev! Morajo biti nastavljeni tako, da se premikajo v isto smer PRED zagonom vašega prvega cikla samodejnega premikanja ali kakršnega koli dolgega gibanja! Motorji, ki se premikajo v nasprotnih smereh, lahko povzročijo resno škodo na vašem stroju! To funkcijo dvojne osi uporabite na lastno odgovornost.
OPOMBA: Ta funkcija zahteva približno 400 bajtov flash. Določenim konfiguracijam lahko zmanjka bliskavice, da se prilega Arduino 328p/Uno. Podprti sta samo osi X in Y. Spremenljivi vretenski/laserski način JE podprt, vendar samo za eno možnost konfiguracije. Jedro XY, zatič smeri vretena in hladilna tekočina M7 so onemogočeni/niso podprti.
Da bi preprečili, da bi cikel samodejnega premikanja premaknil dvojno os, ko se ena meja sproži pred drugo zaradi okvare stikala ali hrupa, se bo cikel samodejnega premikanja samodejno prekinil, če se končno stikalo drugega motorja ne sproži znotraj treh parametrov razdalje, opredeljenih spodaj. Odstotek dolžine osi bo samodejno izračunal razdaljo okvare kot odstotektage največjega pomika druge osi, ki ni dvojna, tj. če je izbira dvojne osi X_AXIS pri 5.0 %, bo razdalja napake izračunana kot 5.0 % največjega pomika osi y. Največja in najmanjša razdalja odpovedi sta meji, kako dolga ali majhna je veljavna razdalja okvare.
#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Plavajoče (odstotek)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Plavajoče (mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Plavajoče (mm)
Opomba za vrata I2C
Analogni 4 (A4) in Analogni 5 (A5) se uporabljajo za vrata I2C na Arduino Uno ali 328p. To pomeni, da dokler uporabljate privzeto funkcijo sonde, megleno hladilno tekočino, dvoosno diagnostično luč ali LED ALARM_STATE po meri, uporaba I2C ne bo mogoča. Komunikacija z drugim Arduinom za povečanje funkcionalnosti bo morala potekati prek serijske povezave na D0 in D1.
Kako začeti (gonilniki korakov)
Najprej, da povežete svoje koračne motorje z Grbl, boste potrebovali nekaj gonilnikov koračnih motorjev za napajanje koračnih motorjev in priključitev vhodov gonilnikov na zatiče krmilnika Arduino. To lahko storijo številni gonilniki, ki so na voljo kot v celoti vnaprej izdelani, delno vnaprej izdelani ali popolnoma DIY. Koračni gonilniki bodo morali deliti zatič za omogočanje koraka (D8) na njihove ustrezne zatiče za omogočanje, medtem ko je zatiči smernega in koraka impulza (D2-D7) bodo morali biti povezani z ustreznimi zatiči na gonilniku. Prepričajte se, da so vsi vaši gonilniki in Arduino delijo skupno točko (zvezda ozemljena z močjo vašega motorja). To je približno vse, kar potrebujete za začetek.
Preklopna in končna stikala
Potem, ko se odločite, da ste pripravljeni ali želite za omogočanje samodejnih in/ali trdih omejitev, boste morali povezati a normalno odprto končno stikalo na vsak od mejnih zatičev (D9, D10 in D12). Homing in hard limits uporabljata ista stikala. Ti omejevalni zatiči so že visoko pritrjeni z notranjim vlečnim uporom, zato jih morate samo povezati z ozemljitvijo. Torej, ko zaprete stikalo, bo stikalo potegnilo mejni zatič na maso. Če želite imeti trda končna stikala na obeh koncih vožnje osi, samo povežite dve končni stikali vzporedno z mejnim zatičem osi in ozemljitvijo. Prepričajte se, da imate nameščena stikala, preden poskusite izvesti cikel premikanja, in poskrbite, da boste izvajali dobre metode ožičenja, da zmanjšate zunanji električni šum na vhodnih nožicah.
Dobre prakse ožičenja lahko vključujejo uporabo zaščitenih kablov ali clamp-na feritnih kabelskih jedrih in z uporabo nekaj 0.1uF kondenzatorjev vzporedno s končnimi stikali za odbijanje / filtriranje hrupa. Morda je dobra ideja tudi, da žice motorja držite stran od žic končnega stikala.
GRBL je mogoče konfigurirati za uporabo normalno zaprtih končnih stikal, če tako želite. Nekateri menijo, da lahko normalno zaprta končna stikala pomagajo zmanjšati katastrofalno nesrečo v primeru okvare končnega stikala. Mnogi uporabniki sploh ne uporabljajo končnih stikal in se namesto tega odločijo za omejitve programske opreme.
V Grbl v0.8 in novejših so pin-outi ukazov za zagon cikla, zadrževanje podajanja in ponastavitev izvajalnega časa, tako da lahko imate fizične nadzorne gumbe na vaši napravi. Tako kot omejevalni zatiči so tudi ti zatiči visoko postavljeni z notranjim vlečnim uporom, zato je vse, kar morate storiti, povezati normalno odprto stikalo na vsak zatič in na ozemljitev. Ponovno se prepričajte, da vadite dobre metode ožičenja, da zmanjšate zunanji električni šum na vhodnih nožicah.
Vreteno in zatiči hladilne tekočine
Če imate željo ali potrebo po vretenu (D13) ali nadzor hladilne tekočine (A3 in A4) , Grbl bo te izhodne zatiče preklopil na visoko ali nizko, odvisno od ukazov G-kode, ki jih pošljete Grblu. Z v0.9+ in omogočenim variabilnim PWM vretenom bo pin D11 oddajal razpon glasnostitagje od 0V do 5V, odvisno od ukaza G-kode hitrosti vretena. 0V v tem primeru pomeni izklopljeno vreteno. Ker so vsi ti zatiči odvisni od načina njihove uporabe, vam bomo prepustili, da določite, kako jih nadzirati in uporabljati za vaš stroj. Prav tako lahko vdrete v vir krmiljenja vretena in hladilne tekočine files, da preprosto spremenite njihovo delovanje in nato prevedete in naložite svoj spremenjeni Grbl prek Arduino IDE.
Diagnostična LED luč
Komercialni CNC stroji imajo pogosto vsaj en diagnostični LED svetilnik v primeru strojne nesreče ali alarmne kode. Za tiste, ki so novi pri CNC strojih GRBL in DIY, je ta funkcija zelo uporabna, da vedo, kdaj je prišlo do ALARM_STATE (kot je napaka pri vzpostavljanju stroja z omogočenimi namigi in končnimi stikali).
GRBL privzeto nima diagnostične LED luči. To je zato, ker ima Ardunio UNO s čipom 328p omejen prostor za programiranje in skoraj ves ta prostor se trenutno uporablja (čeprav ne ves!). Vsake zaželene funkcije ni mogoče implementirati na tako nizko pomnilniško napravo, zato je včasih treba žrtvovati.
Poleg tega se trenutno uporabljajo vsa razpoložljiva V/I vrata in za takšno luč je potreben vsaj en I/O pin. Na srečo je to funkcionalnost mogoče enostavno dodati z vdorom v kodo GRBL C in na čipu 3p je še vedno na voljo približno 328 % pomnilnika!
Številni stroji trenutno ne uporabljajo izbirne funkcije MIST COOLANT na Analog 4, zato lahko ta zatič enostavno ponovno definiramo za našo uporabo. Nadomestna metoda bi lahko bila kodiranje takšnih LED luči na zunanjem Arduinu, ki bi imel nato na voljo vsa V/I vrata, kamor bi lahko priključili toliko LED luči / brenčal, kolikor bi želeli, in bi lahko komunicirali prek serijskega ali I2C.
Če želite vdreti izvorno kodo GRBL za uporabo LED ALARM na CNDY Shield, naredite naslednje:
1. korak: V Linuxu ali Macintoshu odprite urejevalnik besedil (v sistemu Windows uporabite Notepad++) in uredite cpu_map.h file:
Spremeni to:
// Definiraj izhodne zatiče za omogočanje poplave in megle hladilne tekočine.
#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
Na to:
// Definiraj izhodne zatiče za omogočanje poplave in megle hladilne tekočine.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
//#define COOLANT_MIST_DDR DDRC
//#definiraj COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Uno Analog Pin 4
///////////////////
// Definiraj IZHOD LED ALARM
#define SIGNAL_LIGHT_DDR DDRC
#define SIGNAL_LIGHT_PORT PORTC
#define SIGNAL_LIGHT_BIT 4 // Uno analogni 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. korak: V Linuxu ali Macintoshu odprite urejevalnik besedil (v sistemu Windows uporabite Notepad++) in uredite protokol.c file:
Spremeni to:
// Po potrebi izvaja ukaze med izvajanjem. Ta funkcija deluje predvsem kot Grblovo stanje
// stroj in nadzoruje različne funkcije v realnem času, ki jih ponuja Grbl.
// OPOMBA: Tega ne spreminjajte, razen če natančno veste, kaj počnete! void protocol_exec_rt_system()
{
uint8_t rt_exec; // Spremenljivka Temp, da se izognemo večkratnemu klicanju volatile.
rt_exec = sys_rt_exec_alarm; // Kopiraj volatile sys_rt_exec_alarm.
if (rt_exec) { // Vnesite samo, če je katera koli bitna zastavica resnična
// Sistemski alarm. Vse se je ustavilo zaradi nečesa, kar je šlo hudo narobe. Poročilo
// vir napake za uporabnika. Če je kritičen, Grbl onemogoči z vnosom neskončnega
// zanka do ponastavitve/prekinitve sistema.
sys.state = STATE_ALARM; // Nastavi stanje alarma sistema
poročilo_alarm_message(rt_exec);
Na to:
// Po potrebi izvaja ukaze med izvajanjem. Ta funkcija deluje predvsem kot Grblovo stanje
// stroj in nadzoruje različne funkcije v realnem času, ki jih ponuja Grbl.
// OPOMBA: Tega ne spreminjajte, razen če natančno veste, kaj počnete!
void protocol_exec_rt_system()
{
uint8_t rt_exec; // Spremenljivka Temp, da se izognemo večkratnemu klicanju volatile.
rt_exec = sys_rt_exec_alarm; // Kopiraj volatile sys_rt_exec_alarm.
////////////////////////
// Definiraj IZHOD LED ALARM
signal_light_init; //init LED v izklopljenem stanju
če (sys.state==STATE_ALARM) {signal_light_on;}
sicer če (sys.state!=STATE_ALARM) {signal_light_off;}
// drugače {signal_light_off;}
////////////////////////
if (rt_exec) { // Vnesite samo, če je katera koli bitna zastavica resnična
// Sistemski alarm. Vse se je ustavilo zaradi nečesa, kar je šlo hudo narobe. Poročilo
// vir napake za uporabnika. Če je kritičen, Grbl onemogoči z vnosom neskončnega
// zanka do ponastavitve/prekinitve sistema.
sys.state = STATE_ALARM; // Nastavi stanje alarma sistema
poročilo_alarm_message(rt_exec);
Pravkar smo spremenili definirano funkcijo Analog 4 (A4) iz izbirne hladilne tekočine za meglo v našo LED lučko. Nato smo napisali kodo v C, da bi lahko zapisali (PC4) Vrata C 4 (Analog4) visoko ali nizko, odvisno od tega, ali je bilo rečeno, da je vklopljen ali izklopljen. Nato smo napisali preprost stavek if-else, da preverimo državni stroj GRBL in nam povemo, ali smo v aktivnem ALARM_STATE in kdaj naj vklopimo LED.
Če bo vse v redu, lahko nato prevedemo v Arduino IDE, naložimo kodo in zdaj bomo imeli delujočo LED diagnostično lučko ALARM_STATE! Po želji lahko priključimo zunanjo LED svetilko, ki jo postavimo visoko nad stroj, ki bo viden čez sobo.
Možne težave
V idealnem primeru bodo te spremembe izvedene z najnovejšo izvorno kodo grbl, ki je na voljo, in izvedene PRED dodajanjem grbl "knjižnice" v Arduino IDE. Če že imate grbl v mapi knjižnic Arduino, boste morali ročno brskati in izbrisati mapo grbl ali urediti files v knjižnici arduino. Na mojem računalniku Linux je "knjižnica" na: /home/andrew/Arduino/libraries/grbl. Najnovejšo izdajo grbl lahko najdete na https://github.com/gnea/grbl/releases. Lahko prenesete razpoložljivo zip file in mapo z imenom grbl-1.1h.20190825 lahko najdete v njej. Znotraj te mape bo mapa z imenom grbl tista, ki jo boste želeli dodati v Arduino IDE kot "knjižnico" "zip file”. Ne pozabite spremeniti datotek cpu_map.h in protocol.c files, preden ga dodate v Arduino IDE. V nasprotnem primeru boste morali urediti files v mapi knjižnice/grbl. Obstaja znana napaka za funkcijo dvojne osi v grbl-1.1h zip file, je popravljeno, če namesto tega prenesete glavno vejo grbl. https://github.com/gnea/grbl
Posodobitve in napake CNDY Shield
*V1.1: ima majhno napako sitotiska, kjer se zamenjata PWM vretena in smer vretena. To je bilo popravljeno v V1.2.
V1.2 nima več izbirnih kondenzatorjev za zmanjšanje hrupa na 5v liniji in ima nove na drugih linijah vhodnih gumbov. V1.2 ima izbirno LED, ožičeno vzporedno z vretenom PWM. To je lahko koristno za laserske nastavitve zaradi varnosti.
Posodobljeno 28. avgusta 2021
Dodatne informacije najdete na RabbitMountainResearch.com.
Dokumenti / Viri
![]() |
CNDY Shield GRBL CNC Arduino UNO [pdf] Uporabniški priročnik GRBL CNC, Arduino UNO |




