Realizzazione CNC – Software di controllo (parte 2)

Ciao a tutti!! Finalmente trovo del tempo per continuare il blog 😄

Riprendiamo da dove ci eravamo interrotti… in questo articolo cercherò di spiegarvi come effettivamente lavora la CNC.

Settaggio delle impostazioni per la CNC

Come prima cosa, dopo aver avviato il programma, la macchina deve essere calibrata, pertanto vanno settate le seguenti impostazioni:

  1. Dimensioni dell’immagine in mm;
  2. DPI (risoluzione dell’immagine);
  3. Larghezza reale dell’immagine in mm;
  4. Spessore sonda in mm;
  5. Profondità del passo iniziale (default 0,1 per PCB);
  6. Altezza per il trasferimento (default 15);
  7. Profondità di ogni passo (default 0,02 per PCB);
  8. Profondità totale (default 0,2 per PCB);
  9. Diametro della punta da usare.

A parte i primi tre punti e il nono che sono abbastanza esplicativi, vediamo nel dettaglio le altre impostazioni:

  • Spessore sonda: è lo spessore della sonda metallica che fa da sensore e serve per il livellamento automatico della CNC rispetto al piano di lavoro;
  • Profondità passo iniziale: profondità iniziale della punta. Questo valore va impostato anche in base al materiale su cui si sta lavorando e non è detto che il passo iniziale sia uguale a quelli successivi;
  • Profondità ad ogni passo: profondità della punta nei passi successivi al primo;
  • Profondità totale: profondità totale che la punta deve raggiungere per completare la lavorazione;
  • Altezza trasferimento: è l’altezza alla quale si deve trovare la punta quando non deve lavorare per trasferirsi da un punto all’altro del pezzo.

Output del programma

Dopo aver impostato tutti i dati richiesti la macchina comincia ad caricare l’immagine scelta al momento dell’avvio del programma e successivamente inizia ad inciderla sul materiale (ora come ora la CNC lavora su legno, rame e plexiglas).

Current position X=0,000mm Y=0,000mm Z=0,000mm
Place probe for depth detection and press ENTER.
Step=0,00500
(0,000, 0,000, 0,000)
(0,000, 0,000, -15,000)
Place the tip and press INVIO.
Current position X=0,000mm Y=20,000mm Z=0,000mm
Place probe for depth detection and press ENTER.
Step=0,00500
(0,000, 20,000, 0,000)
(0,000, 20,000, -15,000)
Place the tip and press INVIO.
Current position X=20,000mm Y=20,000mm Z=0,000mm
Place probe for depth detection and press ENTER.
Step=0,00500
(20,000, 20,000, 0,000)
(20,000, 20,000, -15,000)
[ (-0,0500, 0,0500), (0,0500, 0,0000) ]

Matrix creation in progress…
Press ENTER to start processing…
PRESS THE 'S' KEY TO FINISH PROCESSING

Questo è l’output che appare appena prima dell’avvio della CNC e indica la procedura di autolivellamento del piano di lavoro.

Algoritmo di elaborazione dell’immagine

L’algoritmo che permette di elaborare l’immagine assegna ad ogni pixel della figura un numero, che fa riferimento ai “passi” fatti fino a quel momento dalla punta.
Man mano che la CNC incide/disegna l’immagine a video appare l’avanzamento del lavoro:

I pixel verdi sono quelli già incisi e quello rosso indica il prossimo pixel che sarà elaborato.

Potrebbe sembrare un algoritmo semplice ma in realtà ci sono diverse cose da tenere in considerazione che ne complicano la realizzazione:

  • Ottimizzare i movimenti della macchina cercando il percorso dei pixel più efficiente;
  • Migliorare il controllo dei motori, ovvero rendere più fluido il loro movimento senza farli “scattare” durante la creazione dell’immagine per evitare ulteriori vibrazioni;
  • Essendo la macchina fatta a mano non è certamente perfetta dal punto di vista dell’allineamento delle parti che la compongono, la squadratura degli assi e il livellamento del piano di lavoro. Quindi ho cercato di risolvere o almeno ridurre questi problemi strutturali tramite il software di controllo.

Questo video mostra esattamente cosa accade mentre la macchina analizza l’immagine e la disegna:

Conclusioni

Ad oggi il programma non è ancora finito, ci sono sempre delle migliorie da poter fare ma sono comunque soddisfatto del risultato ottenuto.

Ora quello che vorrei provare a fare è confrontare il mio programma con uno di quelli disponibili per Arduino in modo da analizzarne il funzionamento e capire dove posso migliorare il mio. 🙂

Restate sintonizzati! 👋👋👋