EigenDama

Da EigenWiki.
Versione del 8 dic 2017 alle 17:16 di Rakk (discussione | contributi) (intro: aggiunto link al cloud + pipponcino openness)
Vai alla navigazione Vai alla ricerca

La eigenDama è nostro progetto di stampante 3D. Si tratta di una macchina basata sulla RepRap Prusa i3, un progetto di stampante self-replicating; in particolare, quella costruita ad eigenLab è gemella della variante elaborata presso il FabLab di Genova, la I3 kodama.

Abbiamo scelto questa famiglia di stampanti 3D per le sue caratteristiche di apertura del software, dell'hardware (per quanto possibile), e dei progetti. Per realizzare eigenDama abbiamo potuto fare affidamento sui progetti condivisi dal FabLab di Genova e da tutta la comunità OpenSource; facciamo altrettanto aprendo al pubblico la cartella sul Cloud in cui abbiamo accumulato tutte le nostre modifiche ai progetti, eccola qua:

https://cloud.eigenlab.org/s/wAK3dsHJ29g7tyw

Anche la pagina wiki che stai leggendo ha lo scopo di rendere accessibile a tutti e tutte l'utilizzo e l'appropriazione della stampante 3D che si trova in casottino.

L'eigenDama nell'atto di replicarsi, mentre stampa il proprio carrello dell'asse X.


Ingredienti

Microcontrollore

Il microcontrollore è un ATMega 2560, montata su una board Arduino Mega 2560, montata a sua volta su shield RAMPS 1.4.

Motori

I motori si preoccupano di tradurre gli impulsi elettrici generati dal microcontrollore in movimento fisico. La stampante usa dei motori passo-passo (detti stepper in inglese), che hanno la caratteristica di avere l'arco di rotazione suddiviso in molti passi, detti step: questa caratteristica li rende particolarmente indicati per controllare con grande precisione l'esatta orientazione dell'arco motore, quindi di poter controllare in modo accurato gli spostamenti operati dal motore.

Struttura, pezzi e vitamine

Sono dette vitamine tutte le parti che non possono essere stampate, e che quindi devono essere recuperate attraverso un circuito tradizionale di produzione e messa in commercio. Le vitamine della Prusa I3 sono principalmente:

  • barre filettate;
  • barre rettificate;
  • dadi, viti e rondelle;
  • motori, pignoni e cinghie;
  • caveria, elettronica, sensori e alimentatore;
  • piatto riscaldante e vetro protettivo.

I pezzi stampabili e stampati sono molti, e i loro .stl sono disponibili sul cloud. Alcuni pezzi sono stati ridisegnati nel tempo per migliorarne le caratteristiche e risolvere alcune problematiche, principalmente legate alla loro fragilità e al dimensionamento con le vitamine. Al momento sono stati ridisegnati:

  • tastatore a effetto Hall (disegnati supporti per fissare la PCB del sensore);
  • blocco dell'ingranaggio regolatore dell'asse Z (irrobustita la struttura aumentando lo spessore delle parti più fragili).

Tutti i file sono pubblicati da qualche parte, sul cloud c'è una cartella apposita con i pezzi rifatti.

 
Pezzi vecchio (viola) e nuovo (arancione) a confronto per il blocco dell'adjuster dell'asse Z.

Sensori

Endstops

Tastatore

Display

Sulla RAMPS è connesso un display LCD con cursore che viene usato normalmente per lanciare le stampe e monitorare la stampante (mentre è scomodo per fare modifiche, che oltretutto si perdono al riavvio).

Firmware

Il codice che gira su Arduino è eigenMarlin, un fork di Marlin contenente principalmente le modifiche che riguardano le caratteristiche specifiche dell'eigenDama. Il file principale è Configuration.h, che contiene i DEFINE più importanti.

Ogni modifica al firmware va compilata usando #Arduino IDE e AVR GCC (upload con seriale).

Offset

Tra i DEFINE ce n'è uno particolarmente rilevante, in quanto definisce l'offset sull'asse Z tra il tastatore e il piatto: in pratica è la distanza verticale da percorrere per arrivare al livello del piatto a partire dallo zero indicato dal tastatore. Il valore si aggira tra i 9 e gli 11 mm, e la corretta impostazione di questo è fondamentale per la riuscita della stampa.

Quando il valore di offset è troppo alto, la punta dell'estrusore viene a schiacciarsi sul piatto, arrivando nei casi più gravi a impedire del tutto l'estrusione del materiale; nella maggior parte dei casi, si osserverà una produzione di un brim non uniforme, con avvallamenti e zone vuote. La riga interessata è la 648, e in questo caso il valore di offset è -9.6:

#define Z_PROBE_OFFSET_FROM_EXTRUDER -9.6 // Z offset: -below +above  [the nozzle]
 
Difetto di stampa dovuto a un valore di offset troppo alto: l'estrusore è schiacciato sul piatto, conseguentemente l'estrusione del filamento avviene in maniera discontinua e non uniforme.

Viceversa, se l'offset è troppo basso l'estrusore si troverà sollevato dal piatto e il materiale verrà depositato in modo impreciso; in questo caso si nota che il filamento del brim è separato e fragile anzichè tutto unito.

Buon senso

In realtà il primo e più importante ingrediente è il buon senso: l'eigenDama, così come tante macchine e utensili autocostruiti e non, non è un MacBook Pro, ossia non è un oggetto fatto per funzionare as is in ogni situazione e in ogni condizione sempre nello stesso modo, senza alcun rischio e senza bisogno di interazione con l'utente. Le problematiche nell'utilizzo fanno parte by definition del funzionamento dello strumento, e l'unico modo per preservarlo è fare attenzione a cosa potrebbe non funzionare.

L'altro aspetto molto importante strettamente connesso alla consapevolezza di utilizzo, è la disponibilità ad osservare e cercare di comprendere quale possa essere la causa del malfunzionamento, al fine di suggerire la soluzione del problema e il miglioramento dello strumento.

Software

Il software coinvolto in qualche modo nel processo di stampa 3D è parecchio. Imparare a conoscerlo è fondamentale per vivere meglio con la nostra amica! (vedi anche #Firmware)

Modellazione

Gli oggetti 3D si possono creare e modificare con una pletora di programmi, tra cui scegliere a seconda di gusti ed esigenze personali; l'importante è assicurarsi di poter salvare i file in un formato utilizzabile in fase di slicing per poter generare il g-code che poi piloterà la macchina per stampare l'oggetto. Lo standard de facto è il formato STL, che memorizza la mesh triangolata registrando le posizioni dei vertici e la normale di ogni triangolo; in questo modo ovviamente si perdono le informazioni sulla scala dell'oggetto, ma questo non è un problema perché è uno dei parametri settati in fase di slicing.

OpenSCAD

OpenSCAD è un modellatore (libero) scriptabile, ossia genera un oggetto 3D a partire da forme di base come cubi e cilindri, combinandoli in operazioni geometriche semplici come unioni e intersezioni per produrre oggetti più complessi. Può risultare strano ad un primo impatto scrivere un codice che descriva come costruire un oggetto tridimensionale, anziché "modellarlo" graficamente con il mouse; in realtà questo tipo di approccio - forzandoci a descrivere sinteticamente l'oggetto che stiamo immaginando - spesso consente di tenere sotto controllo il processo di modellazione, ottenendo così risultati molto soddisfacenti.

Per chi abbia già qualche minimo rudimento di programmazione, basta leggersi il cheatsheet per iniziare a modellare!

POV-Ray

Il POV è un raytracer, particolarmente apprezzato dai/le matematici/che. Non supporta direttamente l'export o la conversione in formato STL, ma ci si può arrivare attraverso passaggi intermedi; stiamo lavorando alla possibilità di una conversione diretta.

Viceversa, con POV-Ray è possibile renderizzare le singole fette ricavate da un file STL convertito con stl2pov: vedi qui.

Blender

Blender è una suite OpenSource per la modellazione e l'animazione 3D. Ha una curva di apprendimento piuttosto lenta, ma una volta che ci si è impadroniti dell'interfaccia diventa uno strumento estremamente potente. In effetti un po' overkill per modellare oggetti da stampare in 3D.

Slicing

Per slicing si intende il processo di creazione delle "fette" orizzontali dell'oggetto, ossia i vari livelli che vengono stampati progressivamente sovrapposti dalla macchina.

Gli slicer normalmente prendono in input un file STL (vedi #Modellazione), più eventuali impostazioni specifiche per la macchina o preferenze costruttive per l'oggetto (vedi #Profiles)), e producono in output un file G-code (generalmente nel formato .gcode). Quest'ultimo è un formato standard per le macchine a controllo numerico: nel caso della stampante 3D le caratteristiche costruttive di eigenDama le impongono di procedere per strati sovrapposti, dunque il g-code conterrà le istruzioni per far muovere l'estrusore stampando ogni strato prima di passare al successivo.

Cura

Al momento i profili della eigenDama che che abbiamo per Cura sono:

  • uno per la stampa di manufatti con migliori proprietà meccaniche
  • un altro per la stampa di oggetti con una migliore risoluzione grafica e accuratezza dei dettagli.

Slic3r

Convertitore da STL a g-code per stampanti 3D RepRap.

Pronterface

Pronterface è l'interfaccia di controllo da utilizzare sul PC, che parla con la stampante su porta seriale.[1] Per gli utenti Arch, si tratta di un software pacchettizzato nell'AUR all'interno della suite Printrun.

Arduino IDE

Questo software fa stronzo-ca'a. Ciononostante, lo usiamo con installate le librerie builtin, più HID (versione 1.0.0) e LiquidCrystal (versione 1.0.4).

HowTo

Precauzioni importanti e suggerimenti per le varie fasi di preparazione e di stampa vera e propria.

Profiles

Il profilo è il set di configurazioni e impostazioni che permettono allo slicer di avere tutte le informazioni necessarie relative alla specifica macchina, in modo da preparare il g-code. Tra le impostazioni che si può regolare in un profilo c'è lo spessore dei muri, il tipo e la densità di fill-in, se la macchina deve costruire i supporti ove necessario, etc.[2]

Start ed End g-code

Lo start g-code e l'end g-code sono porzioni di g-code che vengono eseguite dalla stampante prima e dopo il g-code "principale" generato dallo slicer, rispettivamente. In questo modo si possono eseguire operazioni preliminari o di finitura, forzare o inibire l'esecuzione di calibrature varie, accendere e spengere ventole se necessario etc. Gli start/end g-code che stiamo testando si trovano sull'eigenCloud

Preparazione

  1. Accendi la macchina.
  2. Tira giù il chiodo del tastatore. Se la testina è troppo vicina al piatto per estrarre completamente il chiodo del tastatore, sollevala dal display con Prepare → Move Axis → Move Z → Move 1mm e rotella.
  3. Nebulizza la lacca per capelli sul piatto. Tieni il piatto lontano dalla testina e dalle altre parti di eigenDama per non spruzzare la lacca dove non serve. Importante: quando una stampa richiede tanto tempo, metti proporzionalmente più lacca.

Bed leveling e stampa

... Supponendo che fin qui sia andato tutto bene, si seleziona col cursore il preriscaldamento adatto per il materiale che abbiamo scelto. Quando il piatto e l'estrusore hanno raggiunto la giusta temperatura, si sceglie il file .gcode da stampare col cursore: l'eigenDama inizia quindi il bed leveling ossia una misura precisa dell'inclinazione del piatto per poterla compensare muovendo corrispondentemente l'asse z durante la stampa di uno strato.

Problemi (aka Trabolsciùting)

La nostra cara amica non perde occasione per palesare i problemi più disparati. Teniamo un diario dei problemi che affrontiamo, sperando possa risultare utile a chi incontra problemi simili!

Lievitazione del Filamento

 
"Lievitazione" del filamento avvenuta nella guaina in teflon del corpo estrusore. Si notino gli 0.4 mm di diametro acquistati dal filamento, che gli impediscono di entrare nel nozzle per l'estrusione.

Il filamento ha cominciato a bloccarsi sistematicamente nel corpo estrusore. Nonostante la profonda e accurata pulizia del corpo estrusore, della guaina in teflon e del nozzle, il filamento continua a bloccarsi. Si sospetta che il blocco sia dovuto all'umidità accumulata all'interno del filamento di ABS (confermata da caratteristici scoppiettii del filamento in fase di estrusione, con conseguenti difetti di stampa) che, quando il filamento staziona nella guaina dentro il dissipatore del corpo estrusore (dunque a una temperatura vicina ma inferiore ai 100 gradi), provoca letteralmente una lievitazione del filamento, che si ingrossa, bloccandosi definitivamente.

In parte questo è sicuramente dovuto all'umidità contenuta nel filamento, ma anche a una temperatura troppo elevata all'interno della guaina, dovuta nel nostro caso alla ventola spenta. Dopo avere essiccato il filamento in forno ventilato a temperatura di 75° centigradi, si è proceduto anche a inserire nello start g-code il comando per l'accensione della ventola.

Il bed leveling funesta tuttoquanto

L'abbiamo disabilitato, non so altro per ora.


Note

  1. Volendo ci si può connettere direttamente alla porta seriale e inviare i comandi.
  2. I profili che stiamo testando per eigenDam si trovano nella relativa cartella sul cloud.