Unul dintre cele mai interesante
site-uri pentru mine, rãmîne www.instructables.com; De aici, m-am inspirat şi am
construit un “miniCNC” cu cheltuieli şi eforturi minime.
Am reuşit sa înţeleg funcţionarea şi sã
experimentez programarea simplistã a unei maşini cu comandã numericã.
Adevãrul este cã am plecat de la modelul “Pocket-laser-engraver “ - adicã un CNC pentru gravat cu diodã laser ( vezi
http://www.instructables.com/id/Pocket-laser-engraver/?ALLSTEPS )
Nu o sã mai descriu construcţia, doarece este suficient prezentatã în site-ul menţionat mai sus.O sã menţionez numai problemele care au apãrut !
Nu o sã mai descriu construcţia, doarece este suficient prezentatã în site-ul menţionat mai sus.O sã menţionez numai problemele care au apãrut !
Deoarece nu am reuşit sã procur o
diodã laser cu care sã pot grava, am adãugat un al 3-lea motor pas cu pas
(de la o unitate de discheta veche) pentru deplasare pe axa Z şi un suport
pentru un pix cu gel, ca sã pot face încercãri
( pânã când voi putea achiziţiona dioda
laser)!
1. Pentru partea mecanicã am mai utilizat douã
unitãti CD-ROM vechi. Au trebuit desfãcute,
modificate şi amplasate pe o planşetã. Suportii şi piesele de complectare le-am fãcut din placã PVC cu grosime de 2 -
2,5 mm lipite cu “picãtura “.
Cea mai dificilã problemã, a fost sã aliniez
subansamblele pe cele 3 axe aşa încât sã
fie asiguratã concurenţa axelor într-un
punct şi perpendicularitatea celor 3 plane. Pentru partea de comandã numericã ,
am utilizat board-ul ArduinoUno şi 3
drivere EasyStepper pentru motoarele pas cu pas;
De
aici au apãrut şi problemele! Pentru motoarele pas cu pas PL15S-020 am
gãsit pe net o fisã tehnicã la eMinebea.com (http://www.kmmotor21.co.kr/pl15s_020.htm).
2 .De reţinut cã tensiunea de lucru maximã la
aceste motoare este de 5v, iar rezistenţa este de 10ohmi pe fazã. Easy Driver
este construit sa meargã de la 6 la 12 V
şi dacã nu tineţi seama de acest lucru , apar neplãceri. Mie nu mi-a
funcţionat sub 7v. Am fost nevoit sã adaptez radiatoare la circuitul integrat
de la Easy Driver pentru cã altfel se încãlzeşte
excesiv 3.Tot la Easy Driver, existã probleme din fabricaţie. Tensiunea de ieşire
pentru CoilA şi , CoilB se regleazã din potenţiometru
(vezi figura). Atenţie : marcajele min şi max de pe cablaj sunt inversate : adicã min este max şi invers!
Trebuie pus voltmetrul si efectuat reglajul cu grijã. Am gãsit specificaţia
asta pe un forum, şi este realã !
In rest , ar fi Ok! Se pot programa micropaşi – în loc de 20 de paşi pe rotatie disponibil la steppere se pot opţine 8x20 = 160 micropaşi pe rotaţie.
Orice conectare /modificare sau
“manevrã de montare” la Easy Driver” trebuie facutã fãrã ca sã fie conectatã
tensiunea!
Trebuie consultatã obligatoriu fişa tehnicã de date!
Se poate gãsi bibliografie la Easy Driver aici:
http://www.robofun.ro/mecanice/driver
Se poate gãsi bibliografie la Easy Driver aici:
http://www.robofun.ro/mecanice/driver
Au urmat etapele pentru soft :
4.Instalarea interpretorului de
comenzi Grbl pe ArduinoUno.
Am fãcut download de la https://github.com/Protoneer/GRBL-Arduino-Library/archive/master.zip , şi am obţinut
librãria necesarã ; dupã dezarhivare, în fişerul README.md am citit
instrucţiunile de instalare:
- se creeazã un
director C:\\
arduino-1.0.3\libraries\GRBL unde se copie sursa dezarhivatã
- se deschide
Arduino-1.0.3;
- se deschide din meniu File
->Examples->GRBL şi trebuie sã regãsiţi douã exemple: ArduinoUno si ArduinoDuemilanove ;
-am deschis exemplul ArduinoUno;
-am fãcut upload la fişierul ArduinoUno
, dar nu mi-a mers din prima încercare !
-am tastat în meniu Sketch->ImportLibrary->
GRBL şi am reuşit sã compilez şi sã încarc programul pe board-ul ArduinoUno!
5.Setarea Grbl ( a interpretorului Grbl)
Setarera se face cu board-ul ArduinoUno cuplat la calculator şi IDE-ul Arduino deschis.
- dacã acum deschizi SerialMonitor (dupã upload) va apare expresia : Grbl 0.8c [ ‘$’ for help]
care confirmã cã interpretorul este funcţional !
Cu comanda '$'+ enter din monitorul serial, se deschide meniul
pentru setarea interpretorului
Grbl.
Explicatii amanuntite pe : http://dank.bengler.no/-/page/show/5474_configuringgrbl?ref=checkpoint
Ce am setat:
Explicatii amanuntite pe : http://dank.bengler.no/-/page/show/5474_configuringgrbl?ref=checkpoint
- am "descoperit" cã stepperul pe axa ox are 20pasi pe rotatie si deplasare mm/1rotatie ax ,
corectie necesarã: (20x8):3=53.33 micropaşi/1mm
- stepperul pe oy are 20paşi/rotaţien si deplasare 4,5 mm/1rotatie ax, corectia este de (20x8):4,5 =35.55micropasi/1mm
la fel, am calculat si corectia pe axa oz;
Am modificat in programul din ArduinoISP succesiv in monitorul serial : $0=53.333 şi enter; apoi $1= 35.55;
Dupã incercri, am erori la deplasare la cifra 3 dupa
virgula (0.003 mm) !
6.Instalarea interfeţei pe
calculator
Am utilizat softul : UniversalGcodeSender-all32 versiunea 1.0.5 conceput in Java, pentru Windows; (download free: https://github.com/grbl/Universal-G-Code-Sender
)
(recomandare si: http://blog.protoneer.co.nz/quick-grbl-setup-guide-for-windows-arduino-g-code-interpreter/ )
Dupã lansarea în execuţie, cu miniCNC-ul
conectat, se selecteazã portul serial (la mine COM3), click pe Open, şi
comenzile devin active .
7.Probe, cu comenzi din taste
De aici , am fãcut încercãri ;
Verific miscarea pe fiecare axã:
Din meniul dreapta sus se poate selecta modul de lucru:
- FileMode pentru incãrcarea
unui program de lucru dintr-un fisier.nc
- Command Mode pentru comenzi in codG din linia de
comansdã
- dacã se bifeazã casuţa EnableArrowKeyMovement, din
MachineJogink se pot face comenzi de deplasare din butoane, dupã ce setãm
marimea deplasãrii la un click din StepSize;
Am lucrat cu ultima variantã , ca sã verific cã miniCNC-ul meu este funcţional
si setat corect: De aici , am fãcut încercãri ;
Verific miscarea pe fiecare axã:
-introduc de la
consolã în linia de comanda
G00 X10 Y10 Z5
apoi şi enter: merge
- introduc de
la consolã în linia de comanda o valoare pentu z ( am masurat cu linearul 10 mm intre pix şi
hîrte) -ca sã lase urma pe hârtie cu pixul şi sã trasez
o linie pe axa x , de 10 mm
G90 X10 Y0 Z10
apoi enter merge
Diferenţa între G90 si G91:
Cu G00 la
comenzi succesive, se executã deplasarea
în coordonate absolute maşinã ( se deplaseazã la fiecare punct nou dupã valorile faţã de origine) :
G90 X10 Y10 Z0 duce în punctul 10; 10; 0 –
coordonate absolute ;
G90 X5 Y5 Z0 – ne trimite in 5,5,0
Cu G91, se
deplaseaza în coordonate relative (se deplaseazã la un punct nou raportat la
coordonatele punctului anterior):
Cu G91 X10 Y10 Z2 ajungem în A(10;10;2)
Urmat de
Cu G91 X5 Z5 Z-2 cu care ajungem in B(15; 15; -0)
Cu G91 X12 Y12 Z3 ajungem
in C( 27; 27; 3)
Ca sã revin la
zero maşina (în origine ) tastez
G90 X0 Y0 Z0
Vreau sã trasez
o linie şi introduc succesiv comenzile :
G91 X5 Y5 Z106 din punctul (5, 5 ,6) Z6 am coborit pixul la hirtie
G91 X10 Y10 Z0 in punctul X15; Y15; Z0
G91 X0 Y0 Z-6 si ridicam pixul
8.Programarea în
G-code şi probe.
Programare CNC
Programare CNC
Am pus pe blog
şio douã progrãmele mici , care pot fi copiate ( se şterg toate comentariile
şi se lasã numai liniile de cod);
Este necesar un
editor de cod G. Eu am folosit CNC Syntax Editor 3.1.0.1119 free trial de la http://www.cnc-syntax-editor.com/ ;
Fişierele scrise le-am salvat cu extensia .nc
Acum , vreau sa desenez un dreptunghi din comenzi interfata:
Drepunghi
G00 (pozitionare
in sistemul de coordonate curent– nu-i miscare de lucru !!)
G90 (miscare in
coordonate absolute )
G21 (seteaza
unitati de masura in mm)
G0 X8.9115
Y27.1111 Z10 (pozitionarte rapida virf in
punctul X;Y;Z)
M03
G1 F40.000000
G1 X31.2531 Y27.1111
G1 X31.2531 Y9.7901
G1 X8.9115 Y9.7901
G1 X8.9115 Y27.1111
M05
G0 X0.000
Y0.000 Z-2 (pozitioneaza virful in
0,0,-2) ca sa nu mai lase urma
M05
M02
Program cerc
G90 comanda
pozitionare in sist curent; cod modal
G21 distante in mm
G0 X33.0688
Y19.7089 Z10.00 deplasare
rapida in punctul specifcat
M03
G1F50.000000
G02 X29.1558
Y10.262 I-13.3599 J-0. interpolare
circulara
G02
X19.7089 Y6.349 I-9.4469 J9.4469
G02 X10.262
Y10.262 I0. J13.3599
G02 X6.349
Y19.7089 I9.4469 J9.4469
G02 X10.262
Y29.1558 I13.3599 J-0.
G02
X19.7089 Y33.0688 I9.4469 J-9.4469
G02
X29.1558 Y29.1558 I-0. J-13.3599
G02
X33.0688 Y19.7089 I-9.4469 J-9.4469
G1 X33.0688 Y19.7089 Z-2.00
M05
G0 X0.000
Y0.000 Z0.00
M05
M02
In final, o observaţie :
- lucrez cu
ArduinoUno ca simplu începãtor, de anul trecut şi merge!
- am fost
curios sã vãd ce înseamnã sã construieşti un sistem cu comandã numericã, ce probleme sunt.
- pînã la
urmã am reuşit sã gãsesc varianta cea mai ieftinã şi uşoarã de abordat pentru mine;
- chiar dacã
“mecanismele” sânt refolosite şi cu uzuri, şi-au îndeplinit
scopul, adicã sã înţeleg “ce,cum,
şi care e drumul de parcurs ” – sau într-un limbaj
mai elevat: cercetare bibliograficã, muncã multã, încercãri,
experimentare ;
Acum, chiar cã ar merge şi o investiţie
serioasã, într-o maşinã care sã execute prelucrãri !
Bravo!Felicitari!Articolul tau este un punct de plecare si pentru mine.Multumesc.
RăspundețiȘtergere