Controllo CNC con Arduino Nano: Costruisci il Tuo Controller

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.

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).

Fig. 2 Il driver POLOLU DRV8825

 

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.

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.

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.

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.

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โ€.

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).

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.

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.

Tabella 3 I parametri di configurazione grbl per la CNC

 

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.

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.

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.

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.

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.

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.

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).

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.

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

Lascia un commento

Il tuo indirizzo email non sarร  pubblicato. I campi obbligatori sono contrassegnati *

Menu