Sommario:

Plotter a tamburo CNC: 13 passaggi (con immagini)
Plotter a tamburo CNC: 13 passaggi (con immagini)

Video: Plotter a tamburo CNC: 13 passaggi (con immagini)

Video: Plotter a tamburo CNC: 13 passaggi (con immagini)
Video: Magnet attack on mechanical water meter 2024, Dicembre
Anonim
Image
Image
Plotter a tamburo CNC
Plotter a tamburo CNC

Questa istruzione descrive un plotter A4/A3 costituito da una sezione di tubo di plastica, due motori passo passo BYJ-48 e un servo SG-90. Essenzialmente è un plotter a letto piatto arrotolato in un tamburo.

Un motore fa ruotare il tamburo mentre l'altro muove la testina di stampa. Il servo serve per alzare e abbassare la penna.

Questo plotter presenta una serie di vantaggi rispetto a un plotter flatbed tradizionale:

  • ingombro notevolmente ridotto
  • richiede solo una guida lineare
  • semplice da costruire
  • a buon mercato

Un interprete integrato accetta l'output del gcode da Inkscape.

La comunicazione con il plotter avviene tramite collegamento bluetooth.

Il plotter è compatibile con la tavoletta grafica CNC descritta nel mio

Sebbene non sia uno strumento di precisione, l'accuratezza di questo plotter è soddisfacente per lo scopo previsto di trasferire i contorni dell'acquerello su carta.

Passaggio 1: il circuito

Il circuito
Il circuito

Il circuito comprende un microcontrollore Arduino UNO R3 e uno shield personalizzato su cui sono montati i componenti discreti. L'alimentazione viene applicata tramite un regolatore esterno da 5 volt 1 amp. La corrente media è di circa 500 mA.

I motori passo passo BYJ-48 sono collegati a PORTB (pin D8, D9, D10, D11) e PORTC (pin A0, A1, A2, A3). Il servo per il sollevamento della penna SG-90 è collegato al pin D3.

I resistori da 560 ohm, che possono essere omessi, forniscono una misura di protezione da cortocircuito all'arduino se qualcosa dovesse andare storto. Inoltre, facilitano il cablaggio della schermatura in quanto fungono da "ponticelli" lungo i binari di alimentazione.

I resistori 1k2 e 2K2 prevengono danni al modulo bluetooth HC-06 [1] abbassando l'uscita a 5 volt dall'arduino fino a 3,3 volt.

[1] Scollegare il modulo bluetooth HC-06 quando si carica il codice su arduino tramite la porta USB. Ciò eviterà qualsiasi conflitto di porta seriale.

Passaggio 2: l'azionamento lineare

L'azionamento lineare
L'azionamento lineare
L'azionamento lineare
L'azionamento lineare
L'azionamento lineare
L'azionamento lineare

L'azionamento lineare è costituito da una barra di alluminio lunga 3 mm x 32 mm, una striscia di lamiera di alluminio e quattro piccole pulegge con cuscinetti a sfera.

L'alluminio è disponibile nella maggior parte dei negozi di ferramenta. Le pulegge con scanalatura a U U624ZZ 4x13x7mm sono disponibili su

Strumenti manuali semplici sono tutto ciò di cui hai bisogno. Taglia la barra di alluminio per adattarla alle dimensioni del tuo plotter.

Il gruppo motore

Montare il motore passo-passo BJY-48 attraverso la barra a un'estremità e collegare un dente GT2 20, foro 5 mm, puleggia all'albero motore. Ora monta un'altra puleggia GT2 all'altra estremità della barra in modo che la puleggia possa ruotare liberamente. Ho usato un distanziatore tubolare (radio) di 5 mm di diametro e un bullone da 3 mm per ottenere questo risultato.

Ora avvolgere una lunghezza della cinghia di distribuzione GT2 attorno alle pulegge. Unire le estremità della cinghia di distribuzione mediante una mezza torsione in modo che i denti si intersechino e si fissino con una fascetta.

Infine collegare il gruppo carrello alla cinghia di distribuzione con una fascetta.

Il montaggio della carrozza

Il gruppo carrello è costituito da un nastro di lamiera di alluminio [1] su cui sono imbullonate le pulegge U624ZZ. Se necessario utilizzare una rondella da 4 mm per distanziare le pulegge dal foglio di alluminio.

Le pulegge, che hanno una scanalatura di 4 mm, si trovano a cavallo della barra di alluminio superiore e inferiore in modo tale che non vi sia alcun movimento verticale, ma la striscia di alluminio si muove liberamente a sinistra e a destra.

Per fare in modo che il carrello scorra liberamente, montare prima le due pulegge superiori poi, con le pulegge appoggiate sulla barra, segnare le posizioni delle due pulegge inferiori. Ora è possibile praticare i fori per queste due pulegge. Utilizzare prima un piccolo trapano "pilota" per evitare che il trapano più grande da 4 mm si muova.

Prima di piegare la striscia di alluminio a "U", praticare un foro in alto e in basso per adattarlo al diametro della penna. Ora completa le curve.

Fissare la cinghia di distribuzione al gruppo carrello mediante una fascetta stringicavo e un bullone da 3 mm tra le due pulegge superiori.

Il gruppo sollevamento penna

Attacca un servo SG-90 alla parte superiore del gruppo carrello utilizzando una o due fascette.

Lascia cadere la penna nei due fori che hai praticato. Assicurarsi che la penna scorra liberamente su e giù.

Fissare un "collare" alla penna in modo che la penna sia appena fuori dal tamburo quando il servo è in posizione sollevata.

[1] L'alluminio può essere tagliato incidendo entrambi i lati del foglio con un coltello affilato (taglierino), quindi flettendo il taglio sul bordo di un tavolo. Qualche movimento e il lenzuolo si spezzerà lasciando una rottura dritta. A differenza delle forbici per latta, questo metodo non piega l'alluminio.

Passaggio 3: il tamburo

Il tamburo
Il tamburo
Il tamburo
Il tamburo
Il tamburo
Il tamburo

Il tamburo è costituito da un tratto di tubo in plastica con due tappi terminali in legno [1].

Usa un compasso, impostato sul raggio interno del tubo, per disegnare i contorni del tappo terminale. Ora tagliare attorno a ciascun contorno usando una sega a lama fine ("coping", "fret"), quindi adattare ogni tappo finale con l'aiuto di una raspa per legno. Fissare i tappi terminali utilizzando piccole viti per legno a testa svasata.

Un bullone tecnico da 6 mm attraverso il centro di ciascun tappo terminale forma l'asse.

Dimensioni del tamburo

Le dimensioni del tamburo sono determinate dal formato della carta. Un diametro del tamburo di 100 mm supporta A4 verticale e A3 orizzontale. Un diametro del tamburo di 80 mm supporterà solo il formato A4 orizzontale. Utilizzare un tamburo di diametro il più piccolo possibile per ridurre l'inerzia… i motori BYJ-48 sono solo piccoli.

Un diametro del tamburo di 90 mm è ideale per carta A4 verticale e A3 orizzontale poiché i bordi opposti, quando avvolti attorno al tamburo, si sovrappongono di circa 10 mm, il che significa che hai solo una cucitura da fissare in posizione.

Rotazione del tamburo

Ogni asse passa attraverso una staffa terminale in alluminio in modo tale che il tamburo possa ruotare liberamente. Il gioco finale è impedito per mezzo di una GT-2, 20 denti, alesaggio di 6 mm, puleggia fissata all'asse ad un'estremità. Una cinghia dentata continua GT-2 collega il motoriduttore passo-passo BJY-48 al tamburo. Il motore richiede una puleggia con un diametro di 5 mm.

[1] I tappi terminali in plastica sono disponibili per la maggior parte dei diametri dei tubi, ma sono stati rifiutati poiché si adattano al tubo anziché all'interno e la plastica tende a flettersi. Probabilmente andrebbero bene se fosse usato un asse continuo invece dei bulloni … ma poi è necessario un metodo per fissare l'asse ai tappi terminali.

Passaggio 4: suggerimenti per la costruzione

Assicurati che la penna si sposti lungo il centro del tamburo. Ciò può essere ottenuto tagliando gli angoli dei supporti in legno. Se la penna è fuori centro tenderà a scivolare lungo il lato del tamburo.

La foratura accurata dei due fori della penna è importante. Qualsiasi oscillazione nella guida della penna o nel gruppo del carrello causerà oscillazioni lungo l'asse X.

Non stringere troppo le cinghie di distribuzione della GT-2… devono solo essere tese. I motori passo-passo BYJ-48 non hanno molta coppia.

I motori passo-passo BJY-48 mostrano spesso piccole quantità di gioco che è insignificante lungo l'asse X, ma è preoccupante quando si tratta dell'asse Y. La ragione di ciò è che una rotazione del motore dell'asse Y equivale a una rotazione del tamburo, mentre il carrello della penna richiede molti giri del motore dell'asse X per attraversare la lunghezza del tamburo. Qualsiasi gioco dell'asse Y può essere eliminato mantenendo una coppia costante sul tamburo. Un metodo semplice consiste nell'attaccare un piccolo peso a una corda di nylon avvolta attorno al tamburo.

Passaggio 5: Algoritmo di disegno al tratto di Bresenham

Algoritmo di disegno al tratto di Bresenham
Algoritmo di disegno al tratto di Bresenham
Algoritmo di disegno al tratto di Bresenham
Algoritmo di disegno al tratto di Bresenham

Questo plotter utilizza una versione ottimizzata [1] dell'algoritmo di disegno delle linee di Bresenham. Sfortunatamente questo algoritmo è valido solo per pendenze della linea inferiori o uguali a 45 gradi (cioè un ottante di un cerchio).

Per aggirare questa limitazione, "mappo" tutti gli input XY sul primo "ottante", quindi li "annulla" quando è il momento di tracciare. Le funzioni di mappatura di input e output per ottenere ciò sono mostrate nel diagramma sopra.

Derivazione

Il resto di questo passaggio può essere omesso se si ha familiarità con l'algoritmo di Bresenham.

Tracciamo una linea da (0, 0) a (x1, y1) dove:

  • x1=8=distanza orizzontale
  • y1=6=distanza verticale

L'equazione per una retta passante per l'origine (0, 0) è data dall'equazione y=m*x dove:

m=y1/x1=6/8=0.75=pendenza

Algoritmo semplice

Un semplice algoritmo per tracciare questa linea è:

  • int x1=8;
  • int y1=6;
  • float m=y1/x1;
  • trama(0, 0);
  • for (int x=1; x<=x1; x++) {
  • int y=round(m*x);
  • trama(x, y);
  • }

Tabella 1: Algoritmo semplice

X m m*x
0 0.75 0 0
1 0.75 0.75 1
2 0.75 1.5 2
3 0.75 2.25 2
4 0.75 3 3
5 0.75 3.75 4
6 0.75 4.5 5
7 0.75 5.25 5
8 0.75 6 6

Ci sono due problemi con questo semplice algoritmo:

  • il ciclo principale contiene una moltiplicazione che è lenta
  • usa numeri in virgola mobile che è anche lento

Un grafico di y contro x per questa linea è mostrato sopra.

Algoritmo di Bresenham

Bresenham ha introdotto il concetto di un termine di errore 'e' che viene inizializzato a zero. Si rese conto che i valori m*x mostrati nella tabella 1 possono essere ottenuti con l'aggiunta successiva di 'm' a 'e'. Si rese inoltre conto che y viene incrementato solo se la parte frazionaria di m*x è maggiore di 0,5. Per mantenere il confronto entro l'intervallo 0<=0.5<=1, sottrae 1 da 'e' ogni volta che y viene incrementato.

  • int x1=8;
  • int y1=6;
  • float m=y1/x1;
  • int y=0;
  • float e=0;
  • trama(0, 0);
  • for (int x=1; x<=x1; x++) {
  • e+= m;
  • se (e>= 0,5) {
  • e-= 1;
  • y++;
  • }
  • trama(x, y);
  • }

Tabella 2: Algoritmo di Bresenham

X m e e-1
0 0.75 0 0 0
1 0.75 0.75 -0.25 1
2 0.75 0.5 -0.5 2
3 0.75 0.25 2
4 0.75 1 0 3
5 0.75 0.75 -0.25 4
6 0.75 0.5 -0.5 5
7 0.75 0.25 5
8 0.75 1 0 6

Se esamini l'algoritmo e la tabella 2 lo osserverai;

  • il ciclo principale usa solo addizione e sottrazione … non c'è moltiplicazione
  • lo schema per y è lo stesso della tabella 1.

Ma stiamo ancora usando numeri in virgola mobile… risolviamo questo problema.

Algoritmo (ottimizzato) di Bresenham

L'algoritmo in virgola mobile di Bresenham può essere convertito in una forma intera se scaliamo 'm' ed 'e' di 2*x1 nel qual caso m=(y1/x1)*2*x1=2*y1

A parte il ridimensionamento di 'm' ed 'e', l'algoritmo è simile a quello sopra tranne:

  • aggiungiamo 2*y1 a "e" ogni volta che incrementiamo "x"
  • incrementiamo y se e è uguale o maggiore di x1.
  • sottraiamo 2*x1 da 'e' invece di 1
  • x1 viene utilizzato per il confronto invece di 0,5

La velocità dell'algoritmo può essere ulteriormente aumentata se il ciclo utilizza zero per il test. Per fare ciò è necessario aggiungere un offset al termine di errore 'e'.

  • int x1=8;
  • int y1=6;
  • int m=(y1<<1); //costante: pendenza scalata di 2*x1
  • int E=(x1<<1); //costante: 2*x1 per l'uso in loop
  • int e = -x1; //offset di -E/2: test ora eseguito a zero
  • trama(0, 0);
  • int y=0;
  • per (x=1; x<=x1; x++) {
  • e += m;
  • se (e>=x1) {
  • e -= E
  • y++;
  • }
  • trama(x, y);
  • }

Tabella 3: Algoritmo (ottimizzato) di Bresenham

X m E e e - E
0 12 16 -8 0
1 12 16 4 -12 1
2 12 16 0 -16 2
3 12 16 -4 2
4 12 16 8 -8 3
5 12 16 4 -12 4
6 12 16 0 -16 5
7 12 16 -4 5
8 12 16 8 -8 6

Ancora una volta lo schema per y è lo stesso delle altre tabelle. È interessante notare che la tabella 3 contiene solo numeri interi e che il rapporto di m/E=12/16=0,75 è la pendenza 'm' della retta.

Questo algoritmo è estremamente veloce poiché il ciclo principale prevede solo addizioni, sottrazioni e un confronto con zero. La moltiplicazione non viene utilizzata a parte quando inizializziamo i valori per 'E' e 'm' usando uno "spostamento a sinistra" per raddoppiare i valori di x1 e y1.

[1] Questa versione ottimizzata dell'algoritmo di Bresenham è tratta da un articolo "Bresenham Line and Circle Drawing", copyright © 1994-2006, W Randolph Franklin (WRF). Il suo materiale può essere utilizzato per la ricerca e l'istruzione senza scopo di lucro, a condizione che gli venga accreditato e che rimandi alla sua home page,

Passaggio 6: il codice

Scarica il file allegato in una cartella con lo stesso nome, quindi caricalo sul plotter utilizzando il tuo IDE arduino (ambiente di sviluppo integrato).

Scollegare il modulo bluetoorh HC-06 prima di tentare il caricamento. Ciò è necessario per evitare un conflitto della porta seriale con il cavo USB.

Codice di terze parti

Oltre al codice.ino di cui sopra, avrai bisogno dei seguenti pacchetti software gratuiti/donazione-ware:

  • Teraterm che è disponibile da
  • Inkscape che è disponibile da

Le istruzioni per l'installazione e l'utilizzo di ciascuno dei suddetti pacchetti di terze parti possono essere trovate nel mio articolo

Passaggio 7: Menu

Menù
Menù

Effettua una connessione bluetooth con il tuo plotter usando "Teraterm".

Attiva il "blocco maiuscole" poiché tutti i comandi sono in maiuscolo.

Digita la lettera "M" e dovrebbe apparire un menu come mostrato sopra.

Il menu è ragionevolmente autoesplicativo:

  • M (o M0) richiama il menu
  • G0 consente di inviare la penna a una specifica coordinata XY con la penna sollevata.
  • G1 consente di inviare la penna a una specifica coordinata XY con la penna abbassata.
  • T1 ti consente di posizionare la penna sulla tua coordinata 0, 0. Digita 'E' per uscire.
  • T2 ti consente di ridimensionare il tuo disegno. Ad esempio "T2 S2.5" scalerà il tuo disegno del 250%. La scala predefinita è 100%
  • T3 e T4 consentono di alzare o abbassare la penna.
  • T5 disegna un modello di prova "ABC".
  • T6 disegna un "bersaglio".
  • T7 disegna una serie di linee radiali, il cui scopo è verificare che l'algoritmo di Bresenham funzioni in ciascuno degli otto "ottanti"

Appunti:

  • tutti i movimenti della penna utilizzano la scala del disegno impostata utilizzando l'opzione di menu T2
  • i numeri "17:" e "19:" sono i codici di handshake del terminale "Xon" e "Xoff" dall'interprete arduino.

Passaggio 8: calibrazione

I valori per X_STEPS_PER_MM e Y_STEPS_PER_MM si riferiscono a un tamburo da 90 mm di diametro.

I valori per altri diametri del tamburo possono essere calcolati utilizzando le seguenti relazioni:

  • la circonferenza del tamburo è PI*diametro
  • 2048 passi equivalgono a un giro di ciascun albero motore
  • un giro di una puleggia GT-2 equivale a 40 millimetri di movimento lineare di una cinghia di distribuzione

Un altro metodo consiste nell'inserire i seguenti comandi,

  • G1 X0 Y100
  • G1 X100 Y100

quindi misurare la lunghezza delle linee risultanti e "scalare" i valori per X-STEPS_PER_MM e Y_STEPS_PER_MM

Passaggio 9: preelaborazione Gcode

Preelaborazione Gcode
Preelaborazione Gcode
Preelaborazione Gcode
Preelaborazione Gcode

Questo plotter richiede solo quattro dei gcode di Inkscape (ovvero: G0, G1, G2, G3). Il codice verrà eseguito molto più velocemente se rimuoviamo tutti i gcode e i commenti non necessari.

Per fare ciò è necessaria una copia di "Notepad++". Questo editor di testo gratuito contiene un motore di ricerca "espressione regolare" per trovare e rimuovere il testo indesiderato. Notepad++ è disponibile da

Apri il file da modificare con Notepad++ e posiziona il cursore nella parte superiore del file.

Seleziona "Visualizza/Mostra simbolo/Tutti i caratteri" seguito da "Cerca/Sostituisci…" dalla barra dei menu in alto.

Fare clic sulla casella di controllo "Espressione regolare" (vedere la prima immagine) e inserire ciascuna delle seguenti sequenze di codici nella casella di ricerca.

Fare clic su "Sostituisci tutto" dopo ogni voce:

  • %
  • (.*)
  • ^M.*$
  • Z.*$

Le espressioni regolari di cui sopra rimuovono tutti i simboli %, tutti i commenti mostrati tra parentesi, tutti i codici M, tutti i codici Z e i codici che seguono.

Ora fai clic sulla casella di controllo "Espressione estesa" (vedi la seconda immagine) e inserisci la seguente sequenza di codici:

r\n\r\n\r\n

Questa espressione rimuove i ritorni a capo e gli avanzamenti di riga indesiderati creati dalla prima sequenza.

Salva il tuo file con un nome diverso usando "Salva con nome".

Fatto.

Passaggio 10: risultati

Risultati
Risultati

Questo plotter è stato costruito come "prova di concetto" e non è mai stato concepito per essere perfetto. Detto questo i risultati non sono male. Soddisfano sicuramente il mio obiettivo progettuale di trasferire i contorni dell'acquerello su carta.

Le prime tre immagini sono rispettivamente i modelli di test integrati T5, T6, T7.

Il "Ciao mondo!" il pattern è stato inviato al plotter tramite bluetooth. Una copia "pre-elaborata" di questo file è allegata.

Passaggio 11: aggiornamento del codice

Aggiornamento del codice
Aggiornamento del codice

Il codice per questo plotter è stato aggiornato a Drum_Plotter_V2.ino.

Le modifiche rispetto all'originale Drum_Plotter.ino includono:

  • posizionamento della penna più fluido
  • ora riconosce le istruzioni gcode G02 (archi in senso orario)
  • ora riconosce le istruzioni gcode G03 (archi in senso antiorario)

Il diagramma allegato delinea il mio metodo per calcolare l'angolo dell'arco.

Passaggio 12: Drum_plotter_v3.ino

È allegato un aggiornamento del codice per "CNC Drum Plotter".

"drum_plotter_v3.ino" risolve un bug minore che influiva sulla precisione del plotter.

Cambiare la storia

Versione 2:

Aggiunte curve bi-arco

Versione 3:

Le seguenti funzioni sono state riscritte per risolvere un bug minore che ha influito sulla precisione del plotter.

  • (int) sostituito con round() nella funzione move_to().
  • funzione draw_line() algoritmo di ricerca "ottante" migliorato
  • L'interprete ora utilizza funzioni di stringa anziché puntatori, il che semplifica la progettazione. Ad esempio ora possiamo cercare "MENU" piuttosto che cercare la lettera 'M' quindi estrarre il numero intero che segue. Ciò consente di personalizzare il plotter con i propri comandi.

Passaggio 13: Drum_plotter_plotter_v4.ino

16 gennaio 2017:

Il codice di questo plotter a tamburo è stato ulteriormente ottimizzato. Sono state aggiunte funzionalità aggiuntive.

Le modifiche includono:

  • algoritmo draw_line() più veloce
  • funzione move_to() corrispondente
  • contapassi
  • correzione di bug minori

Per maggiori dettagli leggere i commenti all'interno di "drum_plotter_v4.ino" allegato.

Fai clic qui per visualizzare gli altri miei istruttori.

Consigliato: