Realizzazione CNC – Software di controllo (parte 1)

Ciao ragazzi!! Come annunciato nello scorso articolo oggi vi parlerò un po’ del programma della CNC sviluppato su Linux utilizzando le librerie di .NET Core.

.NET Core

Una piccola introduzione sull’argomento: .NET Core è stato creato in modo da poter essere utilizzato su differenti sistemi operativi, è open source ed è modulare ossia consente di scaricare e utilizzare solamente quelle librerie che possono ritenersi necessarie per i propri scopi.

Visual Studio Code

Dunque per me, che sono uno sviluppatore Linux, è stato molto comodo poter usare C# per creare il mio programma. Inoltre Microsoft ha creato una versione “ridotta” di Visual Studio che può essere usata anche su sistemi non Windows: Visual Studio Code. Tramite questi strumenti è quindi possibile scrivere un programma portabile su diversi sistemi operativi compatibili con .NET Core.

Molti potranno chiedersi perchè ho implementato un software personalizzato e non ne ho utilizzato uno esistente. La risposta è semplice: mi è servito per imparare come funzionano le cose, ad esempio come si controlla un motore passo-passo o come risolvere via software eventuali imperfezioni meccaniche della macchina. Per questo motivo non solo non ho usato un software già esistente ma non ho nemmeno utilizzato nessuna libreria in generale (ad esempio WiringPi)!

Panoramica del software di controllo

Passiamo alle questioni pratiche! 😁

Al momento la macchina non supporta il formato GCode (per maggiori informazioni: http://passionecnc.altervista.org/showthread.php?tid=7) ma è una funzionalità che mi piacerebbe riuscire ad implementare in futuro in quanto rappresenta uno standard nel mondo delle macchine a controllo numerico siano esse CNC o stampanti 3D. Al momento quindi utilizzo solo immagini (.png, .jpg, ecc…) per caricare i progetti da realizzare sulla macchina.

Il programma della CNC è un programma a console, senza interfaccia grafica (che potrà eventualmente essere implementata in un secondo momento) che offre tutte le logiche di base necessarie a controllare la macchina tra cui:

  • il controllo dei GPIO del Raspberry;
  • l’elaborazione di un immagine;
  • permette di scegliere la modalità di elaborazione dell’immagine (solo il contorno, l’intero o la modalità per realizzare i fori);
  • in futuro sarà aggiunta anche la possibilità di scegliere il materiale su cui lavorare (legno, plastica, metalli, ecc) andando a modificare i parametri della CNC adattandoli al tipo di lavorazione;
  • auto livellamento dell’utensile rispetto alla superficie del materiale da lavorare;
  • controllo della velocità di rotazione del motore del trapano.

Per quanto riguarda il primo punto dell’elenco c’è da dire che i primi esperimenti li ho fatto in Python in quanto esistono già delle librerie native che permettono di controllare i GPIO. Ho poi implementato in C# una classe che replica i principali comandi Python relativi ai GPIO.

Come già detto il programma della CNC non è ancora finito, ma presto spero di riuscire ad introdurre tante altre funzionalità. Al momento comunque contiene abbastanza funzioni per permettermi di portare a termine il mio primo vero progetto… 🤩