martedì 17 novembre 2015

CNC Laser DIY - taratura automatica con sensore di prossimità LJC18A3-H-Z/B

Rieccomi con nuovi aggiornamenti sulla mia cnc combo (fresa + laser) che ahimè è diventata solo laser.

Mi sono reso conto solo averla finita e testata di aver sopravvalutato alcuni aspetti che mi hanno portato alla difficile decisione di convertirla unicamente in incisore laser.
Ho dedicato un apposito articolo sulle criticità riscontrate.

In compenso gli ho fatto un'interessante upgrade che voglio condividere con voi.

L'ho dotata di un sensore di prossimità LJC18A3-H-Z/B (0-10 mm) per poter regolare in modo automatico la distanza tra laser e pezzo da lavorare.
Inizialmente regolavo la distanza del laser a mano aiutandomi con un blocchetto di cartone che posizionavo tra laser ed il pezzo ed abbassando l'asse Z di 1 mm alla volta. Questa operazione era lunga, noiosa e non sempre affidabile.

Il fascio di luce emesso dai moduli laser non è un sottile punto a larghezza fissa ceh si estende per kilometri  ma è una fascio largo che tramite una o due lenti viene collimato in un punto ben preciso formando una sorta di cono; nel punto più piccolo è concentrata tutta la potenza del laser. E' quindi fondamentale fare in modo che la distanza tra la lente ed il pezzo sia sempre regolata per avere la massima potenza.

Tempo fa un collega è stato così gentile da regalarmi (senza che gli chiedessi niente) un sensore di prossimità perchè ne aveva comprati due per la sua stampante 3D e gliene avanza uno, così ho deciso di dargli un destino.





  
Il funzionamento di questo sensore (adesso che l'ho capito) è molto semplice, in pratica sente se un oggetto è nelle sue vicinanze attivando un impulso elettrico. un pò come quello delle auto solo che questo può sentire oggetti anche non metallici entro il centimetro di distanza.

L'idea di base è quella di utilizzarlo come fosse un finecorsa per eseguire l'homing della macchina cos' l'ho collegato ai pin di arduino incaricati di gestire il limite dell'asse Z.

Poi per completare il lavoro ho modificato le librerie GRBL per non far eseguire l'homing su tutti gli assi ma solo su Z.

Ho tarato il sensore per farlo lavorare ad una distanza di 1mm poi nei settaggi di GRBL gli ho impostato l'altezza desiderata.

Andiamo per gradi e vediamo passo passo come procedere...

Il sensore lavora tra 6 e 36 Volt,  ha 3 fili (Marrone, Nero e Blu) e l'ho alimentato con i 12 Volt di un alimentatore per computer.
  • Marrone (positivo +) 12 V
  • Blu (negativo -)
  • Nero (segnale negativo)
Se applichiamo tensione tra marrone e blu il sensore non fa nulla ma appena avviciniamo la parte arancione ad un oggetto ed entriamo entro la distanza di 1 cm si accende un led posto in cima al sensore e tra il cavo nero e  marrone si può misurare la stessa tensione in ingresso.

Quindi ho collegato un vecchio relè a 12 Volt ai cavi marrone e nero e quando il sensore capta un oggetto il relè scatta attivando dei contatti.


una volta capito il funzionamento diventa tutto in discesa perché il relè si sta comportando proprio come un finecorsa.

Questo è lo schema di collegamento che ho adottato:



Relè

Dopo aver terminato i collegamenti sono andato nei sorgenti delle librerie GRBL ed ho aperto il file: config.h
Alla riga 76 (circa) c'è un parametro chiamato HOMING_CYCLE_1




Tale parametro serve per attivare l'homing rispettivamente sugli assi X e Y.
Ho commentato il parametro con due barre // e salvato il file...
E' necessario ri-uploadare le librerie su Arduino tramite l'apposito IDE.
Da adesso la cnc eseguirà l'homing solo sull'asse Z.

Subito dopo ho modificato i parametri delle GRBL.
Digitando il comando $$ nella console di Universal Gcode Sender compare un elenco di parametri e quelli che servono per questa funzionalità vanno da $22 a $27

$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=100.000 (homing feed, mm/min)
$25=20.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)

$22 abilità la funzionalità di homing

$23 serve per invertire il movimento degli assi nel caso in cui l'homing sia dalla parte opposta; nel mio caso l'asse Z faceva l'homing verso l'alto per cui ho dovuto settare questo parametro binario in questo modo: 00000111

$24 specifica a che velocità deve andare l'asse per raggiungere il punto di home

$25 specifica a che velocità deve andare l'asse per sfiorare il punto di home

$26 (se ho ben capito) sono i millisecondi che passano subito dopo aver raggiunto il punto di homing per poi tornare indietro e riavvicinarsi con velocità più bassa

$27 è la distanza alla quale allontanarsi dal punto di homing una volta intercettato; ne mio caso ho impostato 26 (mm) che è la distanza che voglio ottenere tra laser e pezzo da lavorare.

Su Universal Gcode Sender per eseguire l'homing e quindi la calibrazione della distanza sarà sufficiente andare nella schermata dei comandi manuali e digitare $H (invio)

questo e quello che succederà...



Grazie per la lettura