Stadiul actual în domeniul prelucrării CNC [309941]

[anonimizat] a deplasărilor. Mașinile-unelte cu control numeric sunt dotate cu o memorie care permite păstrarea programului.

Controlul numeric se referă în general la automatizarea proceselor mașinilor unelte prin programarea unor seturi de comenzi care vor fi înregistrate (Codul-G), respectiv programate pe un dispozitiv extern. Conform acestei definiții se poate considera că prima mașină cu comandă numerică este mașina de țesut concepută de Jacquard (1800) care utiliza o bandă perforată pentru stocarea respectiv execuția unui set de instrucțiuni diferit. [anonimizat].

CNC (Computer Numerical Control) poate fi de mai multe tipuri și are diverse performanțe de care este capabilă mașina.

[anonimizat] a [anonimizat].

Mașinile de tip CNC sunt programate cu ajutorul codurilor G și M, [anonimizat]-ul acestuia.

Importanța mașinilor CNC este:

[anonimizat];

Nu trebuie folosite scule speciale și complicate pentru efectuarea pieselor complexe;

Au memorie internă pentru ușurarea executării pieselor;

[anonimizat];

Se pot realiza aproape orice tip de piese la precizii foarte bune;

[anonimizat] (lemn, aluminiu, plastic, …) și totodata studiul mișcării a celor trei axe.

[anonimizat] a mișcărilor efectuate de operator cu ajutorul unei interfațe construite. Proiectul are două mari părți: partea automată comandată de către un controller dedicat cu un PIC18F4550 și partea manuală concepută din Arduino programat de către operator.

Pe partea manuală discutăm de mișcarea axelor cu ajutorul a [anonimizat] 3D a mașinii.

În tematica proiectului trebuie să discutăm ca și cercetare precizia mașinii construite cu ajutorul aparatelor de măsurare folosite la construire mașinii CNC.

[anonimizat], dar poate fi folosit și la frezări complexe 3D.

Structura lucrării

În capitolul numărul doi cu numele ”Proiectarea sistemului” [anonimizat] a [anonimizat], pentru a avea o mișcare liniară a celor trei axe a mașinii. Tot aici este vorba despre arhitectura propusă unde regăsim schema bloc și schema mecanică a proiectului și explicații despre rolul componentelor din sistem. [anonimizat].

În capitolul numărul trei cu numele ”Implementarea sistemului” găsim componentele sistemului, cu scheme de conexiune fizice, folosirea elementelor care interpretează mișcarea axelor, funcționalitatea și structura acestora. Se discută de comanda motoarelor pas cu pas, de măsurarea mișcărilor liniare a axelor și utilizarea LCD-urilor pentru afișarea rezultatelor masurate. Comanda cu joystickurile face parte tot din acest capitol.

În capitolul numărul patru cu numele ”Implementarea software” este prezentată diagrama de activitate a sistemului comandat, prin schemă principală a mașini și dezvoltarea acestui scheme pe parți mai mici, discutând fiecare parte separată. Găsim documentația despre comunicarea mașinii cu interpretorul, inițializări, biblioteci, întreruperi, exemple de cod și prezentarea modului automat a mașinii CNC cu ajutorul picului dedicat și a programului dedicat acestui pic.

În capitolul numărul cinci cu numele ”Rezultate experimentale” sunt reprezentate măsurătorile efectuate in cele două moduri (automat, manual), cu ajutorul senzorilor de distanță de tip ultrasonic și encoderului prin mai multe metode, și reprezentarea avansului mașinii.

Proiectarea sistemului

Specificatii funcționale

Pentru tema proiectului de licență am ales coordonarea celor trei axe. Pe baza acestei teme am ajuns la concluzia să îmi construiesc o mașina CNC pe trei axe, mai precis o mașină de frezare a pieselor din materiale moi cu comandă numerică.

Mașina construită, fiind o freză cu comandă numerică este capabilă de executarea pieselor din materiale moi, cum ar fi lemn, aluminiu, plastic, poliamide, dar și pentru gravarea anumitor piese cum ar fii plăcile electronice folosite în aparatele electrice.

Constuirea mașinii pentru proiectarea licenței respectă următorii pași în proiectarea planurilor pentru a putea fi executate piesele din care s-a construit mașina. Toate planurile au fost făcute în Inventor și asamblat pentru a putea fi vizualizat grafic pe calculator ansamblul proiectului. Piesele mecanice a mașinii s-a fabricat pe o mașină CNC din aluminiu, iar ghidajele și șuruburile au fost achiaziționate din magazine. Mașina are o structură de aluminiu cu ghidaje liniare pe bile și pe rulmenți liniari, iar mișcarea mașini este executat cu ajutorul șuruburilor pe bile și trapezoidale.

Pe parte de electronică s-a folosit două microcontrolere care dirijează mașina, motoare pas cu pas pentru mișcarea axelor, și joystickuri pentru mișcări manuale, potențiometre pentru reglarea vitezei și a preciziei, afișaje pentru vizualizare mișcări.

S-a folosit un controler cu un pic dedicată care recunoaște codurile-G, codurile folosite în programarea CNC-urilor, sunt pentru utilizarea automată a mașinii. Se folosește pentru mișcări și teste în domeniul de automatizare a mașiniilor CNC. Contribuția mea cu acest PIC este o parte mică, dar totuși s-au efectuat multe reglaje până la o mișcare corectă și precisă a mașinii. Un alt controler folosit este un ArduinoMega folosit pe partea manuală. Pe această parte, controlerul,fost folosit pentru mișcarea axelor cu ajutorul joystickurilor, și prin intermediul de programare software și hardware al Arduino-ului s-a executat măsurătoriile parametrilor și s-a realizat rezultate privind măsurătoarea poziției, al accelerației și a vitezei.
Principul de bază a proiectului este studierea mișcării axelor, acesta însemnând măsurarea și cercetarea mișcării totale a mașinii, precizia mișcării și reglarea vitezei de mișcare a mașini. Pentru verificarea preciziei mașinii, s-au folosit senzori și traductoare incrementali de rotație după care s-a ajuns la o concluzie finală despre precizia mișcării, despre greutatea de a construi și a programa o mașină CNC.

Mașina în final este o mașină cu o precizie de cinci sutimi. Acest lucru este dat de partea mecanică bine gândită. Construirea mașinii s-a efectuat din aluminiu de tip 7005 cu gidaje liniare precise și șuruburi trapezoidale și pe bile cu precizie de sub două sutimi. Mașina are ca și suprafață de prelucrare pe axa X 500 pe axa Y 700 și pe axa Z 150 de milimetrii, iar gabaritul mașinii este de 1000x700x500 mm.

Mașina este mișcată cu ajutorul motoarelor pas cu pas nema23 și 24 , iar controlat prin drivere separate de tip TB6600 și două controlere , unul dedicat pentru G coduri și un Arduino.

Pentru controlarea și mișcarea axelor s-au folosit joystickuri și interfață programelor, iar pentru măsurarea preciziei s-a folosit traductoare incrementali de rotație și senzori, la care rezultatele se pot observa pe afișajele legate la mașină.

Arhitectura propusă

Schemă bloc

În figura2.1 este reprezentată schema bloc a sistemului propriu de mișcare a celor trei axe în modul manual și automat. În schema este evidențiată cele 2 controlere, cel dedicat și Arduino-ul La aceste controlere sunt legate cele trei drivere împreună cu motoarele pas cu pas pentru fiecare axă. Totodată se poate vedea cele trei traductoare incrementali de rotație, cele trei senzori ultrasonice și potențiometrele folosite pentru reglarea vitezei și a pasului. Arduino-ul și joystick-urile sunt într-o relație sistematică pentru mișcarea axelor, și afișajele pe care se pot vizualiza rezultatele obținute prin experiment dar și viteza și pasul motoarelor.

Schema mecanică

În figura de mai jos este reprezentată schema mecanică a sistemului, reprezintă schema mecanică a unei mașinii CNC pe 3 axe.

Figura reprezintă mișcarea celor trei axe (X, Y, Z) , mișcarea in stânga și în dreapta față de poziția actuală , componentele electronice, cum ar fi motoarele pas cu pas atașată pe fiecare axă și motorul de frezare atașată pe axa Z.

Componentele folosite în sistem

Părțile componente ale mașinii pot fi împărțite în trei module care alcătuiesc sistemul de mișcare a celor trei axe:

componente mecanice

componente electronice hardware

componente software (interfața programelor cu care lucrează sistemul)

Componentele mecanice:

-plăcile de aluminiu executate pe o mașina CNC

-ghidajele lineare și ghidajele executate din bare calibrate

-suporturile motoarelor

-șuruburilor trapezoidale și bile care mișcă mașina în cele trei direcții

-suportul motorului de frezare

-suportul ghidajelor lineare, profilele care leagă parțile componente a axei ”Y”.

Componentele hardware a sistemului sunt următoarele:

-controler pentru coordonarea driverelor

-drivere pentru controlul motoarelor pas cu pas

-motoare pas cu pas

-senzori de distanță

-senzor numărător de pulsuri

-joystick

-potmetru

-intrerupătoare

-sursă de alimentare

Componentele software a sistemului sunt:

-Arduino IDE

-USB CNC Controller

Resurse necesare

Hardware

La partea de hardware putem discuta de componente care face relația între operator și mașina însuși. Majoritatea mașiniilor CNC sunt controlate de controlere dedicate cu microprocesoare, unele având mai multe controlere, cum ar fi controlerul pentru partea manuală separată față de ca comandată prin coduri G, și unele având chiar separat pentru fiecare axă, acestea fiind legate la un procesor principal care reglează toate acele mișcări care execută mașina. Cele mai cunoscute firme de controlere sunt Siemens-ul, Samsung-ul, Fanuc-ul, Haas-ul etc.

Sistem de control al mașinii

Control manual

Eu am decis să aleg două controlere: un controler este dedicat pentru masurătorile efectuate, mișcări ale axelor independenter, reglajul mișcărilor(viteză, acelerare, precizie), acest controler este un Arduino Mega 2560 , deoarece pentru acest proiect era necesar un numar mare de pinuri (Input, Output și Analog). Arduino Mega2560 este un controller bazat pe un microcontroller cu o tensiune de alimentare intre 7 si 12 volti cu o tensiune de lucru de 5volti. Placa de dezvoltare are 54 de pini digital care se pot folosi ca pini de intrare și de ieșire, și din aceste 54 de pini 14 sunt pini de PWM de ieșire și 16 pini analogice. Curentul de ieșire este 40 miliamperi, are o memorie de 256 de kbyte și un clocke de 16 Mhz.

Control automat

Pe partea de control automat am ales un controler dedicat , care folosește un PIC18F4550, deoarece acesta este capabil să realizeze controlul celor trei axe deodată, dar totodată având dotări asemănătoare față de mașinile mari din industrie. Unitatea de control are următoarele caracteristici:

• controlat de microcontroler

• logică liber programabile

• memorie internă pentru stocarea programelor

• aplicabilitatea ciclurilor de programe și subprograme

• detectarea defectelor utilajului

• Conexiune USB

• Limitatoare

• Compatibilitate software-ului (SolidCAM, Mastercam, ArtCAM, Vectric, Cambre, MeshCAM)

Unitatea de control este creierul unui mașini-unelte programabile, importanța majoră este să fie făcută cu caracteristici adecvate. Am selectat unitatea de comandă, de control al motorelor care permite conectarea și controlul a 3 motoare. Am găsit-o extrem de importantă pentru conectivitate USB, pentru că în lumea digitală de astăzi este mult mai accesibilă opțiunea de comunicare, decât cel PARALEL. Placa de control respectă toate caracteristicile de care are nevoie mașina cu comandă numerică. Unitatea de control este construită în jurul unui microcontroler central, modelul microcontroler este: PIC18F4550.

Motoarele pas cu pas sunt funcționate,antrenate prin unitatea de comandă , parametrii unității de acționare depind în mare măsură de performanța motorului. Controlerul dedicat este capabil de a controla 4 motoare pas cu pas simultan. Fiecare axă, motor pas cu pas controlat are:

• PC GND : Null-ul comun pentru semnalul step și dir;

• STEP: De asemenea, este cunoscută sub numele de semnal pas cu pas. Nivelul de semnal standard 5V TTL (Transistor to Transistor Logic), frecvență de până la 8MHz, capacitate 20mA;

• DIR: semnalul direcției, direcția de rotație a semnalului de control al motorului pas cu pas, semnal de ieșire standard 5V TTL, capacitate: 20mA;

• + 5V ENABLE :Semnalul de ieșire pentru activarea controlului. Cardul de interfață este interzisă rămâne în nivelul de semnal 0V, aceasta este restricționată pentru controlul motorului conectat, până când cardul nu este permisă de controler. Această valoare se schimbă la +5V, iar cardul se modifică de la interzis la permis, atunci se poate folosi semnalul pentru driver care poate mișca sistemul controlat. Un LED roșu indică starea activă a cardului.

Motoare și drivere

Mașinile CNC din industrie au motoare sincrone sau asincrone de curent alternative pentru mișcarea axelor. Mai nou se folosesc motoarele de tip servo motoare care sunt controlate de către un driver dedicat de producătorul controlerului și a mașinii CNC. Aceste mașini au o precizie mult mai bună cu aceste motoare și drivere față de cele folosite de mine. Eu am ales motoare pas cu pas de tip nema24 pentru axa Y și nema23 pentru axa X și Z de 1.8 grade, și niște drivere ușor programabile până la o precizie de 1/16 impuls, acesta insemnănd ca 1.8 grade sunt împărțite în 16.

Driverul TB6600 sunt dedicate pentru motoarele pas cu pas cu o putere și consum mare. Acesta dirijează cu ajurorul împărțirii pulsurilor , în cazul de față tensiunea motorului îl împarte între cele două bobine , cu cât împărțim în mai multe părți, cu atât crește numărul pulsurilor între două pasuri intregi al motorului.

Driverul TB6600 este un driver care funcționează la o tensiune de alimentare între 12V și 40V, cu un curent la ieșire cuprinsă între 0.6A și 4,5A. Driverul poate fi reglat pentru următoarele microstep-uri: 1, 2, 4, 8, 16. Este dispusă de protecția la supraîncălzire, protecție la supratensiune, de legare alimentară și are o protecție inversă.

Intrările și ieșirile driverului:

DC+ : polul positive a sursei de current continuu

DC- : patodul sursei de current continuu

A+, A- : o bobină a motorului pas cu pas

B+, B-:cealaltă bobină a motorului pas cu pas

PUL+, DIR+, ENA+ : se leagă la +5V

PUL -:impulsuri date motorului pas cu pas

DIR- : controlul direcției (pentru valoarea HIGH motorul se învârte în față, pentru LOW în sens opus)

ENA-: motorul în funcțiune liberă

O definiție simplă a motorului pas cu pas este: un dispozitiv electromecanic care convertește impulsurile electrice în mișcări mecanice discrete.

Beneficiile motorului pas cu pas:

Rotația unghiulară a motorului este proporțională cu pulsul electric aplicat

Motorul are moment maxim în poziția oprită dacă bobinele sunt alimentate;

Poziționare precisă, cu o eroare de 3-5% la un pas;

Răspunsuri excelente la pornit/oprit/schimbarea direcției de rotație;

Fiabilitate excelentă, deoarece nu există perii de contact la motor;

Posibilitatea de a obține viteze foarte mici cu sarcina legată direct pe axul motorului;

gamă foarte largă de viteze de rotație;

La alegerea motoarelor pas cu pas s-a folosit un factor de rezistență de 5 . Pentru acest lucru s-a efectuat cu ajutorul unui program și prin anumite calcule pentru alegerea motoarelor pas cu pas.

Ecuația2.1 Ecuația factorului de rezistență

Prin calcule s-a luat în considerare greutatea mașinii, factorul de mișcare a ghidajelor, pasul axelor, forța de mișcare și sarcina mașinii. În final s-a calculat sarcina statică și dinamică a mașinii, după care valoarea acesteia s-a înmulțit cu 5 și am ajuns la decizia să achiziționeze motoarele pas cu pas din Tabelul2.1

Parametri motoarelor pas cu pas

Tabelul2.1 Tabel cu parametrii motoarelor pas cu pas

Sursă de alimentare

Ca și sursă de alimentare în industrie pentru mașini se folosește curent alternativ de 220V și curent trifazat de 380V, acesta alimentează toată mașina, dar unele sensor lucrând la 12 sau 24 volți sunt folosite transformatoare de tensiune. În proiectul meu am folosit o sursă de tensiune de la sursă general de alimentare 220V, dar am folosit și un transformator pentru drivere și motoare de 48V la 10A, dar și o sursă de alimentare pentru controlere luat de la ieșiriile de USB.

Sursa de alimentare folosită este o sursă de curent continuu de 500W. Sursa de alimentare are 3 ieșiri de tensiune care se poate regla cu ajutroul potmetrului atașat pe sursă, astfel acesta poate să scoate o tensiune intre 36V și 48V la 10A. Sursa de alimentare ca și tensiune de intrare are tensiunea din rețea de 230V/50Hz. Sursa este echipată cu siguranță de supraîncărcare și suprareglaj sau de scurt circuit.

Senzori și traductoare

Toate mașiniile de tip CNC au în dotare senzori și traductoare pentru o precizie cât mai eficientă, aici vorbind despre microni, iar senzorii sunt pentru masurători aproximabile și pentru limitările mașinii. La mașina mea am folosit encoder rotativ de 400 de pulsuri pentru măsurarea și studierea mișcării axelor, iar un senzor cu ultra sunet pentru măsurători aproximative și delimitarile mașinii, iar în viitor doresc să folosesc niște senzori de proximitate de tip PNP.

Encoderul rotativ este potrivit pentru o varietate de control inteligent al mașiniilor automate pentru măsurarea distanței și a impulsurilor rotative a motoarelor, numărul de faze efectuate al motoarelor pas cu pas. Astfel se poate folosi la măsurarea vitezei de rotire, măsurarea distanței efectuate, pentru a putea fi calculat eroare pasului mașinii CNC și corectarea pentru o rezoluție a mașinii cât mai eficientă.

Mărimea compactă, greutate redusă și ușor de instalată. Măsurarea destul de precisă, o rotire intreagă de 400 de impulsuri.

Codificatorul rotativ incremental cu AB două faze, generat de rotația discului gradat și de direcția opto-identificabilă. Sursa de alimentare între 5-24V. Viteză mai mare de 5000 de rot/min, axa de 6mm , lungimea de 39mm și diametrul de 36mm.

Conexiune firelor:

faza A-verde

faza B-alb

Vcc tensiune de alimentare +5V-roșu

Gnd sau V0-negru

Senzorul ultrasonic, de tip HC-SR04, se folosește pentru măsurarea distanței, această măsurare nu este una de precizie mare dar este foarte bună pentru evaluarea distanței până la o limită impusă. Se folosesc pentru limita mașinii CNC hobby.

Acest sensor emite ultrasunete la 40 000 Hz care se deplasează prin aer și dacă există un obiect sau un obstacol pe calea sunetului, va reveni semnalul imediat la modul. Având în vedere timpul de deplasarea și viteza sunetului, se poate calcula distanța. Pentru a genera ultrasunetele, trebuie să setăm Trigul la un nivel înalt pentru 10 μs. Asta va trimite o explozie sonică de 8 cicluri care va călători la sunetul de viteză și va fi recepționată în pinul Echo. Pinul Echo va scoate timpul, în microsecunde.

Viteza sunetului = 340m/s = 0.034cm/µs

Timpul = distanță/viteza sunetului = distanță/0.034

Ecuația2.2 Ecuația timpului măsurate cu senzorul ultrasonic

Distanța = timpul*0.034/2

Ecuația2.3 Ecuația distanței măsurate cu senzorul ultrasonic

Afișaje

Mașinile din industrie sunt dotate de obicei cu un singur LCD iar toate mișcările și reglajele ale mașinii poate le vedea operatorul. Pentru acest lucru eu am decis să aleg două LCD uri, una pe 4 linii cu 20 de coloane, iar una cu 2 linii și 16 coloane.Pe cea de 16 coloane afișez viteza și pasul motoarelor, iar pe cea cu 20 de coloane afișez poziția mașinii cu valori absolute și relative măsurate de encoder și senzor.

LCD cu 4 1inii și 20 de coloane, LCM2004, este un modul serial de afișare a caracterelor LCD cu o magistrală serial SPI / I2C de mare viteză. Ecranul LCD este de 4×20 de caractere, albastru STN (negativ), iluminare din spate cu LED alb. Un LCM2004 este lipit pe spatele afișajului LCD. Permite afișarea ecranului LCD prin intermediul unei magistrale seriale I2C sau SPI. Contrastul și iluminarea de fundal sunt controlate de software și pot fi setate la 254 nivele.

LCD cu 2 linii și 16 coloane, este un modul foarte simplu și este foarte frecvent utilizat în diverse dispozitive și circuite. Aceste module sunt preferate peste șapte segmente și alte LED-uri cu mai multe segmente. Motivele sunt că ​​LCD-urile sunt economice, ușor de programate, nu au nici o limitare de a afișa caractere speciale și chiar personalizate. Un ecran LCD de 16×2 înseamnă că poate afișa 16 caractere pe linie și există 2 astfel de linii. În acest ecran LCD fiecare caracter este afișat în matrice de 5×7 pixeli.

La mașinile din industrie, potențiometrele utilizate ajută la reglarea vitezei atît a capului rotativ cât și a vitezei mișcării axelor.

Rezistențe reglabile

Potențiometrul este o rezistență variabilă cu ajutorul axei amplasate pe circuitul potențiometrului. S-a folosit un potențiometru axial cu o singură tură cu o rezistență de 10kΩ cu o putere de 100mW. S-a utilizat potențiometre mono pentru reglarea avansului motoarelor pas cu pas și pentru reglarea luminozității LCD-urilor.

În industrie se folosește generatorare de pulsuri manuale pentru mișcare axelor mașiniilor dintr-un punct în altul. Mașiniile astfel pot mișca doar pe o singură axă. Eu pentru acest lucru am folosit niște joystickuri care folosesc la bază niște microîntrerupătoare astfel au ca și logică ON-OFF.

Joystick

La acest proiect am utilizat două joystickuri Schneider XD2PA24, una pentru mișcare axei X și Y iar una pentru mișcarea axei Z. Aceste joystick-uri sunt construite din câte 4 microîntrerupătoare , la maxim 10 A și o tensiune maximă de 600VAC. Joystickurile folosite sunt metalice cu o lungime de 22 mm , și se pot utiliza ușor ca și operator. Aceste joystickuri sunt folosite și ăn industrie.

Motor de frezare

Motorul de frezare în industrie este un motor de 2-3kW motor trifazată, însă eu am ales motorul de frezare pentru mașina CNC, una de la marca CAT modelul 6306. S-a ales acest motor deoarece are o gamă largă de viteze între 11.500 și 32.000 care contribuie la folosirea mai eficientă a mașinii. Motorul are o putere de 650W, o greutate de 1800g, cu rulmenți duble și turația se poate regla de la potențiometrul aflat pe motorul de frezare. Motorul este unul de curent alternativ, tensiunea de alimentare fiind de la rețea, 230V/50Hz.

Software

Mașiniile de tip CNC din întreaga lume, au o parte de software a mașiniilor dedicate numai pentru un controler folosit de producător pentru acel tip de utilaj. Acest software diferă de la producător la producător și diferă și de modelul mașinii și de capabilității acesteia. Pentru că în realizare proiectului am decis să folosesc un microcontroler de la cei de la Arduino și un microcontroler dedicat de la PlanetCNC, în final am realizat să folosesc ca și parte de software programabil un Arduino, și pe partea de generarea codurilor am folosit software dedicat de la PlanetCNC cu o interfață ușor de folsoit numit USB-CNC Contoler.

Mediul de dezvoltare integrat Arduino – sau Arduino Software (IDE) – conține un editor de text pentru realizarea codurilor, o zonă de mesaje, o consolă de text, o bară de instrumente cu butoane pentru funcții comune și o serie de meniuri. Se conectează la hardware-ul Arduino și Genuino pentru a încărca programe și de a comunica cu ele.
CNC-USB controler este un program pentru mașiniile CNC hobby. Programul poate fi folosit pentru generarea programelor cu G coduri și implementarea acestora pe microcontroler. Software-ul poate fi folosit pentru mișcarea celor 3 axe deodată cu o precizie destul de bună.

Mecanică

Partea mecanică a mașinilor CNC se pot împarții în trei părți, fiecare parte însemnând o axă a mașinii. Mașina este compusă din cele trei axe X,Y,Z fiecare este construită în primul rând dintr-un schelet, pe care sunt puse gidajele pentru culisarea mașinii pe fiecare axa în parte. Fiecare direcție a mașinii are și o axă, un șurub filetat care mișcă mașina în parțile dorite de către operator. Cu cât scheletul mașinii CNC este mai rigid și robust, acest lucru fiind adevărat cu cât este făcut din material cât mai dur și care nu se modifică, de acesta se folosește de obicei fontă.

Pentru mișcarea axelor se folosesc ghidaje liniare pe bile cu căruțe, acesta fiind deobicei cu o precizie de maximă de sutime, acest lucru fiind din cauza bilelor de precizie. Mișcarea se face cu ajutorul șuruburilor pe bile cu pas cat mai mic posibil, deoarece astfel crește precizia mașinii, de obicei pe fiecare axă se folosește minim două piulițe compatibile acestor șuruburi pe bile.

Toate piesele existente în aceste mașini rulează și se mișcă pe bilă, deoarece astfel crește durata de viață a elementelor care construiesc părțile mișcătoare a mașiniilor.

Mașina construită este una de tip macara, deoarece masa mașinii este fixă, și se mișcă numai cu motorul de frezare, adică scula, freza, cu care se face operația propusă de către operator.

Mașina de frezat CNC construit de către mine este una de o precizie de două sutimi (±0,020), care este un factor destul de bun față de o mașina hobby.

Mașina este construită în principal din aluminiu, de mai multe grosimi și dimensiuni. Ca și ghidaje s-a folosit ghidaje liniare rotunde de fi20 și rulmenți liniari și ghidaje lineare pe șine, care sunt compuse din șină și căruță pe bile de o precise mare de către producătorul HIWIN. Pentru mișcările liniare se folosesc șuruburi pe bile de precizie mare de la HIWIN și șuruburi trapezoidale. Fiecare șurub este pus pe 4 rulmenți, câte două pe fiecare capăt. Acestea sunt legate cu ajutorul unor cuplaje elastice de motoarele pas cu pas. Fiecare motor pas cu pas are un support de motor cu care este legat de ansamblul mașinii.

CNC axa Y

Axa Y cuprinde aproape în totalitate scheletul mașinii, aceasta este cea mai rigidă parte a mașinii. Această parte este construita din două placi de aluminiu prelucrate de 20mm, pe care sunt prinse cele 4 profile Rexroth, două de 40x40mm și două profile de 40x80mm. Aceste profile fiind prinse de scheletul mașinii cu cate două șuruburi la capete. În lateralele scheletului sunt prinse ghidajele lineare de tip șine de la producătorul HIWIN, modelul HGH25HAZOH, pe bile cu o precizie de sub două sutimi. Este prins pe acest schelet și motorul pas cu pas de 3Nm care mișca restul scheletului (axa X și Z), și șurubul pe bile tot de la producătorul HIWIN cu precizia de o sutime.

CNC axa X

Axa X a mașini este legat de cel Y cu ajutorul ghidajelor lineare din imaginea de sus, care se află pe lateralele scheletului, și de piulița care se află sub mașină. Acestă piuliță cu ajutorul axei filetate și a ghidajelor mișcă restul mașinii, adica scheletul de tip pod a lui Gantry. Axa X este compusă tot din aluminiu de 20mm prelucrate pe mașina CNC, aceste plăci construiesc lateralele mașinii și scheletul axei. Aceste place de aluminiu sunt legate cu ajutorul profilelor Rexroth de 40x40mm , atanșate cu suruburi, și în partea de jos cu ajutorul unei profile Rexroth și a unei plăci de aluminiu de 10mm, care contribuie la rigiditatea mașinii. Pe profilele Rexroth se află ghidajele liniare de tip șine , de la producatorul HIWIN modelul HGH25HAZOH, tot pe bile cu o precizie de sub două sutimi. Acestă axă este coordonata de un motor pas cu pas de 2Nm, care se afla pe partea dreaptă a mașinii, care invârte o axă, un șurub pe bile HIWIN2005, aceasta fiind o axă de 20mm cu pas de 5. Axa este pus pe rulmenți, iar motorul prins cu axa cu ajutorul unei cuplaje elastic.

CNC axa Z

Aceasta este cea mai compactă parte a mașinii. Această parte a mașinii este construită din mai multe plăci de aluminiu, Parte principal este o placă de 20mm care este prinsă de cele două ghidaje HIWIN a axei X. Aceasta placa mai are supraetajat o placă de care este prinsă motorul de frezare de 650W a mașinii CNC. Între această placă și cea care este prinsă de axa X se află ghidajul linear pe rulmenți liniari de la Bosch, ghidajele liniare sunt de 20mm rectificate de o precizie de 18 microni. S-a folosit astfel de ghidaje din cauza spațiului mic a subansamblului. Pentru mișcarea acestei axe s-a folosit tot un motr de 2Nm, dar am folosit șurub trapezoidal de 16mm cu pas de 4, pentru o distribuție apasului mai bună. Motorul de frezare este atașat cu ajutorul unei placi de aluminiu , care este prins și cu un șurub. Ghidajele HIWIN, căruciorul acestora este prins de catre axa Z cu 16 șuruburi de M6. Pe spatele plăcii de aluminu este prins și piulița șurubului pe bile a axei X.

Implementarea sistemului

Principiul de comandă al Motoarelor pas cu pas

În proiectul meu, pentru mașina CNC s-a folosit 3 motoare pas cu pas bipolare, doua de tip nema23 cu un cuplu de 2Nm și un motor pas cu pas de 3Nm, și trei drivere identice de tip TB6600 pentru aceste tipuri de motoare.

Motorul are 4 fire, spre deosebire de cele unipolare care au 5 sau 6 fire. Pentru a putea recunoaște un motor pas cu pas bipolare de alte motoare cu 4 fire se măsoară rezistența dintre terminale.

Circuitul de comandă pentru aceste motoare este alcătuită dintr-o punte H pentru fiecare bobină; pe scurt o punte H permite ca polaritatea tensiunii aplicate la capetele fiecărei bobine să fie controlată independent. Secvența de control pentru acest tip de motor este prezentată mai jos, folosind simbolurile – și + pentru a indica polaritatea tensiunii aplicate la terminalele bobinelor:

Terminal 1a +–+–+–+– ++–++–++–++–

Terminal 1b –+–+–+–+- –++–++–++–++

Terminal 2a -+–+–+–+– -++–++–++–++-

Terminal 2b –+–+–+–+ +–++–++–++–+

Principiul de comandă a motoarelor pas cu pas folosite pentru proiect le putem împărții în două părți:

-partea care este comandat manual de către Arduino;

-partea automatizată care este controlat de către un pic dedicat.

Partea comandată cu Arduino este bazat pe trimiterea impulsurilor către driverul TB6600. Acesta trimite mai multe impulsuri, un număr care este echivalent cu distanța care trebuie să parcurga la o singură semnal al joystickului analog. Arduinoul trimite pulsuri de numărul 3200, 1600, 800, 400, 200,100,2, fiecare având alte distanțe de parcurs, de la 5 mm la 0,003 mm.

Legarea pinurilor la driverul TB6600 cu arduino:

PUL- DIR- EN- este legat la cate o ieșire de tip digital a Arduino-ului (ex.:30,32,34);

PUL+ DIR+ EN+ sunt legate la câte o rezistență de 10kΩ și acestea la o tensiune de alimentare de +5v

GND este legat la sursa de tensiune între 9 și 42 V la parte cu 0V

VCC este legat la sursa de tensiune la o tensiune între 9 și 42 V

A+ B+ A- B- sunt legate la firele motoarelor pas cu pas

Legarea pinurilor la driverul TB6600 cu controlerul dedicat:

PUL- DIR- este legat la cate o ieșire de tip digital al controlerului cu picul dedicat 18F4455(+5V, -, CW, CK);

PUL+ DIR+ sunt legate la câte o rezistență de 10kΩ și acestea la o tensiune de alimentare de +5v

GND este legat la sursa de tensiune între 9 și 42 V la parte cu 0V

VCC este legat la sursa de tensiune la o tensiune între 9 și 42 V

A+ B+ A- B- sunt legate la firele motoarelor pas cu pas

Figura4.1 Conectarea celor două controlere cu driver și motor

Principiul de măsurare

Principiul de măsurare se efectuează prin trei modalități, cu ajutorul traductorului incremental de rotație, cu ajutorul senzoriilor ultrasonice și al unui ceas comparator magnetic.
Un traductor incremental de rotație este un dispozitiv electromecanic care poate măsura mișcarea sau poziția. Majoritatea traductoarelor utilizează senzori optici pentru a furniza semnale electrice sub formă de trenuri de impulsuri, care, la rândul lor, pot fi traduse în mișcare, direcție sau poziție.

Dispozitivele de rotație sunt utilizate pentru măsurarea mișcării de rotație a unui arbore, în cazul meu arborele este axa mașinii pe care o mișcă motorul pas cu pas, și se măsoare distanța parcusă de mașină, în funcție cu rotația axei.

Figura de mai jos prezintă componentele fundamentale ale unui codificator rotativ, care constă dintr-o diodă (LED) emițătoare de lumină (LED), un disc și un detector de lumină pe partea opusă a discului.

Encoderele au de obicei de la 100 la 6000 de segmente pe revoluție. Pentru o măsurare precisă am utilizat traductor incremental de rotație de 400 de segmenți, acest lucru înseamnă că această codificator poate oferi o rezoluție de 1.11 grade care este o precizie destul de bună pentru motoarele pas cu pas de 1.8 grade folosite la lucrarea de licență.
Un codificator cu un set de impulsuri nu ar fi util, deoarece nu ar putea indica direcția de rotație. Folosind două piste de coduri cu sectoare poziționate la 90 de grade din fază, cele două canale de ieșire ale codificatorului de cvadratură indică atât poziția, cât și direcția de rotație. Dacă A conduce B, de exemplu, discul se rotește în sensul acelor de ceasornic. Dacă B conduce A, atunci discul se rotește în sens invers acelor de ceasornic.

Pentru măsurătorile efectuate, pe mașină au fost montate trei traductoare incrementali de rotație pe axele mașinii cu cuplaj direct pe axă și s-a făcut calcule de măsurare față de rotirea axei, calculând distanța efectuată. Astfel dacă pe axa X și Y avem două axe cu pas de 5mm , asta înseamnă că la un număr de impulsuri de 400 s-a efectuat 5mm, iar pe axa Z la 400 de impulsuri s-a efectuat 4mm, astfel putem face o comparație între valoare de parcurgere din program(valoare relativă), față de valoare absolute măsurată pe axa mașinii.

Encoderele în principiu la capăt au 4 fire de conectare pentru a putea efectua măsurătorile:

Output pulse A – fir galben

Output pulse B – fir albastru

Ground – fir negru

+5V – fir roșu

Legarea pinurilor se efectuează în următoarea mod:

Output pulse A – fir galben – se măsoare impulsurile de pe canalul A și se leaga la inputul analog A1

Output pulse B – fir albastru – se măsoare impulsurile de pe canalul B și se leaga la inputul analog A2

Ground – fir negru – se pune la plca de bază la GND

+5V – fir roșu – se alimentează encoderul cu +5V de la placa de dezvoltare

Figura4.4 Schema de legătura a encoderului cu Arduino

Principiul de măsurare cu ajutorul senzoriilor ultrasonice de tip HC-SR04 s-a efectuat mai mult pentru folosirea limitei a mașinii. Aceste măsurători sunt foarte eronate, deoarece în aceste măsurători contribuie toate factorele care sunt implicate în aerul din împrejurimea mașinii și stabilitatea mașinii efectuează mult sensibilitatea senzorului și precizia măsurătorului.

Senzorii utrasonici sunt instrumente excelente pentru măsurarea distanței fără contact real și sunt utilizate în mai multe locuri, cum ar fi măsurarea nivelului apei, măsurarea distanței . În acest proiect s-a efectuat ca și obstacol piesele care alcătuiesc mașina, lateralele, iar encoderele sunt așezate pe fiecare parte a mașinii (X, Y și Z). În această lucrare am utilizat un senzor ultrasonic pentru a determina distanța unui obstacol, laturile mașinii adică limitele, de la senzor, de aceea vor fi folosite și ca limite ale mașinii.

Următorul principiu de funcționare al senzorului cu ultrasunete este: semnalul de nivel ridicat este trimis pentru 10us folosind Trigger. Modulul trimite automat opt ​​semnale de 40 kHz și apoi detectează dacă impulsul este recepționat sau nu.Dacă semnalul este recepționat, atunci acesta este prin nivelul ridicat. Durata mare a timpului este intervalul de timp dintre trimiterea și primirea semnalului.

Distanța = (Timpul x Viteza sunetului în aer) / 2

Ecuația4.1 Ecuația distanței măsurate cu senzorul

În conexiunile cu circuitul conectorii "trigger" și "ecou" ai senzorului cu ultrasunete sunt conectați direct la pinii A8 și A9 al arduinului. GND este legat la pinul ground al plăcii iar +5V tot la placă la sursa de +5V.

Utilizarea afișajelor de tip LCD

În proiectul de licență am folosit două afișaje de tip LCD unul pe 20 de coloane și 4 linii, iar unul de 16 coloane și 2 linii. Afișajele s-au folosit pentru afișarea valoriile distanțelor executate pe mașină, pentru aceasta s-a folosit un modul LCD2004 iar pentru afișarea vitezei motoarelor și a pasurilor un modul LCD1602 . Cele două afișaje au o comunicație paralelă pe 4 biți de date cu Arduino, deoarece biblioteca folosită pentru afișarea rezultatelor pe afișaje folosește 4 digiți din cele 8, de aceea nu este folosit biturile D0, D1, D2 și D3. Conversia cuvintelor și a valorilor se face cu ajutorul bibliotecii regăsite în Arduino.

Afișajul LCD1602 s-a legat la Arduino mega cu următoarea configurație:

GND – este legat la pinul ground de pe placa de achiziție

Vcc – este alimentarea afișajului și este legat la +5V

V0 – este legat la pinul potențiometrului de 10 kΩ, care ajută la reglarea iluminatului din fundal

RS – este pinul pe care se trimit datele, și este legat la pinul numarul 31

R/W – ajută la citirea și scrierea datelor, este legat la ground

E – este pinul enable care este conectat la pinul 33, care este HIGH ca și valoare pentru a putea afișa pe LCD

D4 – databit numărul 4, este legat la pinul digital numărul 35, și poate avea valoarea de HIGH or LOW.

D5 – databit numărul 5, este legat la pinul digital numărul 37, și poate avea valoarea de HIGH or LOW.

D6 – databit numărul 6, este legat la pinul digital numărul 39, și poate avea valoarea de HIGH or LOW.

D7 – databit numărul 7, este legat la pinul digital numărul 41, și poate avea valoarea de HIGH or LOW.

Afișajul cu modul LCD2004 cu 20 de coloane și 4 linii s-a legat exact la fel la Arduino numai la pinuri diferite, deoarece mesajul afișat este diferit față de celălalt.

Pentru reglarea fundalului iluminat am folosit potențiometru de 10kΩ

Comanda cu joystick

Pentru mișcarea celor trei axe în modulul manual s-a folsit două joystickuri de tip Schneider. Aceste joystickuri sunt alcătuite din câte 4 microintrerupătoare de tip tact, astfel în total se folosește 6 microintrerupătoare pentru cele 3 axe, câte 2 pentru fiecare axă, unul pentru mișcarea în minus și unul pentru mișcarea în plus.

La fiecare button cu tact din care este alcătuit joystickul este legat la +5V și o rezistență de 1kΩ, care este legat paralel cu tensiune de alimentare iar la partea cealaltă a butonului este legar ground-ul. Dacă butonul este activată, adică curentul trece prin buton, rezistența este activat și trimite un impuls la placă, Arduino Mega, care din valoarea LOW se face astfel HIGH și se declanșează la mișcarea motoarelor. Astfel pentru mișcarea mașinii s-a folosit 6 rezistențe de 1kΩ, 6 pinuri digitale pentru intrarea bitului de activare a mișcării, ground și +5V pentru alimentarea joystickurilor.

Pinurile utilizate pentru evaluarea valorii butoanelor s-a folosit pinii digital 2, 3, 4, 5, 6 și 7 care sunt intrări de PWM.

Implementarea software

Diagrame de activitate

În figura5.1 se găsește diagram de activitate a programului scris pentru placa de dezvoltare Arduino pentru mișcăriile efectuate manual cu ajutorul butoanelor existente .

În primul rând se include biblioteca pentre folosire afișajelor de tip LCD pentru afișarea valorilor măsurate, reglate și calculate de program și operator. După acesta se definesc variabilele globale folosite în program și se definesc pinurile care utilizează în modul manual de mișcare al mașinii.

Se definește setarea afișajelor de tip LCD, aici determină mărimile afișajelor și pinurile al care comunică LCD-urile cu placa de dezvoltare Arduino.Se citesc datele potențiometrelor existente pe cele două pinuri analogice, și se salvează într-o variabilă. Totodată se citește valoarea inițială a traductoarei incremental de rotație, poziția în care se află traductoarele incrementali de rotație. Următorul pas este calcularea și afișajarea rezultatelor pentru viteza de mișcare și pasul cu care se va declanșa mașina. După acesta se fac măsurători cu ajutorul senzoriilor ultrasonici, și se salvează aceste valori folosirea următorilor de decizie. Se verifică care dintre cele șase direcții sunt valabile, adică care dintre cele 6 pini a joystickurilor este apăsat, adevărat, și dacă totodată mașina nu este în limită pe acea direcție(X+,X-,Y+,Y-,Z+,Z-) se fac mișcări liniare și măsurători cu ajutorul encoderelor. După aceste pași, chiar dacă nici o decizie nu este adevărată, se fac calculi cu ajutorul rezultatelor de la traductoarele de rotație și pașii cu care s-a mișcat mașina. La sfârșit se afișează toate valoriile care s-au rezultat din programul scris. Programul începe din nou de la citirea datelor de la potentiometer și encoderele.

Figura5.1 Diagrama de activitatea a programului pentru partea manuală

Inițializări , biblioteci, întreruperi, temporizări

Al proiectului de licență s-a implementat în domeniul de dezvoltare Arduino un program pentru măsurarea poziției, vitezei, distanței și a accelerației pentru a experimenta precizia mișcării a mașinii CNC construite.

Un program Arduino este partajat în patru părți:

adăugarea biblioteciilor existente

definirea pinurilor și definirea variabilelor

setarea modurilor piniilor și a afișajelor, în bucla de setare

programul implementat de utilizator, în bucla loop

Pentru programul care este pe Arduino pentru mișcăriile manual și măsurători s-a folosit o singură bibliotecă : #include <LiquidCrystal.h>. Această bibliotecă este beneficiat pentru afișarea datelor pe LCD, face convertirea pe 4 biți de date a rezultatelor, după care transmite datele spre LCD unde se văd datele trimise de Arduino: LiquidCrystal lcd1(31, 33, 35, 37, 39, 41) și

LiquidCrystal lcd2(43, 45, 47, 49, 51, 53).

Cele doua afișaje s-au folosit cu următoarea configurație declarată din program, care se referă la legarea pinurilor pe Arduino.

Se folosesc următoarele definiri pentru pinuri și variabilele folosite în program:

int potPin1 = A0; – potențiometrul pentru reglarea vitezei legat la pinul A0 analog

int potPin2=A1; – potențiometrul pentru reglarea pasului legat la pinul A1 analog

float val2 = 0; float val1 = 0; – variabile în care se citesc valorile potențiometrelor

float viteza = 0; – variabilă pentru calcularea vitezei de mișcare

float td = 0; – variabilă pentru calcularea întârzierei între pași

float pas = 0; – variabilă pentru calculare pasului

int PULY=30; int DIRY=32; int ENAY=34; int PULX=36; int DIRX=38; int ENAX=40; int PULZ=42; int DIRZ=44; int ENAZ=46; – aceste sunt cele 9 pinuri pentru mișcarea axelor, aceste pinuri dau impulsurile pentru driverele motoarelor pas cu pas. PUL este pinul de pulsuri, DIR pinul de direcție și ENA pinul pentru enable-ul pentru motoare. Pinurile folosite sunt pinurile de la 30 până la 46.

const int buttonPinY1 = 2; const int buttonPinY2 = 3; const int buttonPinX1 = 4; const int buttonPinX2 = 5; const int buttonPinZ1 = 6; const int buttonPinZ2 = 7;- pinurile care se citesc direct din Arduino, care se regăsește in buttonState, pentru a decide care va fi următorul pas. Pinurile sunt pinurile de la 2 la 6.

int buttonStateY1 = 0; int buttonStateY2 = 0; int buttonStateX1 = 0; int buttonStateX2 = 0; int buttonStateZ1 = 0; int buttonStateZ2 = 0; – variabile în care se citește valoarea joystickurile, valorile care pot fii Low sau High, care înseamnă că este sau nu apăsat joystickul.

#define trigPinX A10 , #define echoPinX A11, #define trigPinY A12 , #define echoPinY A13 , #define trigPinZ A8 , #define echoPinZ A9 – pinurile pentru senzorii ultrasonici, pinurile echo și trig. Pinurile sunt pinurile analogice de la 8 la 13.

#define outputAy 8 #define outputBy 9 #define outputAy 10 #define outputBy 11 #define outputAy 12 #define outputBy 13 – definirea pinurilor pentru fazaA și fazaB

int countery = 0; int counterx = 0; int counterz= 0;- variabile pentru numărarea impulsurior pentru cele 3 traductoare.

int aStatey; int aLastStatey; int aStatex; int aLastStatex; int aStatez; int aLastStatez;- variabile pentru verificarea actuală și ultima poziție a encoderului.

În bucla de setup, s-a efectuat setăriile pinurilor și a componentelor folosite la modul manual, prin controlul unei Arduino. În această bucla s-a făcut setăriile pentru modurile pinurilor, să fie pinuri de ieșire sau de intrare și s-a efectuat setarea LCd urilor unde am precizat ce dimensiuni au afișajele folosite în proiect.

lcd1.begin(16, 2); lcd2.begin(20, 4);- setarea afișajelor de 16 coloane și 2 linii, respective 20 de coloane pe 4 linii.

pinMode (PULY, OUTPUT); pinMode (DIRY, OUTPUT); pinMode (ENAY, OUTPUT); pinMode (PULX, OUTPUT); pinMode (DIRX, OUTPUT); pinMode (ENAX, OUTPUT); pinMode (PULZ, OUTPUT); pinMode (DIRZ, OUTPUT); pinMode (ENAZ, OUTPUT); – pinurile care se leagă la driverele motoarelor toate setate ca și pinuri de ieșire care trimite la driver o valoare de High sau Low.

pinMode(buttonPinY1, INPUT); pinMode(buttonPinY2, INPUT); pinMode(buttonPinX1, INPUT); pinMode(buttonPinX2, INPUT); pinMode(buttonPinZ1, INPUT); pinMode(buttonPinZ2, INPUT);- pinurile de la joystick-uri setate ca și intrări de date, care primește valoare de Low sau High.

pinMode(trigPinX, OUTPUT); pinMode(echoPinX, INPUT); pinMode(trigPinY, OUTPUT); pinMode(echoPinY, INPUT); pinMode(trigPinZ, OUTPUT); pinMode(echoPinZ, INPUT); – se setează pinurile de la sensor, cele de tip trig pentru pinuri de ieșire, și cele de tip echo ca și pinuri de intrare.

pinMode (outputAx,INPUT); pinMode (outputBx,INPUT); pinMode (outputAy,INPUT); pinMode (outputBy,INPUT); pinMode (outputAz,INPUT); pinMode (outputBz,INPUT);- acestea sunt setate ca și pinuri de intrare, cu ajutorul acestora se citește traductorul incremental de rotație.

În bucla ”loop” este programul principal al mișcării manuală a mașinii.

Această buclă începe cu decodificarea valorii potențiometrelor, pentru a afla valoarea pasului și a vitezei cu care trebuie să se miște mașina la o singură apăsare a joystickului. După citirea valoriilor potenșiometrelor se face o conversie, pentru a afișa rezultatului final pe afișaje. Daca viteza este 0 pasul motoarelor este tot 0, deoarece fără viteză nu se poate mișca mașina. Valoare vitezei variază între 0 și 10000, iar pasul între 0 și 3600, 3600 însemnând o rotație întreagă a motorului. În anexa numărul 1 se găsește sursa de cod pentru reglarea și afișarea vitezei și a pasului.

Al doilea pas al programului principal este măsurarea distanței cu ajutorul senzoriilor ultrasonice. Acest pas este unul însemnat deoarece senzorii nu sunt folosiți numai în scopuri de masurare și experimentare, sunt folosite și ca limitatoare de curse a mașinii, ca aceasta să nu intre în coloziune.Senzorul lucrează cu emiterea și receptarea sunetelor ultrasonice.Pinul trig trimite un impuls la sensor care trimite un sunet ultrasonic, pe care pinul echo il receptează. Dupa ce avem aceste date de la pinurile trig și echo , calculăm distanța în funcție de constanta de viteză și timpul în care s-a efectuat emiterea și receptarea, această valoare de timp se împarte în două pentru folosire in calcule. Calculele sunt făcute cu ajutorul ecuației4.1. Codul sursă se regăsește în anexa numărul 2.

Al patrulea pas al programului este citirea valoriilor joystickuriilor și a traductoarelor incrementali de rotație, ca să știe programul pe care axă trebuie să se mișcă, asta însemnând că controlerul știe care joystick este apăsat în momentul în care se face citirea. Se face și citirea pentru poziția actuală a encoderelor pentru a putea număra pulsuriile care s-a efectuat în timpul mișcării a mașinii.

buttonStateY1 = digitalRead(buttonPinY1);

buttonStateY2 = digitalRead(buttonPinY2)

buttonStateX1 = digitalRead(buttonPinX1);

buttonStateX2 = digitalRead(buttonPinX2);

buttonStateZ1 = digitalRead(buttonPinZ1);

buttonStateZ2 = digitalRead(buttonPinZ2);

aState = digitalRead(outputAx);

aState = digitalRead(outputAy);

aState = digitalRead(outputAz);

După ce se știe poziția actuală a mașinii CNC și se știe valoarea pinurilor joystickurilor, dacă este Low sau High, deci este sau nu apăsat joystickul la care ne uităm. Dacă este adevărat condiția și mașina nu se află la limită, aceasta intră în condiție și începe numărătoare de pasuri cu ajutorul unei cicluri de tip “for”. În acest ciclu ”for” se face mișcarea motoarelor pas cu pas, trimitând la driver direcția în care dorim să se mișcă mașina, și stepurile pentru deplasarea axei. Totodată în aceast ciclu se numără și pulsurile traductorului incremental de rotație.

Condițiile pentru mișcarea axelor:

if(buttonStateY1 == LOW && distancey>=80)

if(buttonStateY2 == LOW && distancey<=650)

if(buttonStateX1 == LOW && distancex>=30)

if(buttonStateX2 == LOW && distancex<=485)

if(buttonStateZ1 == LOW && distancez<=200)

if(buttonStateZ2 == LOW && distancez>=50)

Sursa de program se regăsește in anexa numărul 3.

La sfârșitul programului sunt afițate toate datele obținute anterior. Pe afișajul LCD2004 pe prima linie sunt definite cele trei axe (Axa X.Axa Y și Axa Z). Pentru fiecare axă datele sunt afișate pe coloane, fiecare axă are cele trei date ale lui: poziția absolută cât s-a mișcat, poziția măsurată cu senzorii ultrasonici și poziția acestuia convertită și măsurată cu traductorul incremental de rotație.

Pe prima linie se afișează poziția absolută, poziția de la punctul de pornire, în milimetrii cu o precizie de sută la sută.

Pe a doua linie sunt afișate valorile senzoriilor ultrasonici , acestea sunt valoriile măsurate de la senzor până la marginiile mașinii.

Pe a treia linie numerele afișate sunt cele care s-a calculat din numărul de impulsuri al traductoarelor incrementali de rotație.

Calcule au fost făcute cu următoarele ecuații:

pasx1=pasx*5/3200; – calculează distanța după câți pași s-a efectuat în program

float counterx1=counterx*5/800; – calculează distanța după numărul de impulsuri

Afișajul s-a efectuat cu următoarele coduri de linii.

lcd2.setCursor(0,0);

lcd2.print("Axa X");

lcd2.setCursor(7,0);

lcd2.print("Axa Y");

lcd2.setCursor(14,0);

lcd2.print("Axa Z");

lcd2.setCursor(0,1);

lcd2.print(pasx1);

lcd2.setCursor(0,2);

lcd2.print(distancex);

lcd2.setCursor(0,3);

lcd2.print(counterx1);

lcd2.setCursor(7,1);

lcd2.print(pasy1);

lcd2.setCursor(7,2);

lcd2.print(distancey);

lcd2.setCursor(7,3);

lcd2.print(countery1);

lcd2.setCursor(14,1);

lcd2.print(pasz1);

lcd2.setCursor(14,2);

lcd2.print(distancez);

lcd2.setCursor(14,3);

lcd2.print(counterz1);

Comunicație

Pe partea de comunicație putem discuta de două mari părți de comunicație:

pe partea automată care este controlat de către pic-ul dedicate, acesta comunică prin portul USB;

pe partea manual comunicația se face prin intermediul afișajelor.

Pe partea automată există o comunicație între controller și laptop. Prin această comunicație operatorul mașinii are o interfață dedicate prin care poate comunica cu mașina CNC.

Prin această interfață operatorul vede mișcarea mașinii graphic pe ecranul laptopului, vede unde a fost deja deplasat mașina, unde va fi deplasată și unde este în momentul executării programului. Aceasta este o comunicație de tip input-output. Totodată putem regla viteza mașinii. Prin viteza mașinii înțelegem două viteze care se pot regla: o viteză este reglată de către operator, care este viteza de așchiere a mașinii, aceasta se schimbă doar după efectuarea ultimei linii de program, și este viteza de deplasare rapidă, aceasta este viteza în care mașina se mișca deasupra piesei sau la o distanță de siguranță în aer fără să atingă obiectul. Aceasta este a comunicație de tip out deoarece doar trimitemi pic-ului o valoare care el trebuie să o modifică.

Se poate mișca mașina cu ajutorul interfaței dedicate în toate cele 6 direcții, astfel operatorul poate mișca mașina nu doar din joystickuri, ci și din interfața programului. Cu ajutorul acestei mișcări din program se face măsurarea piesei și a sculei.

Cu ajutorul LCD- urilor operatorul are o comunicație cu ajutorul mașinii, deoarece astfel el vede poziționarea și corectitudinea mașinii, dar vede și viteza de așchiere și pasul motoarelor pas cu pas. Cu ajutorul sensorilor ultrasonice se măsoară distanșa aproximată față de limitele mașinii , cu traductorul incremental de rotație se masoară pulsația rotirii care este convertit în distanță. Pe afișsajul cel de tip LCD2004 este afișată poziția absolută a mașinii, distanța măsurată de mașină și distanța convertită din pulsurile traductoarelor incrementali de rotație. Este o comunicare de tip output cu operatorul, astfel el poate vedea corectitudinea mașinii și deplasarea care s-a efectuat. Pe afișajul LCD1602 este afișată viteza de mișcare a motoarelor și pasul cu care se mișcă mașina la o singură mișcare a joystickului.

Mod automat

Controlerul CNC USB oferă o gamă largă de funcții de ieșire și semnal de intrare, care satisface cererea celui mai complex router sau mașină de frezat CNC. Există, de asemenea, câteva caracteristici, cum ar fi măsurarea automată a lungimii sculei, schimbarea automată a sculei, măsurarea offsetului camerei, care accelerează procesul de reglare a prelucrării.

Software-ul CNC USB Controller acceptă toate metodele de compensare a tăierilor pentru operațiile comune de frezare și algoritmi avansați de interpolare, care vă permit să efectuați frezarea 3D a pieselor complexe. Funcționează de asemenea cu fișiere de găurit Gerber și NC. Software-ul suportă codul G de la cele mai importante programe CAM de pe piață.

Software-ul Planet CNC este un software dedicate în special pentru construirea mașiniilor de tip CNC. Acest software rezistă la o mișcare a maxim 4 axe deoadată. În acest proiect s-a folosit doar cele trei principale (X,Y,Z). Software-ul dedicat de catre cei de la Planet CNC recunoaște orice program generat cu ajutorul CAM-urilor. CAM-ul est eprogramul în care se poate executa desenul unei piese și totodată programul cu ajutorul căreia se poate realiza piesa dorită pe o mașină de tip CNC. Programul recunoaște codurile G și M, se poate da offset și dimensiune sculelor, și tot aici se comunică cu mașina unde este situate originea.

Codurile G, care au mai multe variante, au nume commune pentru cele mai utilizate limbaje cu programare de control numeric (CNC). Acesta este utilizat în principal la fabricația asistată de calculator pentru a controla mașinile-unelte automate. Codul G este uneori denumită limbajul de programare G, care nu trebuie confundată cu limbajul de programare G LabVIEW. Limajul G este limbajul cu ajutorul căreia comunică operatorul cu mașina.

Codurile M sunt codurile cu ajutorul căreia operatorul poate să transmite mașinii acțiuni care pornesc sau opresc mașina, pornirea și oprirea fluidului, oprirea și pornirea mașinii. Codul M (pentru funcția "diverse") este o comandă auxiliară unde descrierile variază. Multe coduri M solicită funcții ale mașinii cum ar fi "ușă de lucru deschisă", motiv pentru care unii spun că "M" înseamnă "mașină", ​​desi acest lucru nu a fost în mod intenționat.

Prin program putem trimite mașinii valori specific pentru scule, cum ar fi lungimea și diametrul acestuia, îi putem crea dacă este nevoie offset la scule(offset-ul înseamnă ridicarea sau coborârea sculei față de suprafața prelucrată).

Codurile-G

Tabelul5.1 Codurile G cele mai folosite

Codurile-M

Tabelul5.2 Codurile M cele mai folosite

Rezultate experimentale

Experiment cu pas contstant și viteză constantă pe axa X,Y și Z

Dabs=Distanța absolută

Us1=Distanța măsurată cu senzor ultrasonic I.

Us2=Distanța măsurată cu senzor ultrasonic II.

Us=Us2-Us1

Denc=Distanța măsurată cu ajutorul encoderului

Tabelul6.1 Rezultate experimentale cu pas de 3200 și viteză de 400 pentru axaX

Figura6.1 Simularea mișcării la viteză și pas constant pe axa X

Tabelul6.2 Rezultate experimentale cu pas de 3200 și viteză de 400 pentru axaY

Figura6.2 Simularea mișcării la viteză și pas constant pe axa Y

Tabelul6.3 Rezultate experimentale cu pas de 3200 și viteză de 400 pentru axaZ

Figura6.3 Simularea mișcării la viteză și pas constant pe axa Z

La viteză mica de 400 și pasul 3200 care înseamnă o rotire întreagă a motorului. mișcăriile sunt cu erori mici și destul de precise.

Tabelul6.4 Rezultate experimentale cu pas de 500 și viteză de 1000 pentru axaX

Figura6.4 Simularea mișcării la viteză și pas constant pe axa X

Se poate vedea în simularea de sus, că la această viteză mare este o eroare crescută.

Tabelul6.5 Rezultate experimentale cu pas de 200 și viteză de 3000 pentru axaY

Figura6.5 Simularea mișcării la viteză și pas constant pe axa Y

Tabelul6.6 Rezultate experimentale cu pas de 1800 și viteză de 5000 pentru axaZ

Figura6.6 Simularea mișcării la viteză și pas constant pe axa Z

La viteză mai mare de 1500 sau pas mai mic de 500, valoriile de simulare arată că precizia mașinii este foarte mică deoarece motoarele și driverele sunt pentru viteze mai mici și nici mecanica mașinii nu rezistă la valorile astea mari.

Experiment cu pas contstant și viteză variabilă pe axa X,Y și Z

Pas=500 viteza de la 100-10000

Tabelul6.7 Rezultate experimentale cu pas constant de 500 și viteză variabilă de la 100 la 10000 pe axa X

Figura6.7 Simualre la pas constant de 500 și viteză variabilă pe axa X

Tabelul6.8 Rezultate experimentale cu pas constant de 500 și viteză variabilă de la 100 la 10000 pe axa Y

Figura6.8 Simualre la pas constant de 500 și viteză variabilă pe axa Y

Tabelul6.9 Rezultate experimentale cu pas constant de 500 și viteză variabilă de la 100 la 10000 pe axa Z

Figura6,9 Simualre la pas constant de 500 și viteză variabilă pe axa Z

La viteze mai mari de 1500 mașina nu este atât de precisă, deoarece are abateri mari de la realitate față de valoarea absolută a mașinii pe care ne afișează programul. Astfel am simulat viteza și accelerația mașinii care definește precizitatea .

Experiment cu pas variabila și viteză constantă pe axa X,Y și Z

Tabelul6.10 Rezultate experimentale cu viteză constantă de 1200 și pas variabilă de la 1 la 3200 pe axa X

Figura6.10 Simualre la viteza constanta de 1200 și pas variabilă pe axa X

La viteza de 1200 la orice pas mașina se comportă foarte bine cu erori foarte minimale.

Tabelul6.11 Rezultate experimentale cu viteză constantă de 3500 și pas variabilă de la 1 la 3200 pe axa Y

Figura6 .11 Simualre la viteza constanta de 3500 și pas variabilă pe axa Y

La viteză crescută, mașina nu este deloc precisă, factorul de eroare este foarte amplă.

Tabelul6.12 Rezultate experimentale cu viteză constantă de 500 și pas variabilă de la 1 la 3200 pe axa Z

Figura6.12 Simualre la viteza constanta de 3500 și pas variabilă pe axa Z

La viteza de 500 chiar și axaZ se comportă la performanțe avantajoase știind că partea mecanică a ei este foarte slabă.

Experiment pentru implementarea interpolrii unei cerc de diametrul de 100 mm cu viteză constantă

tms- timpul la care s-a efectuat măsurarea

tirX- valoarea numărului de impulsuri al traductorului în momentul măsurării pe axa X

tirY- valoarea numărului de impulsuri al traductorului în momentul măsurării pe axa Y

Tabelul6.13 Rezultate experimentale pentru interpolarea unui cerc cu viteză constantă

Figura6.13 Simularea pentru interpolarea unui cerc cu viteză constantă

Din diagram de sus se observă mișcarea celor două axe la interpolarea unui cerc cu o viteză constantă de 400. Se poate observa precizia mașinii din grafic, adică pornirea a fost făcut din punctul în care numărul de impulsuri al traductoarelor pe cele două axe a fost 0 și 0, și la terminarea interpolării a ajuns tot la valoare de 1 și -1 . Din aceste date se rezultă ca precizia mașinii este una de (1*5)/400 adică o sutime și doi microni (0,01).

Experiment pentru implementarea interpolrii unei cerc de diametrul de 100 mm cu viteză variabilă

tms- timpul la care s-a efectuat măsurarea

tirX- valoarea numărului de impulsuri al traductorului în momentul măsurării pe axa X

tirY- valoarea numărului de impulsuri al traductorului în momentul măsurării pe axa Y

Tabelul6,14 Rezultate experimentale pentru interpolarea unui cerc cu viteză variabilă

Figura6.14 Simularea pentru interpolarea unui cerc cu viteză variabilă

Se poate observa din graficul de mai sus că și la viteză variabilă mașina are o precizie asemănătoare. Cercul s-a împărțit în patru cvadrante, primul cvadrant cu o viteză dublă de 800, al doile și al patrulea cvadrant cu acceiasși viteză constantă de 400 iar ultimul cvadrant cu o viteză de 200.

Concluzii

În concluzie, putem confirma, că prin ajutorul acestei mașini de frezare de tip CNC s-au efectuat măsurători, care au dat rezultate experimentale eficiente. Importanța acestui proiect se evidențiează prin contribuția realizării unei mașini CNC pentru susținerea lucrării de licență. Realizarea acestei mașini CNC este elaborată atât pe partea mecanică cât și pe partea electrică dar și pe partea de programare. Realizarea individuală la această lucrare, adică construirea mecanică a mașinii, a fost făcută cu ajutorul unei mașini CNC din industrie.

La partea electrică s-a folosit un controler dedicat cu pic, care a fost folosit la partea automată de unde am învățat reglarea unei soft pentru parametrii mașinei construite.Partea manuală a acestei mașini a fost construită în întregime de mine, adică proiectarea pentru măsurarea și coordonarea mașinii individual, elaborat și manual.

Realizăriile personale la studiul de licență a fost întemeierea și proiectarea mașinii pe partea electrică două module diferite- unul pentru partea manuală cu un controler dedicat și partea manuală construită și programată pe Arduino. S-au realizat grafice pentru înțelegerea preciziei și a erorii mașinii. Simulăriile au fost efectuate pentru monitorizarea și evaluarea mișcării a poziție, vitezei și al accelerației.

După aceste studii efectuate am constatat, mașina cu softwarele pe care le are, la viteze mari precizia mașinii este mai slabă, deoarece motoarele pas cu pas au o viteză limitată până unde se pot mișca lin și linear, la fel adevărat și pentru pasul acordat motoarelor.

În principiu mașina de tip CNC a fost un ajutor imens pentru înțelegerea comenziilor și monitorizarea parametrilor de mișcare pentru efectuarea evaluăriilor de mișcare și precizie.

Prin săvârșirea acestei lucrări de licență am învățat programarea și folosirea motoarelor pas cu pas, a driverelor, setarea controlerelor pentru o bună funcționare, afișarea măsurătoriilor cu ajutorul traductoarelor incrementali de rotație, și a senzoriilor. Proiectul a oferit studii despre programarea mișcăriilor pe o mașină CNC atât pe partea manuală cât și pe partea automată.

În concluzie mașina construită pentru comanda și monitorizarea parametriilor unei mașini cu comandă numerică sunt limitate de către părțiile electronice cum ar fii motoarele pas cu pas, driverele care dau impulsurile acestora și desigur controlerele cu ajutorul căreia este simulat și coordonat mașina.

Anexe

Anexa numărul 1

val1 = analogRead(potPin1);

val2= analogRead(potPin2);

if(val1<20)

{ viteza=0;

pas=0;

}

else

viteza=(val1*10000)/1023;

td=(30*1023)/val1;

if(val2<20)

pas=1;

else{

if(viteza==0)

pas=0;

else

{ if(pas>3550)

pas=3600;

else

pas=(3600*val2)/1023;

}

}

lcd1.setCursor(0,0);

lcd1.print("Viteza=");

lcd1.setCursor(10,0);

lcd1.print(viteza);

lcd1.setCursor(0,1);

lcd1.print("Pasul=");

lcd1.setCursor(10,1);

lcd1.print(pas);

Anexa numărul 2

float durationx, distancex;

digitalWrite(trigPinX, LOW);

delayMicroseconds(2);

digitalWrite(trigPinX, HIGH);

delayMicroseconds(10);

digitalWrite(trigPinX, LOW);

durationx = pulseIn(echoPinX, HIGH);

distancex = (durationx/2) / 29.1;

distancex = distancex * 10 ;

Anexa numărul 3

if(buttonStateY1 == LOW && distancey>=80)

{

for(int i=0; i<pas;i++)

{

digitalWrite(DIRY,LOW);

digitalWrite(ENAY,HIGH);

digitalWrite(PULY,HIGH);

delayMicroseconds(td);

digitalWrite(PULY,LOW);

aStatey = digitalRead(outputAy);

if (aStatey != aLastStatey){

if (digitalRead(outputBy) != aStatey) {

countery ++;

} else {

countery –;

}

Serial.print("Position y : ");

Serial.println(countery);

}

aLastStatey = aStatey;

}

pasy=pasy-pas;

}

Schemă electrică a controlerului pe partea automat

Poze cu mașina CNC construită unde se pot vedea ghidajele liniare și suruburile, dar și părțile electronice: motoare pas cu pas, traductoarele incrementali de rotație, senzorii ultrasonice și cablajul mașinii.

Poze cu realizăriile pe partea electrică a mașinii: afișaje , joystcikuri, butoane și potențiometre, cablajul între mașină și calculator.

Bibliografie

Morar Alexandru – Motorul pas cu pas in actionari electrice, Editura universitatii Petru Maior din Tg.Mures, 2004

Specificatii, note de aplicatie, foi de catalog pentru placile de dezvoltare, modulele si circuitele utilizate

www.planet-cnc.com

www.howtomechatronics.com

www.arduino.cc

www.optimusdigital.ro

www.circuitdigest.com

www.qreferat.com

www.engineersgarage.com

Similar Posts