Non ci sono prodotti a carrello.
Presentiamo una scheda, basata su un Arduino Nano, completa di tutte le funzionalitร hardware e software per pilotare macchine CNC a tre assi
Negli ultimi anni la riduzione dei costi delle parti meccaniche e la progettazione di piccole macchine CNC (Computer Numerical Control) dedicate espressamente alla realizzazione artigianale di PCB, hanno dato il via ad una proliferazione di progetti riguardanti la meccanica da un lato e lโelettronica di controllo dallโaltro.
Fondamentalmente, una CNC atta a produrre circuiti stampati, del tipo a tre assi, รจ costituita da: struttura di supporto, realizzata in genere in alluminio o in PVC, un piatto per il fissaggio del PCB, una serie di barre cilindriche in acciaio cromato, tre motori passo-passo, un elettromandrino (spindle), una scheda elettronica per il controllo dei tre motori, un alimentatore idoneo e tutti i necessari accessori per lโassemblaggio della macchina.
Quasi tutte le CNC progettate per uso hobbistico sono vendute in kit, anche se alcuni fornitori piรน attrezzati propongono in alternativa la versione giร montata.
Come sempre, in questi casi, si puรฒ trovare materiale di eccellente qualitร , con prestazioni considerevoli, ma anche prodotti che spesso non valgono nemmeno il poco denaro richiesto per il loro acquisto. Ma se la componente meccanica รจ facilmente valutabile anche solo guardando le immagini del prodotto e leggendo le specifiche tecniche dei motori e, soprattutto, dello spindle, quando si tratta della scheda elettronica di controllo, le cose cambiano molto, in quanto bisogna conoscere il tipo e versione di firmware adottato e, di conseguenza, tutte le opzioni disponibili, in aggiunta al solo pilotaggio dei tre motori passo-passo e dello spindle.
Vi anticipiamo subito che, nel nostro caso, abbiamo usato una meccanica CNC, in grado di fare lavorazioni da 200x180x60 mm, reperibile con il codice CNC2018 (Fig. 1), mentre per la scheda elettronica che vi presentiamo in questo articolo, abbiamo adottato il firmware open source GRBL v1.1.h, ultima versione disponibile nel momento in cui scriviamo, scaricabile dalla pagina https://github.com/gnea/grbl/releases.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.1.png)
Fig. 1 Il modello di CNC usato nelle nostre prove
In queste pagine realizzeremo il controller per CNC e vi insegneremo a programmarlo in modo ottimale per la meccanica che sceglierete di adottare, usando come esempio la CNC2018 che rimane la scelta ottimale per realizzare PCB.
Descrizione del progetto del Controller universale per CNC
Il progetto della nostra scheda รจ basato proprio sulla versione GRBL 1.1, della quale abbiamo sfruttato ogni caratteristica, portando allโesterno tutti i vari ingressi ed uscite del microcontrollore, che andremo poi ad illustrare.
Abbiamo inoltre previsto la possibilitร di utilizzare un accessorio che si reperisce facilmente in commercio, un controller offline, dotato di un proprio microcontrollore, un piccolo display LCD ed alcuni pulsanti, che permette di caricare il file da fresare in una micro SD card e di gestire le principali fasi dellโincisione mantenendo il PC scollegato, una cosa molto utile in alcune situazioni.
Infine, per permettere una agevole riparazione, in caso di guasti, abbiamo fatto ricorso a due moduli esterni, per il microcontrollore e per lโalimentazione generale, invece di prevedere tutta la componentistica sul PCB principale.
Moduli integrati
Il cuore del nostro controller รจ costituito da una board Arduino NANO v.3, che va innestata su una coppia di HEADER presenti sul PCB principale.
Arduino si occupa di gestire, tramite il firmware al quale abbiamo accennato, tutti i segnali in entrata ed in uscita.
I pin I/O della board sono interfacciati con i tre driver per i motori passo-passo, il connettore per il controller offline, il connettore per i controlli esterni ed il circuito di comando dello spindle.
Vediamo una panoramica dei collegamenti dei pin:
D2รทD7: gestiscono i comandi STEP e DIR dei driver dei tre motori degli assi X, Y e Z;
TX1 e RX0: sono i pin utilizzati per il collegamento seriale con il controller offline;
RESET: รจ il reset del micro, controllabile sia dal controller offline che mediante il connettore esterno;
D8: gestisce lโENABLE dei driver dei tre motori degli assi X, Y e Z;
D9, D10 e D12: vanno al connettore esterno e servono per controllare il comportamento degli switch di finecorsa opzionali dei tre assi X, Y e Z;
D11: gestisce il segnale PWM per il controllo della velocitร dello spindle;
D13: va al connettore esterno e serve per cambiare la direzione di rotazione dello spindle;
A0: va al connettore esterno e serve per dare il comando di ABORT (stop) alla macchina;
A1: va al connettore esterno e serve per dare il comando di FEED-HOLD (pausa lavoro) alla macchina;
A2: va al connettore esterno e serve per dare il comando di CYCLE-START-RESUME (ripresa lavoro) alla macchina;
A3: va al connettore esterno e serve per pilotare una ventola esterna quando viene fornito il comando di COOLER ENABLE (abilitazione raffreddamento);
A5: va al connettore esterno e serve per ricevere il segnale della sonda (PROBE) di controllo della posizione dello spindle;
A4, A6 e A7: non sono utilizzati, ma sono portati sul connettore esterno, come predisposizione per usi futuri.
Lโaltro modulo che abbiamo utilizzato รจ quello di alimentazione, uno switching di tipo step-down da 5 A, il cui costo รจ decisamente inferiore a quello dei singoli componenti, se li avessimo previsti direttamente sul PCB.
Iniziamo la descrizione dello schema elettrico proprio da questโultimo. Intanto diciamo subito che il modulo sarร necessario solo se lo spindle della vostra CNC dovrร lavorare a tensioni superiori a 12 Vdc, in caso contrario non servirร e si potrร alimentare il controller direttamente con un alimentatore esterno da 12 V, in grado di erogare una corrente sufficiente per lo spindle e per i tre motori.
In questo caso occorrerร collegare tra loro, mediante un ponte, i fori E1 ed E4 presenti sul PCB, usando uno spezzone di filo di diametro adeguato per lo scorrimento di una corrente di circa 5 A. Nel nostro caso lo spindle (cod. ELEMANDER11) richiede una tensione di 36 V, che otterremo da un alimentatore esterno, come il modello MW35036, che ha 350 W di potenza.
Questa tensione, applicata allโingresso POWER del controller, provoca lโaccensione del LED rosso LD1, ed รจ applicata al circuito di alimentazione dello spindle, costituito dal mosfet Q1, con i suoi resistori di polarizzazione, alcuni condensatori, due diodi schottky e due induttori di potenza; il mosfet, un IRLZ44NSPBF in formato D2PACK, viene pilotato dal segnale SPINDLE PWM (pin D1 di Arduino NANO), in modo da poter regolare agevolmente la velocitร di rotazione dello spindle, senza perdita di potenza. Quando il mosfet va in conduzione si accende il LED blu LD4.
Il modulo step-down, prima di essere saldato sul PCB, dovrร essere alimentato alla tensione richiesta dal vostro spindle e tarato, tramite il trimmer di precisione, per avere sullโuscita una tensione di 12 V.
Tale tensione fa accendere il LED arancione LD2 sul PCB principale, e serve per alimentare i tre motori passo-passo degli assi X, Y e Z, mediante i driver DRV8825; essa รจ inoltre presente sul connettore 12V_OUT come tensione di servizio che, nel nostro caso, sarร usata per alimentare una ventola di raffreddamento per i tre driver e, se necessario, per lo stesso modulo step-down.
Questa tensione viene poi applicata al circuito regolatore lineare costituito da IC1, un 7805 in formato TO252, e da alcuni condensatori con funzione di filtro (C1 e C4) e anti-autooscillante (C2 e C3) che ci permette di avere una tensione stabile e ben filtrata di 5 V, la cui presenza รจ indicata dallโaccensione del LED verde LD3.
Tale tensione serve per alimentare i tre driver DRV8825 ed รจ anche presente sul connettore esterno e su quello del controller offline, per alimentarne il circuito elettronico.
Lโuscita del modulo switching non viene applicata direttamente al 7805, in serie abbiamo previsto un diodo schottky 1N5819 (D1) al fine di evitare ritorni di tensione dal condensatore C1, che potrebbero danneggiare il modulo switching; inoltre la caduta di tensione di circa 0,4 V diminuisce leggermente la dissipazione di potenza del 7805, dovuta al drop-out (differenza di tensione tra ingresso ed uscita del regolatore) di 7 V, ridotto in tal modo a 6,6 V.
Una funzione simile รจ svolta dal diodo D2, che porta lโalimentazione al pin VIN di Arduino NANO, alimentando la board; i condensatori C17 e C18 svolgono le stesse funzioni di quelli usati a monte del 7805. La tensione di 12 V applicata allโArduino NANO, viene ridotta al suo interno a 5 V, necessari per alimentare il microcontrollore ATmega328P-AU, e viene portata sul pin 12 (da noi denominato 5V_2) della stessa board.
Per evitare che eventuali disturbi, provocati dal modulo switching, dai motori passo-passo o dallo spindle, possano provocare malfunzionamenti allโArduino NANO, a questo pin abbiamo collegato un filtro antidisturbo, costituito dai quattro condensatori C19รทC22.
Al pin 6 del connettore J11, destinato al controller offline, abbiamo collegato il LED giallo LD5, che si accenderร ad ogni comando impartito tramite i pulsanti del controller oppure tramite il programma di gestione della CNC (Candle), in pratica รจ un visualizzatore dellโattivitร della comunicazione seriale con Arduino NANO.
Approfondiremo lโuso di questo accessorio opzionale alla fine di questo articolo.
La ricca dotazione di LED, ben cinque, รจ fondamentale per tenere costantemente sotto controllo tutte le tensioni coinvolte nel funzionamento del nostro controller e delle periferiche esterne ad esso collegate; per comoditร riportiamo lโelenco completo nella Tabella 1.
Per il nostro controller abbiamo utilizzato tre driver di tipo DRV8825 prodotti dalla POLOLU (Fig. 2).
![](https://futuranet.it/wp-content/uploads/2023/02/figur.2.jpg)
Fig. 2 Il driver POLOLU DRV8825
![](https://futuranet.it/wp-content/uploads/2023/02/tab.1.jpg)
Tabella 1 Tabella dei LED
Per pilotarli correttamente servono sette pin del micro da collegare ai segnali ENABLE (D8), STEP (D2รทD4) e DIR (D5รทD7); i primi (pin 1) sono tutti collegati al pin D8 di Arduino NANO, tramite il resistore R17 in serie, e sono mantenuti a livello HIGH da R16, un resistore con funzione di pull-up (collegato allโalimentazione del driver); gli STEP (pin 7) sono collegati ai pin D2, D3 e D4, mentre i DIR (pin 8) sono collegati ai pin D5, D6 e D7.
I pin RESET (5) e SLEEP (6) di ogni driver sono cortocircuitati tra loro. I pin M0, M1 e M2 (2,3,4) servono per settare la risoluzione degli step, in base alla tabella della Tabella 2.
![](https://futuranet.it/wp-content/uploads/2023/02/tab.2.png)
Tabella 2 Tabella dei settaggi del DRV8825
In pratica la condizione di M0-M1-M2 in LOW rappresenta la minima risoluzione, in quanto ad ogni impulso corrisponde uno step completo del motore; nel nostro caso, poichรฉ serve la massima precisione possibile, abbiamo settato M0-M1-M2 su HIGH, mediante i resistori di pull-up R7, R10 e R13; in tal modo ad ogni impulso corrisponderร una rotazione del motore di 1/32mo di passo.
I pin VMOT (12) vanno collegati ai 12 V, per lโalimentazione del motore; i condensatori C12, C15 e C16 da 100 ยตF, sono fortemente consigliati dal datasheet del driver, per la protezione contro eventuali spike dovuti al motore. I pin FLOAT (10) vanno collegati ai 5 V, con la coppia di condensatori di filtro C13 e C14 verso massa; i pin GND1 e GND2 vanno collegati alla massa generale del circuito.
I pin 11 (2A), 12 (1A), 13 (1B) e 14 (2B) di ogni driver, collegati ai connettori J7, J8 e J9, sono destinati agli avvolgimenti del motore, vedremo poi come realizzare i tre cavetti.
Il piccolo trimmer SMD presente sulla scheda del driver serve per la taratura in corrente, vedremo questa cosa nella sezione della realizzazione pratica.
Il connettore esterno รจ costituito da una barra strip a doppia fila a 90ยฐ, con 17+17 contatti; una delle due file ha tutti i pin collegati a massa, in quanto i corrispondenti pin dellโaltra fila, per svolgere la loro funzione, vanno appunto collegati a massa, mediante opportuno contatto.
Per esempio, il pin PROBE, presente sul pin 14, viene riconosciuto dallโArduino come segnale, nel momento in cui viene cortocircuitato a massa, mentre il segnale COOLER ENABLE, che รจ un segnale in uscita, quando viene attivato dallโArduino passa da LOW ad HIGH, sempre rispetto a massa.
I pin del connettore esterno collegati ai pin analogici A0รทA7, hanno un condensatore da 100 nF verso massa, con funzione di filtro antidisturbo; i tre pin destinati agli switch di finecorsa sono dotati dei gruppi RC R18-C24, R19-C25 e R20-C26, che svolgono la funzione anti-debounce, per evitare false segnalazioni di finecorsa.
Schema elettrico del Controller universale per CNC
Elenco Componenti:
R1, R6: 8,2 kohm (0805) R2: 2,2 kohm (0805) R3, R23: 1 kohm (0805) R4: 10 ohm (0805) R5, R7, R10, R13, R16: 10 kohm (0805): R8, R9, R11, R12, R14, R15, R17, R18, R19, R20, R21, R22: 100 ohm (0805): C1, C12, C15, C16, C18: 100 ยตF 25 V elettrolitico (ร 6,3 mm): C13: 100 ยตF 16 V elettrolitico (ร 6,3 mm) C4: 10 ยตF 16 V elettrolitico (ร 4 mm) C6, C14, C17: 10 ยตF ceramico (0805) C5, C10, C11, C22: 1 ยตF ceramico (0805) C2, C3, C7, C8, C9, C19, C20, C21, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34, C35, C36 : 100 nF ceramico (0805) D1, D2: BAT42W-7-F D3, D4: SS56B LD1: LED rosso (0805) LD2: LED arancione (0805) LD3: LED verde (0805) LD4: LED blu (0805) LD5: LED giallo (0805) Q1: IRLZ44NSTRLPBF L1, L2: 3,3 ยตH / 4,4 A IC1: LM78M05CDT/NOPB IC2, IC3, IC4: DRV8825 Pololu U1: Arduino Nano V30 SDM: modulo switching step-down 5 A Vin 8รท36V Vout 1,25รท32V J1: plug DC 2,1 mm J2: JST 2 poli p. 2,54 mm J3: JST 3 poli p. 2,54 mm J4: morsetto 2 poli p. 5 mm J5, J6, J7: JST 4 poli p. 2,54 mm J8: strip maschio 2x17 - 90ยฐ p. 2,54 mm J9: connettore IDC maschio 2x4 Varie: - N. 6 pin strip femmina 8 vie p. 2,54 h. 8 mm - N. 2 pin strip femmina 15 vie p. 2,54 h. 8 mm - circuito stampato S1593 (104,5 x 75 mm)
In Fig. 3 potete vedere il nostro prototipo inserito in un contenitore stampato in 3D.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.3.png)
Fig. 3 Il prototipo inserito allโinterno del contenitore stampato in 3D
Due note importantissime: il modulo va alimentato e tarato prima di inserirlo sul PCB, ruotando il perno del trimmer di precisione, per ottenere sui pin OUT+ e OUT- una tensione di 12 V, altrimenti si rischia di danneggiare qualche componente del circuito; inoltre occorre fare attenzione al verso del modulo, prima di saldarlo, bisogna far combaciare i suoi ingressi IN+ e IN- rispettivamente con i due fori E1 ed E3, serigrafati VIN+ e VIN-.
I collegamenti del Controller universale per CNC
Per collegare il nostro controller alle varie periferiche esterne potete fare riferimento allo schema di cablaggio nella pagina successiva.
Affinchรฉ i motori passo-passo funzionino correttamente, devono essere collegati ai rispettivi connettori mediante dei cavetti che, nel nostro caso, hanno uno spinotto JST a 4 pin passo 2,54 mm (lato controller) ed uno spinotto JST a 6 pin passo 2 mm (lato motore).
Le connessioni vanno realizzate in base alla configurazione degli avvolgimenti, secondo lo schema riportato in Fig. 4.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.4.jpg)
Fig. 4 Cavetti di collegamento per i motori passo-passo
Nella parte superiore dellโimmagine sono riportate lโimmagine del driver e la rappresentazione degli avvolgimenti del motore passo-passo.
Le immagini ed i colori vi permetteranno di realizzare facilmente i tre cavetti o anche modificare quelli in dotazione, se necessario.
Bisogna fare molta attenzione ad osservare lโorientamento dei due spinotti, seguendo le linguette per il loro innesto nelle prese del PCB e dei motori, comunque la foto nella sezione inferiore dellโimmagine sarร sicuramente di aiuto.
Lo schema di collegamento รจ standard e vale per qualsiasi tipo di motore, ma la posizione delle connessioni potrebbe risultare differente, se userete un modello diverso da quello in dotazione alla CNC usata da noi.
Allo spinotto PLUG DC va applicata la tensione di lavoro dello spindle, nel nostro caso 36 V, utilizzando un alimentatore esterno in grado di erogare la necessaria corrente, che servirร sia per lo spindle che per i tre motori passo-passo; questi ultimi saranno alimentati dal modulo step-down, ma anche la loro corrente sarร erogata allโorigine dallโalimentatore esterno.
Dovrete realizzare un cavetto a due fili, con sezione idonea alle correnti in gioco, e poi saldare il V+ al pin centrale dello spinotto PLUG, ed il V- a quello esterno. Lโunico connettore a vite presente serve per lโalimentazione dello spindle, anche in questo caso servono due fili di sezione idonea e bisogna rispettare la polaritร ma, in caso di errore, non succederร niente di particolare, solo che lโasse dello spindle girerร in senso antiorario, a quel punto basterร invertire i fili tra loro.
Il connettore dei 12 V andrร utilizzato per collegare una ventola di dimensioni adeguate (per esempio il modello BLS12/60, reperibile sul sito www.futurashop.it) da posizionare sopra la scheda, in modo da raffreddare costantemente sia il modulo step-down che i tre driver DRV8825, sui quali andranno applicati i piccoli dissipatori adesivi di alluminio, che in genere sono in dotazione.
Anche se le specifiche POLOLU, nel caso dei motori usati da noi (1,5 A) non richiederebbero nemmeno i dissipatori, consigliamo di adottarli comunque e di aggiungere la ventola. Il contenitore, da noi disegnato espressamente per questo controller, รจ predisposto per il montaggio di questo accessorio; nella sezione download troverete il file โstlโ per la stampa 3D del contenitore. Se decidete di adottare il controller offline, dovrete semplicemente inserire lo spinotto IDC nella relativa presa sul PCB, il verso รจ obbligato e le connessioni sono standard. Vedremo piรน avanti come si utilizza.
Taratura dei driver
A questo punto bisogna effettuare la taratura dei tre driver DRV8825 per il corretto funzionamento dei motori.
Questa operazione si puรฒ eseguire anche senza la presenza di Arduino NANO; il circuito deve essere alimentato, come specificato prima, ed i motori devono essere collegati ad esso tramite i rispettivi cavetti.
Bisogna settare la VREF dei driver in base alla corrente assorbita dal motore usato; nel nostro caso, il modello con codice STEPMOT03, reperibile su www.futurashop.it, รจ di 1,5 A; la tensione di riferimento si calcola mediante la semplice formula: VREF = Corrente/2, quindi 1,5/2 = 0,75 V.
Questa tensione si ottiene ruotando il trimmer SMD presente sul driver con un piccolo giravite, con la punta in ceramica o in plastica (importante per evitare cortocircuiti che distruggerebbero il driver!). Serve mano leggera ed un poโ di pazienza, la tensione va misurata con un multimetro digitale, posizionando il puntale negativo a massa e quello positivo direttamente sul trimmer metallico. La VREF puรฒ avere una tolleranza di ยฑ 10 mV, quindi, nel nostro caso, tra 0,74 e 0,76 V.
Nella Fig. 5 i tre trimmer sono circondati da un riquadro giallo, sono molto piccoli, quindi servirร una punta sottilissima per la loro regolazione.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.5.png)
Fig. 5 Taratura dei driver DRV8825
Programmazione dell’Arduino Nano per ilย Controller universale per CNC
La board Arduino NANO, prima dellโinnesto sul PCB, va programmata con lโultima versione del firmware, scaricabile dal link: https://github.com/gnea/grbl/releases/download/v1.1h.20190825/grbl_v1.1h.20190825.hex.
Lโoperazione รจ molto semplice, occorre scaricare lโultima versione del programma xLoader.exe dal link https://github.com/xinabox/xLoader/releases (nel momento in cui scriviamo รจ la 1.339) ed eseguirla; nella piccola maschera che si apre (Fig. 6), occorre cliccare sui โโฆโ e fornire il percorso del file grbl_v1.1h.20190825.hex, selezionare il dispositivo CR03 e la porta COM alla quale รจ collegato lโArduino NANO, quindi cliccare su UPLOAD; se รจ stato fatto tutto correttamente, dopo alcuni secondi, alla base della maschera, apparirร il messaggio โuploadedโ.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.6.jpg)
Fig. 6 Caricamento del firmware su Arduino NANO
Specifichiamo che i nostri test sono stati effettuati su una board originale, quindi non possiamo garantire il buon esito del caricamento se userete un modello compatibile.
Terminata questa operazione รจ possibile inserire la board nei due connettori header, naturalmente con lโalimentazione spenta e facendo attenzione al verso di inserimento, la porta USB mini deve essere rivolta verso il bordo del PCB.
Lโultima operazione da fare รจ quella di caricare nella EEPROM di Arduino NANO i parametri della CNC, senza di essi il comportamento del movimento degli assi sarebbe completamente errato! Bisogna scaricare il programma Candle, versione 1.1.7, dal seguente link: https://github.com/Denvi/Candle/releases/download/v1.1/Candle_1.1.7.zip.
Una volta decompressa la cartella, occorre collegare il PC allโArduino NANO tramite un cavetto USB mini, accendere lโalimentatore esterno ed eseguire il file Candle.exe. Nota bene: le funzionalitร del programma Candle vengono disattivate automaticamente se al PCB รจ collegato il controller offline, quindi, durante questa procedura, esso dovrร essere scollegato.
Al primo avvio probabilmente tutta la sezione dei pulsanti apparirร disattivata, bisogna andare nel menu Service-Settings e selezionare la porta COM alla quale รจ collegato Arduino NANO, in genere รจ sufficiente premere sul pulsantino situato accanto al campo โPortโ per la selezione automatica, in caso contrario bisognerร andare per tentativi, selezionando tra le voci in elenco (Fig. 7).
![](https://futuranet.it/wp-content/uploads/2023/02/figur.7.jpg)
Fig. 7 Il programma Candle
Appena si clicca su OK le icone del programma risulteranno attivate, in questa fase รจ bene evitare di utilizzarle, perchรฉ si potrebbero provocare comportamenti errati dei motori.
Lโunica sezione che ci interessa รจ il riquadro posizionato in basso a destra, chiamato โConsoleโ (Fig. 8) che รจ il monitor del linguaggio grbl, infatti qui si vedranno tutti i comandi eseguiti manualmente dallโutente, o in automatico durante lโincisione.
Noi lo useremo per inviare i parametri della nostra CNC alla EEPROM di Arduino NANO; questi parametri devono essere forniti dal produttore della CNC, se non si riesce ad averli, si potrร comunque partire da quelli usati da noi e successivamente procedere per tentativi, come vedremo.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.8.jpg)
Fig. 8 Inserimento dei parametri nella EEPROM
Nella Tabella 3 abbiamo riportato lโelenco dei comandi con i relativi valori per la CNC2018; la maschera necessaria per la scelta del valore di alcuni di essi รจ visibile nella Tabella 4.
![](https://futuranet.it/wp-content/uploads/2023/02/tab.3.png)
Tabella 3 I parametri di configurazione grbl per la CNC
![](https://futuranet.it/wp-content/uploads/2023/02/tab.4.png)
Tabella 4
Abbiamo aggiunto delle note esplicative, alcuni di questi parametri sono fortemente consigliati nella wiki, altri riguardano funzioni opzionali, per ora vedremo solo quelli che potrebbe essere necessario personalizzare, disponendo di un modello di CNC e/o di motori diversi dai nostri, dando perรฒ per scontato che siano tutti e tre uguali tra loro. Dopo queste informazioni, vedremo come passare i parametri alla macchina.
Intanto consigliamo di creare una tabella con tutti i 34 parametri, e riportarvi i valori che vi abbiamo indicato, modificandoli opportunamente, in base alle vostre esigenze, cosรฌ poi sarร piรน comodo inserirli in sequenza nella Console.
Vediamo ora alcuni parametri che dovrete personalizzare in base ai componenti utilizzati:
$30: questo valore serve per utilizzare correttamente la regolazione di velocitร dello spindle, quindi bisogna conoscerne le caratteristiche. Nel nostro caso lo spindle lavora a 9.000 rpm se alimentato a 36 V. Chiariamo che, se disponete di un motore che lavora a 1.000 rpm, fornendo un valore maggiore non si ottiene certo un aumento della velocitร , quindi รจ bene mettere sempre il valore reale;
$100รท102: numero di step che il motore deve compiere per generare un movimento di un millimetro. Questo valore va calcolato con la formula: step_giro*microstep_drv/mm_giro, in cui: step_giro va ricavato dal datasheet del motore, ma nella stragrande maggioranza dei casi รจ 200; microstep_drv รจ lโimpostazione del driver che alimenta il motore, nel nostro caso รจ 32 (come abbiamo visto a proposito dei settaggi M0, M1 e M2 dei DRV8825); mm_giro รจ lo spostamento dellโasse in mm quando si fa compiere alla barra filettata un giro completo; nel nostro caso, ruotando manualmente la barra filettata dellโasse X, il blocco del mandrino si รจ spostato di 4 mm, quindi 200*32/4 = 1600. Poichรฉ i motori e le barre filettate della nostra CNC sono identiche tra loro, abbiamo usato lo stesso valore per i tre comandi; in caso contrario il calcolo va effettuato separatamente per ogni asse;
$110รท112: velocitร massima dellโasse in mm/min; il valore 500 in genere va bene per tutte le macchine, garantendo una buona velocitร senza perdita di passi, ma vedremo piรน avanti come trovare la velocitร ottimale per ogni motore;
$120รท122: accelerazione dellโasse in mm/sec2; anche in questo caso noi abbiamo adottato il valore 500 e vedremo come trovare quello idoneo per altri modelli di motori;
$130รท132: corsa massima dellโasse in mm; precisiamo che questi valori serviranno solo se si intende attivare lโopzione dei limiti software o di quelli hardware, ma รจ bene inserirli ugualmente per usi futuri. Servono i valori dellโescursione del piatto nel suo verso di scorrimento (Y) e lโescursione del blocco del mandrino in orizzontale (X) ed in verticale (Z); per questโultimo valore conviene considerare anche la lunghezza del bulino; in pratica bisogna stringere il bulino nella morsa del mandrino e poi partire dallโalto e scendere fino a sfiorare il piatto con la punta.
Siamo pronti per il passaggio finale, che consiste nellโinviare questi parametri allโEEPROM di Arduino NANO. Durante questa fase non รจ necessario collegare lโalimentatore esterno e conviene lasciare staccati i fili dello spindle e gli spinotti dei tre motori. Lโoperazione รจ molto semplice, una volta avviato il Candle, bisogna controllare che nella Console appaia il messaggio โ[CTRL+X] < Grbl 1.1h [โ$โ for help]โ, se invece si leggerร โSerial port error 11: Impossibile trovare il percorso specificato.โ significa che non รจ stata settata correttamente la porta COM, e la cosa sarร confermata dal fatto che i vari pulsanti presenti nella maschera risulteranno disattivati. Una volta risolto questo problema, nel campo alla base della Console bisogna scrivere i codici dei parametri con il rispettivo valore, uno per volta, e quindi cliccare sul simbolo presente subito a destra (evidenziato con un riquadro rosso nella Fig. 8); se lโistruzione sarร andata a buon fine, la Console mostrerร sia il comando che la conferma di ricezione โ< okโ; se invece esce un messaggio di errore รจ inutile andare avanti se prima non si risolve il problema.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.8-1.jpg)
Fig. 8 Inserimento dei parametri nella EEPROM
I parametri vanno inseriti tutti, non solo quelli personalizzati, seguendo lโordine della tabella; in questa fase consigliamo di non modificare i valori proposti da noi, eccetto quelli che abbiamo spiegato prima, se necessario.
Dopo aver inserito tutti i 34 parametri dellโelenco occorre scollegare il cavo USB, inserire i fili dello spindle nel connettore a vite, sincerandosi che ci sia un contatto perfetto, inserire gli spinotti dei tre motori e della ventola di raffreddamento nei relativi connettori JST, collegare lโalimentatore esterno e accenderlo, quindi ricollegare il cavo USB. In questa fase non bisogna montare il bulino nel morsetto dello spindle perchรฉ, durante le prove, si potrebbe rompere, a causa di una manovra sbagliata.
La prima operazione da fare รจ il controllo dei tre motori, per verificare che i relativi pulsanti corrispondano ai rispettivi assi e le direzioni dei movimenti siano corrette. A tale scopo possiamo ricorrere al riquadro โJogโ, visibile nella Fig. 9.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.9.jpg)
Fig. 9 Pulsanti di comando dei tre motori
Ricordiamo che lโeventuale controller offline dovrร restare scollegato. Prima di tutto vanno settati i due campi โStep=10โ e โFeed=100โ, che rappresentano rispettivamente la lunghezza del movimento in mm e la velocitร in mm/min.
Questi valori sono ideali per le verifiche che dobbiamo fare; in fase di incisione il valore di Step sarร irrilevante, mentre Feed potrร essere portato alla velocitร massima prevista per i motori.
Le quattro frecce 1-2-3-4 servono per gli assi X e Y, il pulsante centrale serve per bloccare i motori in caso di emergenza, le due frecce 5-6 servono per il movimento dello spindle. Per meglio comprendere lโorientamento dei tre assi si puรฒ fare riferimento alla Fig. 10, nella quale abbiamo riportato i riferimenti numerici dei 6 pulsanti.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.10.jpg)
Fig. 10 Orientamento dei tre assi
Vediamo ora come si dovrebbero comportare i motori usando questi pulsanti; il condizionale รจ dโobbligo, in quanto potrebbero essere stati invertiti gli spinotti o potrebbero risultare invertite le direzioni dei movimenti.
Prima di procedere bisogna far ruotare manualmente le barre filettate al fine di portare il blocco dello spindle piรน o meno al centro del piatto ed al centro della sua stessa corsa; questa precauzione ci permetterร di evitare scarrellamenti dei motori in caso di manovre o comportamenti errati. A questo punto possiamo iniziare il nostro test, la Fig. 11 mostra i risultati attesi con un singolo clic su ogni pulsante.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.11.jpg)
Fig. 11 Movimenti dei motori
Ad ogni clic su un pulsante deve corrispondere un movimento preciso di 10 mm lungo lโasse prescelto, nella direzione prevista. I pulsanti vanno testati tutti, iniziando da quelli direzionali.
ร necessario un chiarimento: mentre i pulsanti degli assi X e Z provocano il movimento dello spindle nella stessa direzione delle frecce, quelli dellโasse Y provocano invece il movimento del piatto in direzione opposta alle frecce; in pratica premendo la freccia Y 3 il piatto si deve spostare in avanti, mentre con la freccia Y 4 il piatto si sposta verso dietro.
La ragione di questo apparente controsenso sta nel fatto che tutti i pulsanti di comando sono riferiti al movimento dello spindle, ma mentre sugli assi X e Z esso si muove effettivamente, sullโasse Y รจ fermo, ed รจ il piatto che deve spostarsi in direzione opposta. Quindi, quando si decide di spostare lo spindle in avanti รจ il piatto che va dietro, e viceversa.
Vediamo le possibili problematiche e come risolverle. Se la pressione di un pulsante provoca il movimento di un asse diverso da quello previsto, significa che sono stati invertiti gli spinotti sul controller, รจ sufficiente rimetterli a posto.
Se la pressione di un pulsante provoca il movimento dellโasse previsto ma in direzione opposta a quella attesa, significa che il motore รจ alimentato con polaritร opposta a quella richiesta.
Questo problema si risolve via software, tramite un comando da inviare con la Console, ma prima di eseguirlo occorre testare tutti i pulsanti e vedere se il problema riguarda solo un motore o due, o addirittura tutti e tre.
Facciamo un esempio: se i movimenti degli assi X e Y risultano invertiti, mentre quelli dellโasse Z corrispondono, dobbiamo localizzare sulla maschera riportata nella Tabella 4 la riga che inverte i soli assi X e Y, quindi la n.3; il comando da dare sulla Console รจ โ$3=3โ, subito dopo bisogna spegnere lโalimentatore esterno, attendere una decina di secondi, riaccenderlo e quindi ripetere i test di tutti i pulsanti; รจ importante ricontrollare tutto, perchรฉ potrebbe succedere che si sistemi un movimento ma se ne inverta un altro. In genere il comando corretto รจ immediatamente risolutivo, in caso contrario si puรฒ andare tranquillamente per tentativi, fino a trovare il valore di $3 (tra 0 e 7) che permette il corretto movimento di tutti e tre gli assi.
Se i motori non si muovono correttamente, facendo molto rumore oppure bloccandosi, significa che i valori di velocitร ($110รท112) e/o di accelerazione ($120รท122) sono eccessivi, quindi bisogna diminuirli fino ad ottenere un comportamento normale; conviene operare su un solo motore, inviando il comando tramite Console, testando prima la velocitร e poi, eventualmente lโaccelerazione.
Una volta trovata la combinazione con i massimi valori accettati, conviene ridurli di un 30% e poi assegnarli inviandoli ai tre motori (sempre a patto che siano identici tra loro).
Una volta che รจ tutto a posto, si puรฒ aumentare il valore di Step a 50, per selezionare un movimento di 5 cm, quindi far partire il motore dellโasse X (per comoditร ) e premere subito dopo il pulsante di blocco, per verificare che effettivamente il movimento si blocchi istantaneamente.
Lโultima verifica da fare riguarda la precisione dello spostamento, serve un righello di precisione, meglio ancora se si dispone di un calibro digitale; bisogna impostare Step=20 e prendere il punto di riferimento della posizione attuale del blocco dello spindle, quindi dare un comando di movimento, prima sullโasse X e poi su quello Z, e verificare se lo spostamento corrisponde esattamente a 20 mm, quindi effettuare la verifica dellโasse Y con lo spostamento del piatto; la verifica va fatta su entrambe le direzioni di ogni asse.
Se lo spostamento dovesse risultare errato significa che non รจ stato calcolato correttamente il valore dei parametri $100รท102; posto che step_giro=200 รจ un valore standard quasi universale e microstep_drv=32 รจ obbligato dallโimpostazione data da noi ai DRV8825, lโunico valore da verificare รจ mm_giro, operazione semplice, come abbiamo spiegato in precedenza.
Per concludere vediamo come usare il controller offline, per chi deciderร di dotarsi di questo accessorio opzionale. In Fig. 12 possiamo osservare il modello utilizzato per le nostre prove, sul quale abbiamo riportato le funzioni dei pulsanti.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.12.png)
Fig. 12 Controller offline
La sua caratteristica peculiare รจ quella di permettere di lavorare con la CNC senza dover necessariamente disporre di un PC, essendo necessario solo il file generato dal software CAM; esso viene caricato su una micro SD card, la quale puรฒ essere anche di bassissima capacitร , data lโesigua dimensione dei file.
Il controller offline, una volta collegato allo specifico connettore, parte automaticamente ed esclude il Candle, rendendo di fatto inutile il collegamento al PC. Allโaccensione, la mancata presenza di una micro SD card nello slot viene segnalata istantaneamente sul piccolo display LCD; appena si inserisce la scheda il display mostra il menu visibile in Fig. 13.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.13.jpg)
Fig. 13 Menu di controllo della CNC
I due pulsanti X-/X+ permettono di spostarsi tra le tre voci del menu, mentre il pulsante OK attiva la voce selezionata. Il menu โCtrlโ รจ quello che permette di accedere alle funzioni di controllo della macchina (Fig. 14).
![](https://futuranet.it/wp-content/uploads/2023/02/figur.14.jpg)
Fig. 14 Menu di controllo della CNC
Il movimento dei tre assi avviene premendo i rispettivi pulsanti, lโattivazione o disattivazione dello spindle si ottiene premendo il pulsante OK, mentre il pulsante Step, ad ogni pressione, cambia il relativo valore.
Per tornare al menu principale occorre tenere premuto per un paio di secondi il pulsante Step che assume, in questo caso, la funzione Exit. Il menu โFileโ mostra lโelenco dei file presenti nella micro SD card, i pulsanti Y-/Y+ permettono di selezionare quello da utilizzare, il pulsante Exit riporta al menu principale senza selezionare alcun file, il pulsante OK seleziona quello attivo e mostra il messaggio โReady to printโ; premendo nuovamente il pulsante OK si avvia immediatamente il processo di incisione della CNC, ed il display indicherร costantemente la percentuale di esecuzione, mentre una pressione di circa due secondi sul pulsante Exit annulla la selezione, o interrompe il processo di incisione, e ritorna al menu File.
Il menu โSsetโ apre una maschera divisa in due colonne, la prima (Move) permette di selezionare il valore di Step (0.1, 1, 5, 10 mm), la seconda (Bdrte) serve per settare la velocitร della comunicazione seriale con Arduino NANO, tra 9600 e 115200 bps, questโultimo รจ il valore di default. Gli spostamenti in questo menu avvengono mediante i pulsanti X-/X+/Y-/Y+ mentre il pulsante Exit conferma le selezioni e torna al menu principale. Come potete vedere lโuso di questo controller offline รจ semplice ed intuitivo, chiaramente non puรฒ garantire tutte le funzioni del programma Candle perรฒ, quando non si hanno particolari esigenze, si puรฒ rivelare molto utile.
Una volta completate tutte le operazioni ed i necessari test, si potrร montare il controller nello specifico contenitore, per il quale abbiamo fornito il file .stl. Nel caso del nostro contenitore, il PCB andrร distanziato dalla base di circa 5 mm, ricorrendo a 4 distanziali in plastica (adesivi o a vite), in modo da poter sfruttare agevolmente le fessure predisposte per i collegamenti esterni.
Per poter utilizzare correttamente il connettore esterno, occorre avere ben presente lโelenco delle connessioni ai pin strip, serigrafate sul PCB; consigliamo di riprodurle esternamente, magari con una etichetta adesiva. In Fig. 15 abbiamo riportato il connettore esterno, visto dal lato dei contatti, con le stesse sigle presenti sul PCB ed il loro significato, mentre la funzione lโabbiamo giร descritta parlando dei pin di Arduino Nano.
Da notare che la fila inferiore di pin รจ tutta collegata a massa, mentre i pin per i finecorsa X-Y-Z sono doppi in quanto abbiamo previsto la possibilitร di montare due switch per ogni asse, in modo da controllare entrambe le estremitร della corsa.
![](https://futuranet.it/wp-content/uploads/2023/02/figur.15.jpg)
Fig. 15 I contatti del connettore esterno
Conclusioni
Termina qui la presentazione di questa eccellente scheda, che potrร sostituire quella in vostro possesso oppure rappresentare la dotazione di una meccanica acquistata senza controller.
La riprenderemo con ulteriori articoli nei quali vi spiegheremo come usare alcuni programmi free per realizzare facilmente i vostri PCB in casa.
Download
Candle e FlatCAM
1 file(s) 57.44 MB
Per il download di questo file รจ necessario essere registrati al sito