``` Storia tecnica di CostyCNC: da GRBL a MKS-DLC32 ```
```

Storia tecnica di CostyCNC: da GRBL a MKS-DLC32

Documentazione tecnica a cura di Boboaca Costel

Mi chiamo Boboaca Costel e sono il creatore di CostyCNC. In questa pagina racconto l'evoluzione tecnica del progetto attraverso le elettroniche, i firmware e le modifiche che ho realizzato nel corso degli anni.

La storia non è quella di un progetto nato con una piattaforma elettronica definitiva. Nel tempo ho utilizzato schede sempre più recenti e, con ogni nuova elettronica, ho incontrato problemi diversi da risolvere. In diversi casi ho dovuto modificare il firmware, l'hardware o la WebUI per adattare la scheda alle esigenze delle mie macchine a filo caldo.

Per questo la storia di CostyCNC è anche una storia di adattamenti e problemi risolti direttamente durante lo sviluppo e la produzione delle macchine.

Una storia fatta di successive generazioni

2014

Prime modifiche a GRBL per utilizzare motori passo-passo unipolari invece dei tradizionali motori bipolari.

Prime macchine prodotte

Arduino Nano, ULN2003 e motori 28BYJ-48 in una macchina a filo caldo costruita con una meccanica sviluppata per questo progetto.

Generazione CNC Shield

Passaggio a una soluzione con Arduino Nano, CNC Shield V4 e driver A4988, con nuove modifiche necessarie al firmware e alla configurazione elettronica.

Generazione MKS-DLC32

Passaggio a una scheda basata su ESP32, con Wi-Fi e WebUI. Anche questa piattaforma ha richiesto modifiche e adattamenti al firmware e all'interfaccia web.

1. Le origini: GRBL e i motori unipolari

Il mio lavoro sul controllo delle macchine CNC risale almeno al 2014. In quel periodo ho modificato il firmware GRBL per poter controllare motori passo-passo unipolari, utilizzando la sequenza di pilotaggio a quattro fasi.

I progetti e il codice storico sono ancora documentati online: [1] [2] e nel progetto storico CostyCNC 3.02 .

Le prime macchine utilizzavano un Arduino Nano, transistor array ULN2003 e motori 28BYJ-48.

La configurazione dei motori utilizzava direttamente quattro uscite per ciascun asse:

Asse X: D2, D3, D4, D5
```

Asse Y: A0, A1, A2, A3
```

Questa esperienza è stata una delle basi tecniche del successivo sviluppo delle macchine CostyCNC.

Documentazione storica: GRBL / CostyCNC · Progetto storico

2. Dalle prime macchine alla produzione

Dopo le prime sperimentazioni ho iniziato a produrre e vendere le prime macchine a filo caldo destinate al mercato hobbistico e artigianale.

Dopo le prime vendite, con l'aumentare del numero di macchine prodotte, è diventato necessario rendere la costruzione più ripetibile e utilizzare soluzioni elettroniche più pratiche per la produzione.

È in questa fase che il progetto è passato progressivamente da soluzioni costruite e cablate direttamente da me a schede elettroniche commerciali più moderne.

Un punto importante: il passaggio a una nuova scheda non significava necessariamente che la precedente fosse diventata inutilizzabile. Più semplicemente, nel tempo sono diventate disponibili elettroniche più moderne, che ho iniziato a utilizzare e adattare alle mie macchine.

3. CNC Shield V4: difetti di fabbrica e soluzioni sul campo

In una delle generazioni intermedie delle mie macchine ho adottato la combinazione Arduino Nano + CNC Shield V4 + driver A4988 per semplificare il cablaggio. Tuttavia, l'impiego su scala reale — con centinaia di schede installate direttamente sulle mie macchine — ha fatto emergere due gravi e sistematici errori di progettazione hardware.

Non si trattava di difetti isolati o di un lotto sfortunato: ogni singola scheda presentava la medesima struttura errata. L'aspetto più sconcertante è che, nonostante si tratti di anomalie note da anni nella community, queste schede hanno continuato a essere prodotte e vendute in grandi volumi senza alcuna correzione o chiarimento ufficiale da parte dei produttori cinesi, lasciando gli utenti finali nel dubbio di avere componenti guasti o configurazioni errate.

1. Microstepping A4988: il blocco hardware dei jumper a GND

Il problema hardware: sulla CNC Shield V4.0, i tre selettori del microstepping (M1, M2 e M3 sono collegati a GND). Questo rende del tutto inefficace l'inserimento dei normali jumper per selezionare i passi intermedi.

Il driver A4988 integra già dei resistori di pull-down sui pin di controllo (100 kΩ su MS1 e MS3, 50 kΩ su MS2). Portando anche i jumper della shield a massa, gli ingressi restano bloccati a livello LOW e il driver lavora forzatamente in Full Step, vanificando la precisione necessaria al taglio del polistirolo. Per abilitare il microstepping a 1/16 è invece indispensabile fornire il livello HIGH (+5V) a tutti e tre gli ingressi, come confermato dalla documentazione tecnica Pololu.

La mia soluzione hardware: per garantire il microstepping costante senza dover rinunciare alla scheda, ho modificato fisicamente il circuito stampato di ogni unità, portando tramite saldatura le piste M1, M2 e M3 direttamente a +5 V (VCC) per fissare l'impostazione a 1/16 di passo.

2. Inversione dei segnali STEP e DIR: il caos firmware con GRBL

L'anomalia di mappatura: i pin di controllo dei motori sulla shield sono invertiti rispetto allo standard ufficiale di GRBL per Arduino Nano/Uno. I pin D2, D3, D4 controllano la direzione (DIR) invece dei passi, mentre D5, D6, D7 controllano i passi (STEP).

Questo errore di sbrogno crea una forte confusione negli utenti: installando il firmware GRBL standard, i comandi di movimento generano comportamenti anomali o blocchi dei motori. Molte guide online si limitano a spiegare come modificare il codice senza chiarire che si tratta di un **errore fisico della scheda**, portando chi acquista la V4 a credere che il problema risieda nei propri motori o in Arduino.

L'inversione delle piste è un dato di fatto ampiamente riscontrato nel tempo sia nelle discussioni del forum ufficiale Arduino sia nella guida di GRBL-Plotter fino ai forum recenti su LaserGRBL.

La mia soluzione software: anziché tagliare e ricablare le piste di centinaia di schede, ho adattato il firmware alla realtà hardware. Ho ricompilato una versione dedicata di GRBL modificando il file cpu_map.h, invertendo le definizioni dei pin STEP e DIR in modo da riallineare il segnale del microcontrollore al layout reale della shield.
In sintesi: la CNC Shield V4 è un esempio chiaro di come componenti commerciali molto economici possano nascondere difetti di progettazione sistematici. La mia esperienza dimostra che per produrre macchine affidabili non basta assemblare i pezzi, ma occorre analizzare la risposta reale dell'hardware e applicare correzioni su misura sia a livello di saldatura che di firmware.

4. 28BYJ-48 o NEMA17? Dipende dalle dimensioni della macchina

L'evoluzione delle CostyCNC non significa che un tipo di motore abbia semplicemente sostituito l'altro. La scelta dipende anche dalle dimensioni e dalla struttura della macchina.

Modelli Motore Motivazione principale
Hobby / Mini 28BYJ-48 Dimensioni molto compatte e migliore integrazione nella struttura piccola della macchina, anche dal punto di vista estetico. Un NEMA17 sarebbe eccessivamente ingombrante.
Media / XBig NEMA17 Le dimensioni maggiori della macchina permettono di utilizzare un motore più grande senza gli stessi problemi di ingombro.

Quindi il 28BYJ-48 non deve essere considerato semplicemente come una versione precedente del NEMA17: nelle macchine piccole è una scelta legata soprattutto a dimensioni, integrazione meccanica ed estetica.

5. Il passaggio alla MKS-DLC32 e all'ESP32

Con il tempo sono passato a una piattaforma elettronica più moderna: la MKS-DLC32, basata su ESP32.

Il vantaggio principale per il progetto CostyCNC non è stato semplicemente il passaggio da 8 a 32 bit. La nuova piattaforma offriva anche una gestione più moderna della macchina, compreso il collegamento Wi-Fi e una WebUI accessibile dal browser.

Anche in questo caso, però, la scheda commerciale non è stata semplicemente utilizzata così com'era. Durante l'adattamento alle CostyCNC ho dovuto intervenire sul firmware e sulla WebUI.

Modifica della WebUI

La WebUI originale della scheda conteneva l'interfaccia incorporata nella memoria flash dell'ESP32. Il file principale dell'interfaccia è index.html.gz.

Per adattarla alle mie esigenze ho estratto il contenuto, modificato i file HTML e CSS, ricompresso l'interfaccia e reinserito i file nella configurazione firmware.

  1. Estrazione: recupero dell'interfaccia web incorporata.
  2. Modifica: interventi su HTML e CSS e aggiunta delle funzioni e dei collegamenti necessari a CostyCNC.
  3. Adattamento: correzione dell'interfaccia per l'utilizzo anche da dispositivi mobili.
  4. Ricompilazione / reinserimento: preparazione dei file necessari alla versione firmware utilizzata sulle macchine.
Risultato: la MKS-DLC32 può essere utilizzata direttamente dalla rete Wi-Fi della macchina tramite browser, permettendo di controllare gli assi e preparare le operazioni direttamente vicino al blocco di polistirolo.

6. Le CostyCNC attuali

Le macchine attuali sono il risultato di questo percorso, ma non rappresentano semplicemente una successione di componenti sempre più potenti.

La meccanica, i motori, l'elettronica e il software vengono scelti in funzione del tipo e delle dimensioni della macchina.

Modello Motore Controllo
Hobby 28BYJ-48 MKS-DLC32 / ESP32
Mini 28BYJ-48
Media NEMA17
XBig NEMA17

La MKS-DLC32 rappresenta quindi una delle piattaforme elettroniche più recenti utilizzate nel progetto, mentre la scelta del motore continua a dipendere dalle caratteristiche della macchina.

7. Una storia di problemi risolti

Guardando indietro, l'evoluzione di CostyCNC non è stata una semplice sostituzione di una scheda con una scheda migliore.

Ho utilizzato elettroniche disponibili in momenti diversi, e ogni generazione ha portato con sé problemi differenti: dalla gestione dei motori unipolari, alla configurazione della CNC Shield, fino all'adattamento del firmware e della WebUI della MKS-DLC32.

Il lavoro di sviluppo è consistito anche nel capire questi problemi, modificarne il comportamento quando necessario e rendere l'elettronica utilizzabile sulle macchine che producevo.

La CostyCNC attuale è quindi il risultato di molti anni di costruzione, prove, modifiche e problemi risolti direttamente sul campo.

Documentazione storica e tecnica

```