FORUM: Robotica, CNC, 3D
Finalmente un posto dove poter discutere di robotica di CNC e stampanti 3D, scambiarsi idee, progetti ed opinioni. Partecipa anche tu...
Voglio provare a fare una piccola lezione di Gcode, vediamo se può interessare, o se è troppo incasinato. E' un po' lunghetto, vediamo se qualcuno arriva in fondo.
Ma, invece di iniziare da 0, lo faccio con una Utility.
Vediamo come fare per verificare il parallelismo del piano di lavoro con gli assi.
Questo è solo un modo di farlo, con linuxCNC si possono utilizzare delle variabili e visualizzare i valori registrati in un display nel monitor.
Per fare questo lavoro si utilizza il probe, che può essere un probe vero e proprio, oppure una semplice punta nell'elettromandrino; importante è che ci sia il piano collegato a massa ed il probe collegato all'ingresso probe del controller, nel mio caso è collegato ad un pin della parallela e in linuxCNC si setta quel pin come probe, appunto.
Per quanto riguarda il piano collegato a massa, se è di metallo non c'è problema, altrimenti si usa ad esempio, un pezzetto di scheda saldandoci un filo, e spostandolo man mano sotto la sonda.
Logicamente la macchina è stata prima azzerata.
Vediamo il programma:
; Controllo parallelismo piano
G21 G17 G64 G90
;azzeramento con spessore da 1,5mm
; partire da angolo basso sx
All'inizio di un programma va comunicato al controller come lavorare.
Troviamo delle righe che iniziano con un -;- significa che sono nostri commenti
La seconda riga dice che:
G21 - comunica al controller che le misure che seguono sono in millimetri (G20 per pollici)
G17 - definisce il piano come XY - può essere tralasciato perchè è di default
G64 - utilizzare la migliore velocità possibile
G90 - valori in modalità di distanza assoluta (G91 per incrementale)
E' da notare che vi sono più codici G sulla stessa riga, questo è possibile quando sono di tipo diverso e perciò non vanno in contrasto tra loro.
G0 Z3 ; prima posizione
X0 Y0 ; azzerare X Y
G0 Z3 - G0 definisce un movimento lineare alla massima velocità preimpostata qui muove l'asse Z e lo alza in zona sicurezza, in questo caso a 3mm
X0 Y0 - la velocità rimane a G0 finchè non viene cambiata, non c'è bisogno di riscriverla, gli assi X e Y muovono a 0 - in basso a sinistra-
G1 F30
G38.2 Z-10 ;scende al max 10mm
G92 Z0 ;azzera
G4 P5
G0 Z3
in questa parte si azzera l'asse Z, nella posizione X0 Y0
G1 F30 - G1 definisce un movimento lineare alla velocità impostata in F (mm/m)
G38.2 Z-10 - fa scendere il probe verso il piano. In Z è definita una distanza di sicurezza quando la sonda tocca il target si ferma, se non lo tocca si ferma a -10 e dà errore.
G92 Z0 - l'asse Z viene azzerato alla posizione attuale
G4 P5 - fa una pausa di tempo P (sec)
G0 Z3 - porta la sonda velocemente in posizione di sicurezza.
X 400 ;***** angolo basso dx da correggere il valore
G1 F30
G38.2 z-10 ;scende al max 10mm
G4 P5 ;pausa per leggere la posizione
G0 Z3
.
Ci portiamo nell'angolo in basso a destra e controlliamo la differenza del piano rispetto al punto precedente
X400 - angolo a destra, modificare a seconda del proprio piano, andiamo a massima velocità perchè siamo ancora in G0
Y -non lo abbiamo definito perciò rimane a 0, come era precedentemente
ripetiamo la discesa ma non c'è più il G92 perchè non dobbiamo azzerare ma nella pausa prendiamo nota della differenza.
Y 300 ;***** angolo dietro dx da correggere il valore
G1 F30
G38.2 z-10 ;scende al max 10mm
G4 P5 ;pausa per leggere la posizione
G0 Z3
X 0 ;***** angolo dietro sx
G1 F30
G38.2 z-10 ;scende al max 10mm
G4 P5 ;pausa per leggere la posizione
G0 Z3
ripete per gli angoli in alto a destra e a sinistra
X0 Y0 ; ritorna a 0
M2 ; fine del programma
In pratica con questo programmino:
- azzeriamo l'asse Z in un angolo del piano, controlliamo la differenza negli altri 3 estremi, come fosse un micrometro. Regoliamo di conseguenza il piano e ripetiamo il controllo, sarà da ripetere parecchie volte.
Ecco il programma completo.
; Controllo parallelismo piano
G21 G17 G64 G90
G0 Z3 ; prima posizione
;azzeramento con spessore da 1,5mm
; partire da angolo basso sx
; azzerare X Y
X0 Y0
G1 F30
G38.2 z-10 ;scende al max 10mm
G92 z0 ;azzera
G4 P5 ;
G0 Z3
X 400 ;***** angolo basso dx
G1 F30
G38.2 z-10 ;scende al max 10mm
G4 P5 ;pausa per leggere la posizione
G0 Z3
Y 300 ;***** angolo dietro dx
G1 F30
G38.2 z-10 ;scende al max 10mm
G4 P5 ;pausa per leggere la posizione
G0 Z3
X 0 ;***** angola dietro sx
G1 F30
G38.2 z-10 ;scende al max 10mm
G4 P5 ;pausa per leggere la posizione
G0 Z3
X0 Y0
M2
rbacchi
postato il: 25.02.2021, alle ore 20:07
Grazie! Interessante.
Esiste un pdf sul gcode orientato specialmente alle cnc amatoriali?
Se lo puoi fare fallo e non t'arrabbiare,
se non lo puoi fare, pazienza e non t'arrabbiare
No, non ne ho mai trovati, si trova l'RS274 che è quello delle macchine tipo Fanuc, oppure in inglese c'è il sito di linuxcnc.
Il GCode è praticamente lo stesso, solo che l'RS274 comprende tante funzioni che nelle amatoriali non sono supportate.
Ad esempio nella gestione delle macro o sottoprogrammi ognuno ha il suo metodo.
Il programmino di sopra è scritto in modo semplice però è possibile
-- usare delle variabili (parametri) per quei dati che cambiano a seconda della macchina
-- usare delle macro per quelle righe che sono ripetitive
guzzj
postato il: 26.02.2021, alle ore 17:15
ho provato il tuo codice adattandolo alle misure del mio piano, funziona bene ed è comodo, l'unica dosa che non ho capito come mai il comando di pausa G4 P5 funziona, nel senso che in teoria la P è in millisecondi, invece S è in secondi, cambiando il comando in G4 P5000 mi dà sempre la pausa di 5 secondi.
Non è obbligatorio usare il paracadute, ma ricorda, lo puoi fare una volta sola.
The P number is the time in seconds that all axes will remain unmoving. The P number is a floating point number so fractions of a second may be used. G4 does not affect spindle, coolant and any I/O.
G4 Example Line
G4 P0.5 (wait for 0.5 seconds before proceeding)
Per quanto rigurarda il P5000 ci deve essere qualche errone nella tua applicazione, sicuro di aver aggiornato?
Per quanto riguarda invece la S, è la velocità dell'elettromandrino
M3 S10000 fa partire l'elettromandrino alla velocità di 10000 giri/min
guzzj
postato il: 27.02.2021, alle ore 09:34
scoperto l'arcano, sulla scheda avevo installato marlin cnc, nelle stampanti rep rap il comando g4 usa p in millisecondi e s per i secondi, dipende dal firmware installato come sono abilitati i comandi.
Non è obbligatorio usare il paracadute, ma ricorda, lo puoi fare una volta sola.
Dj_MeCs
postato il: 11.04.2021, alle ore 18:47
Se a qualcuno puo' interessare, Roland mette a disposizione gratuitamente una guida molto interessantee ben fatta (in inglese ovviamente, ma è gia tanta manna che non sia in giapponese) sevolete darle un occhio vi lascio il link
Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito