Linuxcnc3D/it

From RepRap
Jump to: navigation, search

Questa pagina l'ho creata per dare uno spunto da cui partire a tutti coloro che vorrebbero usare il software opensource linuxcnc per gestire una stampante 3D. Viste le enormi potenzialità e la notevole personalizzazione che si può raggiungere con tale software, credo che sia una soluzione low cost per chi vuole iniziare ad addentrarsi nel mondo della stampa 3D. La soluzione che propongo è nata dall'idea di riuscire ad usare la mia fresatrice a controllo numerico autocostruita per stampare i noti filamenti di polimero termoplastico usando la stessa meccanica ed elettronica della fresatrice; l'idea era quella di sostituire il mandrino portafrese con un estrusore.

Girovagando in rete ho trovato pochissimo su questo argomento, ma siccome non mi arrendo facilmente mi sono messo a raccogliere più informazioni possibili per poter poi cominciare a muovere i primi passi in autonomia. Attualmente ci sono solo pochissimi utenti che hanno intrapreso questa strada, usando però un microcontrollore per la gestione della temperatura e dell'estrusore stesso. Io invece volevo gestire tutto da linuxcnc (sapevo che poteva farlo) e ci sono riuscito.

Attualmente sto usando la macchina come stampante 3D usando anch'io una scheda Arduino Uno, ma solo per la lettura del valore analogico del sensore di temperatura. Ho intenzione di sostituirla quanto prima con un qualsiasi integrato in grado di convertire analogico digitale.

Lo schema di funzionamento è semplice: la scheda Arduino legge il segnale proveniente dal sensore di temperatura, lo analizza e restituisce un valore digitale che convertito su una scala di valori indica che temperatura abbiamo sull'estrusore. Questo avviene tramite porta usb con la quale l'arduino è collegato, ma sostituendolo con un convertitore si può mandare il segnale su un pin di ingresso della parallela. In questo modo ci si svincola dal microcontrollore. Tutto il resto è gestito come una normale fresa a quattro assi dove il 4° asse corrisponde al motore che spinge il filo nell'estrusore vero e proprio.

Usando quindi il solito metodo: oggetto > file .stl > software di slicing > gcode.

Io ho usato Slic3r come primo software e sono riuscito subito a stampare qualcosa di decente, poi sono passato a Kisslicer e devo dire che per le mie conoscenze e capacità mi trovo meglio, ottenendo stampe nettamente migliori, ma credo che sia solo una questione soggettiva. Q uindi, settando bene i vari parametri, impostando come nome dell'asse per l'estrusore la lettera "A" al posto della "E" e aggiungendo alcuni comandi per la creazione del gcode con dei prefix e dei post, si crea un gcode pulito da mandare in pasto a Linuxcnc.

Ovviamente bisogna settare il rapporto di estrusione con i giri del motore (stepper nel mio caso), ma questo va fatto comunque con qualsiasi software.

Mi trovo così una macchina che in meno di 5 minuti si trasforma da cnc a 4 assi a stampante 3D.

Qualcuno si chiederà se ne vale la pena: io dico di si, a condizione che non si abbia l'esigenza di stampare e fresare alternativamente di frequente. Comunque poi la meccanica di una cnc (specialmente se autocostruita come la mia)è più rigida di quella di una comune stampante 3D, di conseguenza meno veloce ma più precisa. Ma il punto non è questo. Il fatto è che adesso sono in grado di realizzare tutti i componenti per costruire una nuova stampante 3D autonoma e comandarla però dallo stesso computer e stesso software semplicemente staccando uno spinotto della parallela ed attaccandone un'altro e scegliendo quale configurazione usare all'avvio di linuxcnc!! (lo trovo fantastico!!)

Su questa pagina condivido i file di configurazione che uso per la mia macchina allo scopo di poter fornire, a chi vuol provare, una base da cui partire modificando tali file secondo le proprie specifiche della macchina che usa.

I file sono i seguenti:

- linuxcnc3D.hal : è il file di configurazione hal principale della mia macchina; http://reprap.org/wiki/File:Linuxcnc3D.hal.zip

- linuxcnc3D.ini : è il file di configurazione ini della mia macchina; http://reprap.org/wiki/File:Linuxcnc3D.ini.zip

- temperatura.hal : è il file che gestisce il pin di ingresso del segnale proveniente dal sensore e lo collega agli altri pin che lo usano; http://reprap.org/wiki/File:Temperatura.hal.zip

- temperatura.xml : è il file che visualizza la temperatura graficamente sull'interfaccia axis; http://reprap.org/wiki/File:Temperatura.xml.zip

- letture temperature.ino : è il file contenente lo sketch da caricare sull'Arduino Uno; http://reprap.org/wiki/File:Letture_temperature.ino.zip

- arduino : è il file python che viene caricato all'avvio di linuxcnc e che serve per tradurre il segnale che viene letto in un valore di temperatura che linuxcnc poi gestirà. Questo file va copiato senza estensione nella vostra cartella dei file python principale, che può essere ad esempio home/usr/bin e va reso eseguibile con il comando da terminale : sudo chmod +x /usr/bin/arduino (nel caso il percorso del file sia questo). http://reprap.org/wiki/File:Arduino.zip

Per comodità tutti i file insieme per un unico download: http://reprap.org/wiki/File:File_condivisi.zip"


Alcune foto della realizzazione dell'estrusore:

Estrusore1.jpg

Come forse si può capire dalla foto, come riscaldatore ho usato una vecchia candeletta di un motore diesel: soluzione alternativa ma di facile reperibilità, discreta potenza, ottima velocità di riscaldamento, facile sostituzione. Per quanto riguarda il sensore (aspettando il termistore che ho ordinato) ho usato una comune ntc 10k, della quale non avendo datasheed ho rilevato i valori di resistenza a diverse temperature con il forno di casa, ma che comunque non è il massimo visto che ha una certa linearità solo fino a circa 125°c, perciò da sostituire prima possibile per un controllo più preciso (e fondamentale) delle temperature di estrusione. Il nozzle è ricavato da un da un blocchetto di ottone abbastanza massiccio con filettatura interna M10 e foro di uscita 0,45mm. Il corpo centrale è ricavato da un pezzo di barretta di acciaio filettata M10 e forata con diametro 2mm (uso filo PLA da 1,75mm) e con inserita nella parte superiore una cannuccia guidafilo in teflon. Il tutto avvitato nel blocchetto di alluminio dove sono inserite la candelette e e il sensore. Il blocco bianco superiore è sempre di teflon filettato internamente M10 per ospitare la barretta di acciaio (corpo centrale). Come si vede nella foto successiva il tutto è calettato in un cilindro di alluminio del diametro del mio attacco per il mandrino della fresa, di modo che possa intercambiare solo i due "attrezzi" finali.

Estrusore2.jpg

Estrusore3.jpg

Il motore è uno stepper in presa diretta: ha un ingranaggio sull'albero che blocca il filo contro una puleggia di nylon scanalata montata su cuscinetto e tenuta in posizione da un sistema di bloccaggio. La forza del motore sembra abbondante nonostante la presa diretta (vedo che tutti usano ingranaggi di riduzione) e per il momento non ha mai avuto problemi di slittamento anche a velocità di estrusione più alte. Da notare che le mie velocità, vista la meccanica rigida, non superano i 50mm/sec, quidni non è detto che arrivando a 100 o 150 mm/sec con una meccanica più fluida non inizino i problemi per detto motore...

Ora una foto di insieme per far capire meglio di che macchina sto parlando...

Vista macchina.jpg

Come detto il riscaldamento dell'ugello di estrusione l'ho ottenuto usando una candeletta di motore diesel, alimentata in pwm da linuxcnc tramite pin della parallela che comanda l'accensione di un mosfet alimentato a 12v con alimentatore atx da pc. Di seguito una foto della prova su breadborad che poi ho realizzato su circuito stampato (realizzato con la fresa ;-) !).

Scheda breadboard.jpg

E questa una primissima prova di stampa:

Estrusore6.jpg

Estrusore4.jpg

Ed alcuni oggetti di prova stampati:

Base2.jpg

Fischietto2.jpg

Adattatore1.jpg

Piatto levigatrice nuovo.jpg

Android.jpg

E adesso un link ad un piccolo video per vedere la macchina all'opera:

https://www.youtube.com/watch?v=lG775vh9WzU

Per quanto riguarda il codice da eseguire, come ho detto sopra, io lo genero usando Kisslicer. In questo software posso settare moltissimi parametri tra cui anche il nome dell'asse usato per l'estrusore, nel mio caso "A". Per i settaggi della temperatura invece, visto che i soliti codici sopra il 99 per linuxcnc non vanno bene, ho disattivato quelli standard tipo M104 ecc, ed ho usato quelli classici che uso anche per la fresa, quindi "M3" per accendere il riscaldatore e "S" seguito dal valore in gradi per la temperatura. Poi io uso per il momento la ventola sempre accesa, altrimenti userei "M6" e "M7" per accenderla o spegnerla.

Riassumendo: con la fresa, M3 S8000 accende il mandrino e lo imposta a 8000 rpm, con la stampante, M3 S220 accende il riscaldatore e lo imposta a 220°C.

Tramite la funzione nel file hal "near" (vicino) e lo speed-at-speed sempre in hal, si ottiene che quando si lancia il codice in linuxcnc, questo fa si che si accenda prima il riscaldatore, l'ugello di estrusione raggiunga la temperatura impostata e solo a questo punto inizi ad eseguire il codice vero e proprio.

Aggiungo qualche dettaglio della mia macchina.

Come scheda driver per i motori stepper uso la tanto bistrattata schedina cinese 4 assi con driver Toshiba TB6560, opportunamente modificata come da istruzioni lette in forum specifici di cnc, ed il risultato, per le mie esigenze, è di tutto ripetto. Fortuna? Può essere, ma visto che quando l'ho comprata in rete dall'oriente hanno fatto confusione e me ne sono arrivate 2, ho modificato anche la seconda...ed il risultato è il medesimo.

Conclusione: se non si è troppo esigenti si può fare!!

Io ho motori da 2A che alimento con alimentatore switching da 24V, ho realizzato un buon sistema di raffreddamento della scheda driver e per il momento , anche dopo ore di servizio consecutive, non ho avuto problemi ne perdite di passi.

Come meccanica invece sono sull'artigianale...niente guide a ricircolo e cose varie (sennò che low cost era?!) ma tutte barre e carrelli recuperate da vecchie stampanti ad aghi, come del resto i motori stepper.

Come trasmissione ho usato pulegge calettate su vite trapezia passo 4mm con cinghietta al motore con riduzione rapporto 2:1.

Detto questo ecco che si capisce come mai la poca velocità: arrivo in tutta sicurezza, senza perdita di passi, a 2500mm/min.

Voglio dire a chi si sta apprestando ad affacciarsi a questo mondo a controllo numerico, che per la mia esperienza, queste velocià sono più che sufficienti per l'uso che ne possiamo fare per passione...

Mi spiego: in fresatura, 2,4 metri al minuto non sono poi così pochi...mentre per gli spostamenti veloci, se avessi una macchina con un piano utile di 2 metri per 1 forse serebbe lenta, ma considerando le dimensioni ridotte (la mia è 400x300x110 (x y z)) quando va in rapido, fa prestissimo a posizionarsi.

Inoltre su spostamenti così brevi, tenendo conto delle rampe di accelerazione e decelerazione, difficilmente si arriva a "tutta birra", quindi sarebbe bello poter dire che la mia macchina va a 10000mm/min, si, ma quando la uso a quella velocità?

Diverso è il discorso per la stampante3D: la mia velocità di punta , sui 40mm/sec, non è moltissimo, anzi , è bassina.

Quando si stampano oggetti di dimensioni più generose si potrebbe andare tranquillamente anche a 100mm/sec, quindi più del doppio.

Per questo ho intenzione di realizzare una seconda stampante autonoma, ma il controllo con linuxcnc per me era fondamentale.

Spero che questa pagina possa essere utile a qualcun'altro che vorrà cimentarsi in questo tipo di realizzazioni.

Questo un video della stampa del condotto per forzare il raffreddamento del pla estruso:

https://www.youtube.com/watch?v=A3NdtjRjU4I