Ghid de utilizare CNDY Shield GRBL CNC Arduino UNO

V1.2

CNDY Shield GRBL CNC

Pinout GRBL pe Arduino Uno

Analog 0 = Buton Anulare*
Analog 1 = Buton de menținere a alimentării* (SAFETY_DOOR este partajat cu reținerea alimentării. Activat de definirea config.)
Analog 2 = Buton de pornire/repornire ciclu*
Analogic 3 = Ieșire de activare a lichidului de răcire
Analogic 4 = (Opțional) Ieșire lichid de răcire în ceață (sau lumină de diagnosticare ALARM_STATE**)
Analog 5 = intrare sondă*
Digital 13 = Direcția axului
Digital 12 = întrerupătoare de limită axa Z*
Digital 11 = Activare ax/Laser PWM
Digital 10 = comutatoare de limitare axa Y*
Digital 9 = întrerupătoare de limită axa X*
Digital 8 = Activare/Dezactivare motoare pas cu pas
Digital 7 = Direcția Axa Z
Digital 6 = Direcția Axa Y
Digital 5 = Direcția axa X
Digital 4 = Step Pulse Axa Z
Digital 3 = Step Pulse Axa Y
Digital 2 = Step Pulse Axa X

Funcție opțională cu două axe

Pin analogic Uno 3 = DUAL_DIRECTION axa A (obișnuit a fi ieșirea de activare a lichidului de răcire)
Pin analogic Uno 4 = axa A DUAL_STEP (obișnuit era ieșire opțională pentru lichid de răcire pentru ceață)
Uno Digital 13 = lichid de răcire (înlocuirea direcției axului.)

După instalarea depozitului grbl ca bibliotecă în Arduino, decomentați următoarele rânduri în config.h file în folderul bibliotecă grbl.

#define ENABLE_DUAL_AXIS // Implicit dezactivat. Anulați comentariile pentru a activa.

// Selectați o axă pentru a oglindi un alt motor. Numai axa X și Y sunt acceptate în acest moment.
#define DUAL_AXIS_SELECT Y_AXIS // Trebuie să fie X_AXIS sau Y_AXIS

NOTĂ: Limita cu două axe este partajată cu (Axa Z) limită pin în mod implicit.

Caracteristica cu axă dublă necesită un pin de impuls independent pentru a funcționa. Pinul de direcție independent nu este absolut necesar, dar facilitează inversarea direcției cu o setare Grbl $$. Acești știfturi înlocuiesc direcția axului și știfturile opționale pentru ceață de lichid de răcire.

Această caracteristică opțională cu două axe este în primul rând pentru ciclul de orientare pentru a localiza două laturi ale unui portal cu motor dublu în mod independent, adică auto-pătratarea. Acest lucru necesită un comutator de limită suplimentar pentru motorul clonat. Pentru a se pătra, ambele întrerupătoare de limită de pe axa clonada trebuie să fie poziționate fizic pentru a se declanșa atunci când portalul este pătrat. Recomand cu căldură să păstrați motoarele întotdeauna activate pentru a vă asigura că portalul rămâne drept cu setarea $1=255.

Pentru Grbl de pe Arduino Uno, comutatorul de limită a axei clonate trebuie să fie partajat și conectat cu pinul de limită a axei z din cauza lipsei de pini disponibili. Ciclul de orientare trebuie să găzduiască axa z și axa clonată în cicluri diferite, care este deja configurația implicită.

Caracteristica cu axă dublă funcționează prin clonarea unei ieșiri cu pas de axă pe o altă pereche de pini de pas și direcție. Impulsul pas și direcția motorului clonat pot fi setate independent de motorul axei principale. Cu toate acestea, pentru a economisi bliț și memorie prețioasă, această caracteristică cu două axe trebuie să partajeze aceleași setări (pas/mm, viteză maximă, accelerație) ca și motorul părinte. Aceasta NU este o caracteristică pentru o a patra axă independentă. Doar o clonă de motor.

AVERTISMENT: Asigurați-vă că testați direcțiile motoarelor dumneavoastră cu două axe! Ele trebuie să fie configurate să se miște în aceeași direcție ÎNAINTE de a rula primul ciclu de orientare sau orice mișcare lungă! Motoarele care se deplasează în direcții opuse pot provoca daune grave mașinii dumneavoastră! Utilizați această funcție cu două axe pe propriul risc.

NOTĂ: Această caracteristică necesită aproximativ 400 de octeți de flash. Anumite configurații pot rămâne fără flash pentru a se potrivi pe un Arduino 328p/Uno. Sunt acceptate doar axele X și Y. Este acceptat modul ax/laser variabil, dar numai pentru o singură opțiune de configurare. Miezul XY, pinul de direcție a axului și lichidul de răcire M7 sunt dezactivate/nu sunt acceptate.

Pentru a preveni ca ciclul de orientare să declanșeze axa dublă, atunci când o limită se declanșează înaintea celeilalte din cauza defecțiunii comutatorului sau a zgomotului, ciclul de orientare se va întrerupe automat dacă comutatorul de limită al celui de-al doilea motor nu se declanșează în cei trei parametri de distanță definiți mai jos. Procentul de lungime a axei va calcula automat o distanță de eșec ca procenttage din cursa maximă a celeilalte axe non-duale, adică dacă selectarea axei duale este X_AXIS la 5.0%, atunci distanța de eșec va fi calculată ca 5.0% din deplasarea maximă a axei y. Distanța de eșec max și min sunt limitele cât de departe sau mică este o distanță de eșec validă.

#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 // Float (procent)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 // Float (mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 // Plutitor (mm)

Notă pentru portul I2C

Analog 4 (A4) și Analog 5 (A5) sunt folosite pentru portul I2C pe Arduino Uno sau 328p. Aceasta înseamnă că, atâta timp cât utilizați funcția implicită de sondă, lichidul de răcire de ceață, cu două axe sau lumina de diagnosticare LED ALARM_STATE personalizată, utilizarea I2C nu va fi posibilă. Comunicarea cu un alt Arduino pentru a crește funcționalitatea va trebui să fie prin conexiunea serială pe D0 și D1.

Noțiuni introductive (Drifere Stepper)

În primul rând, pentru a vă conecta motoarele pas cu pas la Grbl, veți avea nevoie de câteva drivere pentru motoare pas cu pas pentru a alimenta pasii și pentru a conecta intrările driverului la pinii controlerului Arduino. Există o serie de drivere care pot face acest lucru, disponibile ca fiind complet pre-construit, parțial pre-construit sau complet DIY. Driverele stepper vor trebui să partajeze pin de activare pas cu pas (D8) la pinii de activare respectivi, în timp ce pini de impuls de direcție și pas (D2-D7) va trebui să fie conectat la pinii respectivi de pe drivere. Doar asigurați-vă că toate driverele dvs. și Arduino împărtășesc un teren comun (stea împământată cu puterea driverului motorului). Acesta este cam tot ceea ce aveți nevoie pentru a începe.

Homing și întrerupătoare de limită

După aceea, odată ce ați decis că sunteți gata sau doriți pentru a permite homing-ul și/sau limitele dure, va trebui să conectați un întrerupător de limită normal deschis la fiecare dintre pinii limită (D9, D10 și D12). Limitele homing și hard utilizează aceleași comutatoare. Acești pini de limită sunt deja ținuți sus cu un rezistor intern de tragere, așa că tot ce trebuie să faceți este să-i conectați la masă. Deci, atunci când închideți un comutator, comutatorul va trage pinul limită la masă. Dacă doriți să aveți întrerupătoare de limită dure la ambele capete ale cursei unei axe, conectați doar două întrerupătoare de limită în paralel cu pinul de limită a axei și la masă. Asigurați-vă că aveți întrerupătoarele instalate înainte de a încerca să efectuați un ciclu de orientare și asigurați-vă că practicați metode bune de cablare pentru a minimiza zgomotul electric extern de pe pinii de intrare.

Bunele practici de cablare pot include utilizarea cablurilor ecranate sau clamp-pe miezuri de cablu de ferită, și folosind niște condensatori de 0.1uF în paralel cu întrerupătoarele de limită pentru debouncing / filtrarea zgomotului. Menținerea cablurilor motorului departe de firele comutatorului de limită poate fi, de asemenea, o idee bună.

Este posibil să configurați GRBL să utilizeze întrerupătoare de limită normal închise, dacă doriți. Unii consideră că întrerupătoarele de limită normal închise pot ajuta la reducerea unui accident catastrofal în cazul unei defecțiuni a comutatorului de limită. Mulți utilizatori omit deloc utilizarea oricăror comutatoare de limită și, în schimb, optează pentru limite software.

Butoane de control

În Grbl v0.8 și versiuni ulterioare, există pin-out-uri ale comenzilor de pornire a ciclului, menținerea alimentării și resetarea timpului de rulare, astfel încât să puteți avea butoane de control fizic pe mașina dvs. La fel ca pinii de limită, acești pini sunt ținuți în sus cu un rezistor intern de tragere, așa că tot ce trebuie să faceți este să conectați un comutator normal deschis la fiecare pin și la masă. Din nou, asigurați-vă că practicați metode bune de cablare pentru a minimiza zgomotul electric extern de pe pinii de intrare.

Axul și știfturile lichidului de răcire

Dacă aveți o dorință sau nevoie de fus (D13) sau controlul lichidului de răcire (A3 și A4) , Grbl va comuta acești pini de ieșire în sus sau în jos, în funcție de comenzile G-code pe care le trimiteți către Grbl. Cu v0.9+ și PWM cu ax variabil activat, pinul D11 va scoate o gamă de vol.tageste de la 0V la 5V în funcție de comanda codului G de viteza axului. 0V indică axul oprit în acest caz. Deoarece acești pini depind de aplicație în ceea ce privește modul în care sunt utilizați, vă vom lăsa pe dvs. să determinați cum să le controlați și să le utilizați pentru mașina dvs. De asemenea, puteți pirata axul și sursa de control al lichidului de răcire files pentru a modifica cu ușurință modul în care funcționează și apoi să compilați și să încărcați Grbl-ul dvs. modificat prin IDE-ul Arduino.

Lumină LED de diagnosticare

Mașinile CNC comerciale au adesea cel puțin o baliză LED de diagnosticare în cazul unui accident de mașină sau al unui cod de alarmă. Pentru cei începători cu mașinile CNC GRBL și DIY, această caracteristică este foarte utilă pentru a ști când a avut loc o ALARM_STATE (cum ar fi eșecul la așezare a mașinii cu homing-ul și comutatoarele de limită activate).

GRBL în mod implicit nu are o lumină LED de diagnosticare. Acest lucru se datorează faptului că Ardunio UNO cu cip 328p are spațiu de programare limitat și aproape tot spațiul este utilizat în prezent (deși nu tot!). Nu orice caracteristică dorită poate fi implementată pe un dispozitiv cu memorie atât de redusă, așa că uneori trebuie făcute sacrificii.

În plus, toate porturile I/O disponibile sunt utilizate în prezent și este necesar cel puțin un pin I/O pentru o astfel de lumină. Din fericire, această funcționalitate poate fi adăugată cu ușurință prin piratarea codului GRBL C și mai există aproximativ 3% memorie disponibilă pe cipul 328p!

Multe aparate nu folosesc în prezent funcția opțională MIST COOLANT pe Analog 4, așa că putem redefini cu ușurință acest pin pentru uzul nostru. O metodă alternativă ar putea fi codificarea unor astfel de lumini LED pe un Arduino extern, care ar avea apoi toate porturile I/O disponibile, unde s-ar putea conecta cât mai multe lumini LED / Buzzere și ar putea comunica prin Serial sau I2C.

Pentru a pirata codul sursă GRBL pentru a utiliza LED-ul ALARM de pe scutul CNDY, vă rugăm să faceți următoarele:

Pasul 1: Pe Linux sau Macintosh, deschideți un editor de text (pe Windows utilizați Notepad++) și editați cpu_map.h file:

Schimba asta:

// Definiți pinii de ieșire pentru activarea lichidului de răcire de inundație și ceață.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Pin 3 analogic
#define COOLANT_MIST_DDR DDRC
#define COOLANT_MIST_PORT PORTC
#define COOLANT_MIST_BIT 4 // Uno Pin analogic 4

La aceasta:

// Definiți pinii de ieșire pentru activarea lichidului de răcire de inundație și ceață.
#define COOLANT_FLOOD_DDR DDRC
#define COOLANT_FLOOD_PORT PORTC
#define COOLANT_FLOOD_BIT 3 // Uno Pin 3 analogic
//#definiți COOLANT_MIST_DDR DDRC
//#definiți COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Uno Pin 4 analogic

///////////////////

// Definiți IEȘIRE LED ALARMĂ
#define SIGNAL_LIGHT_DDR DDRC
#define SIGNAL_LIGHT_PORT PORTC
#define SIGNAL_LIGHT_BIT 4 // Uno Pin 4 analogic

// #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<

///////////////////

Pasul 2: Pe Linux sau Macintosh, deschideți un editor de text (pe Windows utilizați Notepad++) și editați protocol.c file:

Schimba asta:

// Execută comenzi de rulare, când este necesar. Această funcție funcționează în primul rând ca stare Grbl
// automatizează și controlează diferitele funcții în timp real pe care le oferă Grbl.
// NOTĂ: Nu modificați acest lucru decât dacă știți exact ce faceți! void protocol_exec_rt_system()
{

uint8_t rt_exec; // Variabilă temp pentru a evita apelarea volatilă de mai multe ori.
rt_exec = sys_rt_exec_alarm; // Copiați volatilul sys_rt_exec_alarm.
if (rt_exec) { // Introduceți numai dacă orice indicator de biți este adevărat

// Alarmă de sistem. Totul a fost oprit de ceva care a mers grav greșit. Raport
// sursa erorii către utilizator. Dacă este critic, Grbl se dezactivează introducând un infinit
// buclă până la resetarea/abandonarea sistemului.

sys.state = STATE_ALARM; // Setați starea alarmei sistemului

raport_mesaj_alarma(rt_exec);

La aceasta:

// Execută comenzi de rulare, când este necesar. Această funcție funcționează în primul rând ca stare Grbl
// automatizează și controlează diferitele funcții în timp real pe care le oferă Grbl.
// NOTĂ: Nu modificați acest lucru decât dacă știți exact ce faceți!
void protocol_exec_rt_system()
{

uint8_t rt_exec; // Variabilă temp pentru a evita apelarea volatilă de mai multe ori.
rt_exec = sys_rt_exec_alarm; // Copiați volatilul sys_rt_exec_alarm.

////////////////////////

// Definiți IEȘIRE LED ALARMĂ
signal_light_init; //LED-ul de pornire este oprit
dacă (sys.state==STATE_ALARM) {signal_light_on;}
else if (sys.state!=STATE_ALARM) {signal_light_off;}
// altfel {signal_light_off;}

////////////////////////

if (rt_exec) { // Introduceți numai dacă orice indicator de biți este adevărat
// Alarmă de sistem. Totul a fost oprit de ceva care a mers grav greșit. Raport
// sursa erorii către utilizator. Dacă este critic, Grbl se dezactivează introducând un infinit
// buclă până la resetarea/abandonarea sistemului.
sys.state = STATE_ALARM; // Setați starea alarmei sistemului
raport_mesaj_alarma(rt_exec);

Ceea ce tocmai am făcut a fost să schimbăm funcția definită a Analog 4 (A4) de la a fi lichidul de răcire opțional cu ceață la a fi lumina noastră LED. Apoi am scris cod în C pentru a putea scrie (PC4) Port C 4 (Analog4) înalt sau scăzut, în funcție de faptul că i s-a spus să fie pornit sau oprit. Apoi am scris o instrucțiune simplă if-else pentru a verifica mașina de stare GRBL și a ne spune dacă ne aflăm într-un ALARM_STATE activ și când trebuie să pornim LED-ul.

Dacă totul merge bine, atunci putem compila în Arduino IDE, încărcăm codul și acum vom avea o lumină de diagnosticare LED ALARM_STATE funcțională! Opțional, putem conecta o lumină fară LED externă pentru a o poziționa deasupra mașinii, care va fi vizibilă în toată camera.

Probleme posibile

În mod ideal, aceste modificări vor fi făcute cu cel mai recent cod sursă grbl disponibil și să fie făcute ÎNAINTE de adăugarea „bibliotecii” grbl la IDE-ul Arduino. Dacă aveți deja grbl în folderul biblioteci Arduino, va trebui să răsfoiți manual și să ștergeți folderul grbl sau să editați files în biblioteca arduino. Pe mașina mea Linux, „biblioteca” se găsește la: /home/andrew/Arduino/libraries/grbl. Cea mai recentă versiune grbl poate fi găsită la https://github.com/gnea/grbl/releases. Se poate descărca zip-ul disponibil file iar în interior se găsește un folder numit grbl-1.1h.20190825. În interiorul acestui folder, un folder numit grbl va fi cel pe care veți dori să-l adăugați la Arduino IDE ca „bibliotecă” „zip”. file”. Asigurați-vă că faceți modificări la cpu_map.h și protocol.c files înainte de a-l adăuga la Arduino IDE. În caz contrar, va trebui să editați files în bibliotecile dumneavoastră/dosarul grbl. Există o eroare cunoscută pentru caracteristica cu două axe în grbl-1.1h zip file, este remediat dacă în schimb descărcați ramura grbl principală. https://github.com/gnea/grbl

Actualizări și erori CNDY Shield

*V1.1: are o mică eroare de serigrafie în care PWM axului și direcția axului sunt schimbate. Acest lucru a fost corectat în V1.2.

V1.2 nu mai are condensatoarele opționale de reducere a zgomotului pe linia de 5v și are altele noi pe celelalte linii de buton de intrare. V1.2 are un LED opțional conectat în paralel cu Spindle PWM. Acest lucru poate fi util pentru setările cu laser pentru siguranță.

Actualizat 28-aug-2021

Informații suplimentare pot fi găsite la RabbitMountainResearch.com.

Documente/Resurse

CNDY Shield GRBL CNC Arduino UNO [pdfGhid de utilizare
GRBL CNC, Arduino UNO

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *