Progetto per realizzare un mini plotter cnc pilotato con arduino e motori passo passo 28byj-48
- 3 x motori passo passo 28byj-48 (io ho usato quelli a 5V)
- 3 x driver motori ULN2003 (solitamente venduti con i motori)
- 1 x arduino nano
- 1 x cuscinetto a sfera tipo 608
- 1 x LM7805 (o modulo stepdown per ottenere 5V)
- 1 x alimentatore 12V
- Superficie di legno su cui fissare il materiale
- Viti varie di recupero
- Assi e supporti stampati in 3D, vedi sezione dedicata
- Pazienza, ne serve abbastanza
Progetto Thingiverse principale da cui sono partito: https://www.thingiverse.com/thing:4796222 Ho clonato i file stl per comodità e li ho messi nella cartella stl di questo repo:
- SpurGear.stl: ingranaggio da montare sul motore stepper (ne servono 2)
- bearing_center.stl: cilindro che restringe il foro del cuscinetto a sfera di tipo 608 per usarlo con una vite da 2-3mm di diametro
- pen_cap.stl: cappello da mettere sulla penna con un paio di elastici per rendere morbido l'appoggio della penna sul foglio
- pen_holder.stl: supporto che gestisce la penna e si fissa sul motore per l'asse Z, la parte centrale deve risultare mobile e alloggia una vite per bloccare la penna in posizione
- plate_01.stl: binario per l'asse Y
- plate_02.stl: asse Y con barra dentata
- plate_03.stl: binario per l'asse X
- plate_04.stl: asse X con barra dentata
- prop.stl: supporto da incollare al binario per l'asse X
- prop_bearing_608.stl: alternativa da usare al prop.stl se si ha un cuscinetto di tipo 608
Video del progetto originale che illustra i vari passaggi principali sia di assemblaggio che della messa in funzione: https://www.youtube.com/watch?v=WtUIBxfddjw Schema di collegamento dei 3 motori driver:
Axis | Arduino | ULN2003 | ULN2003 | 28BYJ-48 |
---|---|---|---|---|
X-Axis | D5 | IN1 | OUT1 | BLUE |
D4 | IN2 | OUT2 | PINK | |
D3 | IN3 | OUT3 | YELLOW | |
D2 | IN4 | OUT4 | ORANGE | |
Y-Axis | A0 | IN1 | OUT1 | BLUE |
A1 | IN2 | OUT2 | PINK | |
A2 | IN3 | OUT3 | YELLOW | |
A3 | IN4 | OUT4 | ORANGE | |
Z-Axis | D13 | IN1 | OUT1 | BLUE |
D12 | IN2 | OUT2 | PINK | |
D9 | IN3 | OUT3 | YELLOW | |
D8 | IN4 | OUT4 | ORANGE | |
+5V | RED |
- grbl Firmware per Arduino: https://github.com/TGit-Tech/GRBL-28byj-48 Codice derivato dallo standard de facto per l'ambito cnc con Arduino grbl, consente di pilotare i 3 assi con i motori 28byj-48 ed i relativi driver più semplici dei normali stepper per cnc o stampanti 3d. Copiare la cartella "grbl" che trovate per comodità anche in questo repo sotto il path ./lib-grbl nel path locale del PC con le librerie di ArduinoIDE (nel caso di macos /Users/nomeutente/Documents/Arduino/libraries/grbl).
- inkscape: https://inkscape.org/ Famoso software open per manipolare e creare file vettoriali.
- jscut: https://jscut.org/jscut.html Consente di convertire file vettoriali svg contenenti path (eventuali font vanno convertiti in path prima con inkscape) in file gcode rispetto ai parametri della cnc configurati. Nel path di questo repo (/jscut-settings/settings_20240105.jscut) c'è un esempio di impostazioni da caricare su jscut, nel caso è possible variare manualmente i settaggi, il pannello più importante si trova in masso a sinistra:
Diameter : sarebbe il diametro della fresa, nel nostro caso la larghezza del tratto disegnato dalla penna (più è fine più passate serviranno per disegnare) Pass Depth: quanto dovrà andare in profondità la penna sull'asse z, si imposta un po' per tentativi Step Over: percentuale di sovrapposizione delle varie passate, più il valore è basso più passate sovrapposte ci saranno, aumenterà di conseguenza il tempo e l'inchiostro usato.
- UGS (Universal Gcode Sender): https://winder.github.io/ugs_website/ applicativo java based che consente di pilotare la cnc (il nostro arduino con firmware grbl) da PC via seriale (usb).
- una volta aperto il programma selezionare la voce di menu "Machine" > "Setup Wizard"
- Impostare i parametri di connessione alla porta seriale (firmware: GRBL; Port: nome della seriale a cui è collegato Arduino; baudrate: 115200), quindi cliccare "Connect"
- Verificare la direzione degli assi X, Y, Z, ed eventualmente invertirla (io per la verità ho preferito invertire il connettore del driver su arduino per la X e la Y)
- testare il movimento degli assi, misurando il reale spostamento rispetto al valore atteso ed inserire i parametri di step/mm calcolati dal programma (nel mio caso 72 step/mm sia per x che per y).
- concludere il wizard senza modificare altro.
Alcune foto del risultato finale