Category Archives: Guest Projects

Il Firmware e le sue impostazioni di base

Post introduttivo e indice.

Il Firmware installato nella mia Prusa i3 è il Marlin standard scaricabile da Github  https://github.com/open3dengineering/Prusa-i3/tree/master/Firmware/Marlin

Questa versione deve essere personalizzata per le caratteristiche della stampante che si sta costruendo.

In alternativa è possibile scaricare la mia versione  Marlin-Marlin_v1_Prusa_i3_WORKING già adattata, aggiornata e funzionante su questa stampante.

Scaricate il pacchetto  .ZIP e scompattatelo in una cartella.

Per installare il firmware nell’Arduino serve l’ambiente di sviluppo Arduino IDE e la stampante deve essere pronta, accendibile e non deve fumare nulla!

TUTTE LE ISTRUZIONI  CHE SEGUONO SI RIFERISCONO ALL’AMBIENTE WINDOWS (Windows 7-8-10)

A dir la verità non servirebbe accendere nulla perchè collegando il panino Arduino+ RAMPS al computer con l’USB, l’elettronica con il pannello LCD viene alimentata dall’USB che porta le alimentazioni della sola elettronica dal computer.  ATTENZIONE, i motori ed i riscaldatori non possono funzionare con questa alimentazione perciò dopo il download del firmware sarà necessario collegare l’alimentatore di potenza per poter azionare la stampante.

NON COLLEGATE LA SCHEDA ARDUINO AL COMPUTER SE NON AVETE PRIMA INSTALLATO I DRIVERS

Per fare questo serve il SW arduino IDE versione 1.0.5 o 1.0.6, l’ambiente di sviluppo di Arduino per la creazione di programmi da scaricare nell’omonima e famosissima scheda.
Lo potete scaricare da http://arduino.cc/en/Main/Software  nella sezione PREVIOUS RELEASES.

Consiglio vivamente di utilizzare le vecchie versioni 1.0.5 o 1.0.6 (non le ultime versioni) scaricabili qui https://www.arduino.cc/en/Main/OldSoftwareReleases#1.0.x

Scompattata la cartella Arduino, si può creare un link sul desktop all’eseguibile Arduino.exe senza il bisogno di installare nulla (a meno che non scarichiate la versione installabile).

Per fare in modo che il computer riconosca correttamente la scheda Arduino è necessario scaricare i driver dal sito Arduino ed installarli seguendo queste istruzioni: https://www.arduino.cc/en/Guide/Windows

Aperto finalmente Arduino IDE, verificare che in Strumenti ->Porta Seriale Arduino veda la porta di comunicazione COM x (il numero della porta può variare da PC a PC) ed in Strumenti -> Tipo di Arduino  veda la scheda Arduino Mega 2560 o Mega ADK.

Caricare Marlin nel sistema di sviluppo con  File-> Open ->  Marlin.ino  dalla cartella scompattata all’inizio e selezionare in alto la sezione configuration.h

arduino1

Questo file va a configurare e personalizzare il firmware per la stampante alla quale vogliamo applicarlo.
Nel nostro caso è già tutto pronto (6 mesi di prove risparmiate).

Una piccola precisazione:  le righe precedute da //  sono commentate perciò non vengono prese in considerazione dal compilatore.
Il doppio slash // permette di aggiungere note (ne troverete tantissime) che permettono di tener traccia di cambiamenti fatti e inserire promemoria di vario genere.
Marlin è documentato in ogni sua parte per cui non andrò a spiegare tutte le righe del FW ma solamente quelle più importanti.
Andiamo allora a vedere i punti salienti per la configurazione della stampante.

In riga 84 si trova la definizione del tipo di scheda di controllo.

#ifndef MOTHERBOARD
#define MOTHERBOARD 33
#endif

Questo va a definire il tipo di elettronica utilizzata per il controllo della stampante.
il numero si prende dalla lista sopra il define.
Nel nostro caso  33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
Quindi una stampante dotata di Arduino+ RAMPS+ estrusore, Ventilatore di raffreddamento e letto di stampa riscaldato (quest’ultimo può anche non esserci vedremo poi come attivarlo/disattivarlo).

In riga 89 è possibile personalizzare il messaggio di startup della stampante

#define CUSTOM_MENDEL_NAME “Prusa i3D”   All’accensione il display indica Prusa i3D READY!

ATTENZIONE Il nome impostato può avere al massimo 13 caratteri.

Saltiamo i successivi 2 #define  banali, lasciandoli come stanno e passiamo al thermal setting:

Thermal Setting

Quì è importante conoscere il tipo di termistore utilizzato nell’estrusore che comprerete.
All’atto dell’acquisto chiedete al rivenditore a quale profilo termico Marlin appartiene il termistore da 100KOhm inserito nell’estrusore e/o fornito con il piatto di stampa riscaldato (se lo prendete).

Generalmente la maggior parte dei termistori utilizzati nelle stampanti 3D sono da 100KOhm a temperatura ambiente e possono essere di marche diverse e di conseguenza profili termici diversi ovvero curve resistenza/temperatura diverse uno dall’altro.

Perciò Marlin ha un file Thermistortable.h che contiene tutti i profili termici elencati in configuration .h in modo da gestire il più linearmente possibile la temperatura dell’hot end.

Per cui dalle righe 146 a 149 i seguenti #define permettono di assegnare un determinato profilo termico alle varie parti riscaldate della stampante

#define TEMP_SENSOR_0 11  Il termistore dell’estrusore
#define TEMP_SENSOR_1 0     il termistore del secondo estrusore (se presente)
#define TEMP_SENSOR_2 0     ulteriore termistore
#define TEMP_SENSOR_BED 11  il termistore del piatto riscaldato

nel mio caso il termistore che mi è capitato è QU-BD silicon QWG-104F-3950  con coefficente beta di 3950 corrispondente al profilo 11.
Generalmente gli estrusori comperati in cina hanno questo termistore comunque è bene verificare con il venditore per non trovarci poi a stampare con temperature troppo alte come è capitato a me.                                Questa è la mia stampa Nr 1

IMG_1132

Passiamo ora alle righe 164-175 in cui si vanno a definire le temperature minime al di sotto delle quali la stampa non parte perchè corrispondenti a un termistore interrotto (resistenza infinita)  e massime al di sopra delle quali scatta la protezione e corrispondenti ad un termistore in corto circuito. In questa condizione il riscaldatore continuerebbe a scaldare portando l’hotend a temperature elevate con il rischio di incendio.

#define HEATER_0_MINTEMP 5   riscaldatore estrusore 0
#define HEATER_1_MINTEMP 5   riscaldatore estrusore 1
#define HEATER_2_MINTEMP 5   riscaldatore 2
#define BED_MINTEMP 5              letto di stampa (mettere questo valore a 0 se non presente)

5 corrisponde alla temperatura minima in gradi indicata dal termistore all’elettronica.
Poichè questa condizione è altamente improbabile, solo in caso di guasto, il display restituisce un errore tipo Mintemp error  e la stampa non parte.

#define HEATER_0_MAXTEMP 250
#define HEATER_1_MAXTEMP 250
#define HEATER_2_MAXTEMP 250
#define BED_MAXTEMP 120   // mettere a 120 quando installo il piatto riscaldato.

Al contrario questi #define permettono di impostare una temperatura massima di 250°C per l’estrusore/i e 120 per il letto di stampa oltre le quali il riscaldatore viene spento e la stampa interrotta con segnalazione di errore Maxtemp error.

Impostazione del  PID righe 212-213 e 214

// Mendel Parts V9 on 12V
    #define  DEFAULT_Kp 63.0    
    #define  DEFAULT_Ki 2.25    
    #define  DEFAULT_Kd 440

Prima di passare alla impostazione del PID ecco una breve spiegazione tratta da RepRapWiki

PID sta per Proportional-Integral-Derivative control algorithm usato in particolare sul firmware Marlin ma anche in altri firmware per gestire il riscaldamento degli hot end e dei letti di stampa.

Tarare il PID significa ottenere i valori di Kp, Ki e Kd per definire l’algoritmo di approccio alla temperatura impostata. Se la temperatura sale troppo velocemente e oscilla molte volte attorno alla temperatura target prima di stabilizzarsi, allora questi valori non sono corretti.

Per tarare il PID si utilizza il comando M103 E0 S200 C8 ad hot end freddo per lanciare la procedura  PID Autotune.
Per impartire un comando Gcode alla stampante, la si deve collegare al PC con il cavo USB ed scaricare un SW di interfacciamento con la stampante tipo Repetier Host  o Klimen Printrun.
Io ho sempre usato Repetier Host sia per la comunicazione con la stampante che per lo slicing che si basa sul motore di Cura.  Una volta impostate le caratteristiche della stampante e connessa la stampante cliccando su “Connetti“, un’apposita interfaccia “Controllo manuale” sulla destra, mediante la casella GCode, permette di impartire un qualsiasi comando Gcode alla stampante o comandare direttamente gli assi e tutte le parti della stampante con il mouse cliccando sulle frecce e sui cursori. La parte bassa della schermata fornisce inoltre un comode Log delle operazioni.

repetier

La procedura PID autotune, comando GCode  M103 E0 S200 C8 riscalda l’hot end 0  (E0), eseguendo 8 cicli (C8) di riscaldamento e raffreddamento attorno alla temperatura target S200 (200°C) ed al termine restituisce i valori Kp, Ki e Kd da inserire in Marlin sulle righe 212-213 e 214 di configuration.h.

Perciò i valori preimpostati nel configuration.h che stiamo analizzando potrebbero non andare bene per la vostra stampante per cui, dopo aver fatto delle prove di stampa, se si osserva una temperatura che sale repentinamente verso il target, lo supera di 8-10 gradi, ridiscende sotto questa di 8-10 gradi, risale ecc..senza stabilizzarsi, è consigliabile fare il PID autotuning.

Per ulteriori approfondimenti http://reprap.org/wiki/PID_Tuning
oppure http://numbersixreprap.blogspot.it/2013/10/installing-and-pid-tuning-new-j-head.html

THERMAL RUNAWAY

Questa feature presente solo in alcune versioni di Marlin previene sovrariscaldamenti causati da malfunzionamenti del termistore.
Le righe da 290 a 300 contengono dei #define per calibrare il comportamento di questa feature nei confronti degli estrusori e del letto di stampa riscaldato.

Il funzionamento di questa è spiegato ampiamente nelle note all’interno di Marlin e le impostazioni sono leggermente diverse da quelle proposte nel Marlin standard per il letto riscaldato Righe 299 e 300.

#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 60           //in seconds (era 20)
#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 10    // in degree Celsius (era 2)

Con i valori originali (tra parentesi) la protezione risultava troppo sensibile per il letto riscaldato che ha dei tempi di reazione più lenti dell’estrusore e con temperature alte per stampare ABS (110° -120°) la protezione interveniva prematuramente.

I valori di THERMAL RUNAWAY per l’estrusore invece sono ottimali.

Passiamo alla sezione successiva:

Mechanical Setting.

Anche quì senza spiegare tutta la logica degli endstop rimando al seguente link http://www.instructables.com/id/Building-a-Prusa-i3-3D-Printer/step11/End-Stops-A-primer/

me la sono cuccata tutta anch’io…..

Prima di impartire il comando di HOME ALL AXIS dal pannello, accertatevi di aver calibrato l’endstop Z in modo che si attivi in una posizione più alta del piatto di stampa.

Nella sezione Calibrazioni ci occuperemo dell’esatta posizione dell’ugello sul piatto di stampa.

La sequenza di homing è la seguente:
Asse X va in posizione Home muovendo il carrello di stampa verso destra fino all’endstop X.
Asse Y va in posizione Home muovendo il piatto di stampa in dietro fino l’endstop Y
Asse Z muove il carrello di stampa verso il basso fino all’endstop Z (estrusore a contatto con il piatto di stampa) (accertatevi di aver calibrato l’endstop Z in posizione Home Z di sicurezza)

Se la stampante è stata costruita seguendo i miei appunti, mettendo gli endstop come indicato, si possono usare i valori preimpostati vi trovate una stampante con Home position nell’angolo davanti a destra del piatto di stampa.   Altre Prusa i3 possono avere la home position davanti a sinistra ma alla fine non è determinante per la stampa.

Vorrei solo fare un appunto sulle righe da 334 a 339 che determinano la logica dei microswitch (endstop).

const bool X_MIN_ENDSTOP_INVERTING = true; 

un valore false significa che l’endstop è NC (Normalmente Chiuso)
un valore true significa che l’endstop è NA (Normalmente Aperto) o non è montato affatto.

Le righe da 370 a 372 invece vanno impostate in base alla posizione degli endstop sulla stampante.

#define X_HOME_DIR  1
1 = posizione endstop (home X) a DESTRA (connessione in RAMPS su X MAX pins)
-1 = posizione endstop (home X) a SINISTRA (connessione in RAMPS su X MIN pins);

#define Y_HOME_DIR -1
-1 = posizione endstop (home Y) sul RETRO  (connessione in RAMPS su Y MIN pins);
1 = posizione endstop (home Y) sulla parte frontale (connessione in RAMPS su Y MAX pins);

#define Z_HOME_DIR -1 
-1 = posizione endstop (home Z) in BASSO;
1 = posizione endstop (home Z) in ALTO.

con queste impostazioni X=1 Y=-1 Z=-1 la stampante va in HOME con carrello X a destra, piatto Y dietro, Z in basso.

Per ulteriori chiarimenti rimando allo schema delle connessioni:http://scifablab.ictp.it/wp-content/uploads/2015/05/Schema-filature.jpg

Movement Setting

Lasciamo come stanno i valori indicati nei  #define di riga 495 e 496 e passiamo al #define di riga 511

#define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,4000,687.58933}    // X, Y, Z, E

Qui si devono indicare gli step/mm per tutti gli assi X, Y, Z, E  (E=Estrusore)
Anche l’estrusore è considerato come un asse.

Questi sono i valori più importanti di tutte le impostazioni perchè determinano con esattezza l’entità degli spostamenti dell’estrusore, la quantità di materiale estruso e di conseguenza la corretta dimensione e la qualità degli oggetti stampati.

Premesso che se la stampante viene costruita seguendo le mie indicazioni, i valori inseriti sono corretti.

In ogni caso volendo verificare i valori rimando alla guida alla quale mi sono ispirato anch’io
http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide

Riassumo brevemente:

XY steps
I
l valore steps-per-mm può essere facilmente calcolato usando le caratteristiche delle pulegge dei motori e il tipo di cinghia.

Se dopo aver calcolato correttamente questo valore, gli oggetti risultanti dalle stampe hanno dimensioni errate, significa che la cinghia è danneggiata o non ben tesa o qualcos’altro non funziona a dovere.

La formula di base per il calcolo dei valori X e Y da mettere nel #define… è:

steps_per_mm = (nr.steps del motore_per_giro * driver_microstep) / (passo della cinghia * numero denti puleggia motore)
Se abbiamo usato un motore NEMA 17 dalle caratteristiche del motore sappiamo che l’asse ruota di 1.8° per step.
Quindi per fare una rotazione completa di 360° farà 200 step  (360/1.8).
Il valore nr.steps del motore_per_giro da usare nella formula è 200

Dalle caratteristiche dei driver pololu A4988 si evince che il massimo valore di microstep ottenibile è di 1/16 per cui nella formula il valore driver_microstep da usare è 16

Ora si devono contare i denti della puleggia GT2  calettata sull’asse dei motori X e Y (nel mio caso 16 denti)  e ovviamente il pitch (passo) della cinghia GT2 è di 2mm quindi il valore passo della cinghia è 2  e numero denti puleggia motore è 16  da cui:

(200 * 16) / (2 * 16) =   3200/32 = 100 steps per mm   100 è il valore da assegnare a X e Y

Z steps

La stampante Prusa i3 usa barre filettate per i movimenti lungo l’asse Z.
Così per calcolare di quanto si sposta l’asse Z ad ogni giro del motore si deve conoscere quanta rotazione viene trasmessa alle barre filettate e poi usare il passo della filettatura “thread pitch” delle barre (distanza-per-rivoluzione) per determinare il moto verticale lungo l’asse Z.

La formula per calcolare il movimento Z di una barra filettata rotante è:

steps_per_mm = (steps_motore_per_giro * driver_microstep) / passo della barra filettata

Nel nostro caso usando la barra filettata M5 e gli steps_motore_per_giro sono sempre 200.
I microstep supportati dal driver sono sempre 1/16 quindi 16.

Il passo della barra filettata si dovrebbe trovare in qualche catalogo su internet in ogni caso rimando all’ottimo Prusa Calculator anche per la verifica dei valori precedenti http://prusaprinters.org/calculator/

Da questo si evince il passo della barra M5 che è 0.8  da cui il calcolo:
(200 * 16) / 0.8 = 4000  è il valore da assegnare a Z

E (Extruder) steps

L’estrusore tipo “Wade” montato nella mia stampante usa un motore NEMA 17 che pilota due  ruote dentate di riduzione e fa girare un bullone zigrinato “hobbed bolt.”

Per il calcolo degli E steps è importante conoscere con una certa precisione il diametro della gola zigrinata dell’hobbed bolt.

bolt1,75mm

La gola del mio Hobbed Bolt ha un diametro di 6,37mm (verificare questo valore perchè può variare in base al fornitore)

La ruota dentata piccola ha 10 denti
La ruota dentata grande ha 43 denti

La formula standard è:
e_steps_per_mm = (steps_motore_per_giro * driver_microstep) * (numero denti ruota grande / numero denti ruota piccola) / (diametro gola hobbed bolt * pi)

da cui il calcolo:     (200 * 16) * (43 / 10) / (6,37 * 3,14159) = 687,589330 steps per mm è il valore da assegnare a E

Inserite i valori calcolati nella stringa:
#define DEFAULT_AXIS_STEPS_PER_UNIT   {100,100,4000,687.58933}

Lasciamo invariati tutti gli altri valori ed eventualmente chiunque è libero di approfondirli uno ad uno. Internet propone moltissima letteratura in merito.

Ancora un cenno riguardante le righe  da 557 a 563 in cui si definiscono i parametri di Preheat.

Il Preheat è utile per cambiare il filamento della stampante o per altre attività sull’estrusore.
Si ricordi che qualsiasi attività di manutenzione e smontaggio dell’hotend (per risolvere intasamenti feroci) va fatta a caldo pena l’anomala forzatura dei filetti in alluminio e ottone e compromissione dell’intero estrusore.  ATTENZIONE ALLE USTIONI!

Il preheat del PLA avviene a temperature più basse ed a mio avviso non necessita di riscadamento del letto di stampa e nemmeno di azionare il ventilatore. Perciò le mie impostazionei sono le seguenti:

#define PLA_PREHEAT_HOTEND_TEMP 200  //mettere il valore più adatto all’estrusione del PLA
#define PLA_PREHEAT_HPB_TEMP 0 // si decide di non riscaldare il letto di stampa
#define PLA_PREHEAT_FAN_SPEED 0   // no ventola di raffreddamento del PLA

#define ABS_PREHEAT_HOTEND_TEMP 240  // mettere il valore più adatto all’estrusione dell’ABS
#define ABS_PREHEAT_HPB_TEMP 0  // si decide di non riscaldare il letto di stampa
#define ABS_PREHEAT_FAN_SPEED 0   // no ventola di raffreddamento

LCD and SD support

Anche qui i dati inseriti valgono per il pannello LCD standard con supporto della SD card denominato Utilpanel o REPRAP_DISCOUNT_SMART_CONTROLLER
Le righe 571 572 575 e 576 permettono di impostare la sensibilità dell’encoder rotativo per la navigazione nei menu e la frequenza e durata del beep alla conferma delle opzioni di menu che avviene premendo il pulsante rotativo.

571 #define ENCODER_PULSES_PER_STEP 1        // Increase if you have a high resolution encoder
572 #define ENCODER_STEPS_PER_MENU_ITEM 4  // Set according to ENCODER_PULSES_PER_STEP or your liking

574 #define ULTIPANEL                                                 //the UltiPanel as on Thingiverse
575 #define LCD_FEEDBACK_FREQUENCY_HZ 1000    // this is the tone frequency the buzzer plays    when on UI feedback. ie Screen Click
576 #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click

Lasciamo come stanno tutte le altre impostazioni e salviamo i cambiamenti fatti. Ricordarsi di tenere la copia originale zippata per poter eventualmente confrontare in caso di errori.

Così come sta il menu visibile dal pannello LCD sarà in italiano.
Se si vuole cambiare il linguaggio di deve caricare il file language.h e cambiare in riga 25 il

#define LANGUAGE_CHOICE 7  // Pick your language from the list above

7 = italiano
1= English

o la lingua desiderata dalla tabella sopra……non c’è il Klingon ….peccato!

Salviamo anche questo file  cliccando sul primo simbolo a destra  (freccia in basso)

arduinopanel

Facciamo una compilazione di prova cliccando il primo tasto a sinistra.
Se tutto procede bene e la compilazione termina senza errori si può eseguire l’upload del FW nell’Arduino cliccando sul tasto Carica (freccia verso destra)

Ovviamente la scheda deve essere connessa con il cavo USB.

Dopo la compilazione (circa 30 secondi) inizia l’upload del FW (dura altri 30 secondi circa).

Al termine dell’upload il sistema si inizializza e il display dovrebbe indicare Mendel Ready!  o quello che si è impostato in Configuration.h riga 89.

Mendel Ready

Ora la stampante è pronta per le calibrazioni finali.

Calibrazione

Post introduttivo e indice.

Stampa con i tappi

Dopo aver abbandonato il PET, riprendendo le prove del prof. Montoya (http://scifablab.ictp.it/2014/11/25/from-bottle-caps-to-3d-printing-an-open-guide/)  ci siamo concentrati su un altro tipo di plastica, l’HDPE (high density polyethylene), plastica usata per produrre circa la metà dei tappi per contenitori alimentari in commercio e alcuni contenitori di sapone e detersivo.

Dopo aver raccolto e diviso tappi selezionando quelli di HDPE e dividendoli per colore abbiamo dato il via alla produzione di pellet per realizzare nuovo filamento e abbiamo iniziato prove di stampa  col filamento prdotto dal prof. Montoya.

L’HDPE ha un comportamento simile a quello dell’ABS, plastica molto usata sia per la stampa 3D che per la produzione di oggetti d’uso non legati all’alimentazione: tende ad arricciarsi ai bordi, ma nell’HDPE questa tendenza è molto accentuata. Per questo motivo andrebbe stampato su piatto riscaldato, ma non avendone noi la possibilità (le stampanti con piatto riscaldato in dotazione al fablab richiedono un filamento molto regolare, molto difficile da ottenere dal riciclo della plastica) abbiamo utilizzato tutte le tecniche più comuni per la stampa di ABS su piatto riscaldato (lacca e colla vinilica, piatti di vetro o di legno) ottenendo scarsi risultati e approdando al nastro biadesivo. Dopo alcune prove, che hanno dato risultati buoni, anche se non comparabili a stampe ottenute con filamenti industriali, abbiamo cambiato filamento per le prove, passando dal blu al rosa. Ci aspettavamo risultati simili o addirittura migliori, essendo questo secondo filamento dello stesso materiale ma di diamentro più regolare del primo; invece, contaraiamente alle aspettative, il filamento rosa risponde in modo assolutamente negativo alle prove di stampa. La divisione dei colori, che inizialmente era stata attuata fondamentalmente per motivi estetici, si è rivelata invece necessaria per la produzione di un filamento dalle proprietà adatte alla stampa. Non sappiamo spiegarci questa diversità di comportamenti, possiamo solo ipotizzare che sia legata alla presenza di coloranti o altre sostanze impiegate a livello industriale.

Prime prove (PET)

Il materiale su cui inizialmente abbiamo concentrato la nostra attenzione è stato il PET (polietilene tereftalato), la plastica più utilizzata come contenitore alimentare (specialmente le bottiglie per bevande) e che ha un discreto uso come filamento per le stampanti 3D. Alcune prove di fusione di pellet ricavato da bottigliette, ha subito evidenziato il fatto che il PET, se portato oltre i 150 °C, tende a cristallizzarsi piuttosto che a fondersi. Il pellet cristallizzato diventa biancastro e duro, quindi impossibile da utilizzare per la produzione di un filamento. Le prove sono state fatte portando graualmente il PET fino alla temperatura di 180 °C utilizzando un semplice bagnomaria in olio da frittura in un ambiente ben ventilato e comunicante con l’esterno (i vapori sprigionati dalla plastica ad alta temperatura posso essere dannosi per la salute). In seguito è stato anche tentato di portare la plastica a 180 °C ottenendo i medesimi risultati.

Presentazione

IL NOSTRO PROGETTO inizia a ottobre del 2014 con l’obbiettivo di riutilizzare la plastica di bottiglia e/o tappi ad uso domestico e perlo più alimentare. Questo desiderio è dettato dal fatto che il problema dell’inquinamento è tra i più pressanti globalmente e che il riciclo domestico della plastica possa essere una buona soluzione al problema.

Prusa i3 l’elettronica

Post introduttivo e indice.

In questo Post andiamo a vedere l’elettronica che comanda la stampante, di quali moduli si compone e come sono interconnessi tra di loro.

In quasi tutte le varianti costruttive della stampante 3D Prusa i3 è presente la scheda Arduino  MEGA 2560, la shield dedicata RAMPS 1.4 e un display LCD dotato di controller (encoder based)/pulsante rotativo per la selezione e conferma delle opzioni/impostazioni di stampa.

Per il pilotaggio degli stepper motors, si utilizzano i cosidetti Pololu drivers A4988 basati sull’omonimo chipset Allegro.

Vediamoli nel dettaglio:

Arduino MEGA 2560 R3
I dati principali:
Microcontroller:  ATmega2560
Operating Voltage:  5V
Input Voltage (recommended):   7-12V
Input Voltage (limits):   6-20V
Digital I/O Pins: 54 (di cui 14 sono uscite PWM )
Analog Input Pins: 16
Flash Memory: 256 KB di cui 8 KB usati dal bootloader
SRAM: 8 KB
EEPROM: 4 KB
Clock Speed: 16 MHz

arduino_mega2560_R3

Per una descrizione  più dettagliata rimando al sito ufficiale http://www.arduino.cc/en/Main/ArduinoBoardMega2560

SHIELD RAMPS 1.4

RAMPS sta per RepRap Arduino Mega Pololu Shield.

In breve è una scheda che interfaccia il modulo Arduino MEGA 2560 con i dispositivi della stampante mediante appositi connettori per connettere:
fino a 5 motori stepper connettendo i driver Pololu A4988 negli appositi slot;
2 riscaldatori hot end da 12Volt 40W per poter utilizzare fino a due estrusori;
1 piatto di stampa riscaldato da 12Volt 10A;
ventilatori regolati in PWM e non da 12 volt e
display LCD con o senza lettore di SD card;
Sensori di temperatura (termistori) per gli hot end e piatto riscaldato
Endstops per delimitare l’escursione dei tre assi XYZ ed identificare la HOME position.

In particolare la parte di potenza consiste di 3 mosfet che regolano la corrente che scorre  nei riscaldatori e nel piatto riscaldato.
Per una più ampia trattazione su questa scheda rimando al sito http://reprap.org/wiki/Arduino_Mega_Pololu_Shield

RAMPS_1.4

 Display LCD
Display LCD

Il display è già montato su un pcb (verde) che a sua volta è saldato sul PCB rosso contenente l’encoder rotativo/pulsante di selezione un buzzer che suona alla conferma delle opzioni di menu che avviene premendo il pulsante rotativo e un pulsante di reset (del display).

I colori dei PCB possono cambiare in base al fornitore.

Per collegare il display alla RAMPS sono necessarie due cavi flat da 10 pin (geralmente forniti assieme al display)  connessi tra il PCB del display e un PCB (anch’esso fornito con il display) dotato di connettori  disposti in modo da essere alloggiati senza possibilità di errore sulla RAMPS.

Display LCD2RAMPS adapter

La scheda Display sul retro oltre ai due connettori per i flat di connessione alla RAMPS, alloggia un connettore per schede di memoria SD. In qusto connettore alloggeremo la SD card contenente i nostri Gcode che andremo a stampare stand alone.

display2Nella foto sono indicate tutte le parti di questo assemblaggio.
RAMPS+LCD

STEPPER CONTROLLER (Pololu o Stepstick)

POLOLUFRONT                                         BACK

stepper driver A4988_1stepper driver A4988

 

 

 

 

Questo controller basato sul chipset  Allegro A4988 è già predisposto per il montaggio sui connettori della scheda RAMPS.

Di questi controller ne servono 4; uno per lo stepper dell’asse X (Riquadro Rosso), uno per lo stepper dell’asse Y (Riquadro Azzurro)  uno per i 2 stepper dell’asse Z (Riquadro Verde) e uno per lo stepper dell’estrusore E (Riquadro Arancione). RAMPS+STEPSTICK

I controller si inseriscono sui connettori femmina disposti sulla RAMPS.
Il verso di montaggio è indicato dai puntini gialli.

Assemblaggio del panino Arduino+RAMPS

La scheda Arduino MEGA2560 si assembla con la RAMPS facendo coincidere i connettori femmina della prima con i pin della seconda, a formare un sandwich.

Mega_ramps2

Il connettore principale (verde) comprende la parte maschio saldata al PCB e la parte femmina staccabile alla quale collegheremo i fili gialli del +12V e neri di massa.
Questo porta alla RAMPS le alimentazioni a 12V 5A e 10A provenienti dall’alimentatore.

La fwiring_power_conn_rampsoto a destra indica esattamente la disposizione dei cavi di alimentazione  sulla parte volante del connettore di alimentazione.
Come si può vedere, da sinistra nell’ordine il +12V 10A e relativa massa che serviranno per l’alimentazione del circuito di controllo del piatto riscaldato.
Queste linee devono avere un numero maggiore di conduttori (da un minimo di 4 in su a seconda dell’ATX che si modifica)

Successivamente il +12V 5A e relativa massa che  serviranno per l’alimentazione dell’elettronica, motori ed estrusore.
Queste linee possono avere un numero minore di conduttori (da un minimo di 2 in su a seconda dell’ATX che si modifica)

Endstops

Gli Endstops o finecorsa servono a fermare i carrelli degli assi X,Y e Z quando raggiungono la posizione di 0,0,0 ossia le coordinate X, Y, Z del punto di inizio della stampa.

Ci sono varie possibilità di scelta riguardo al punto 0 comunque nella Prusa i3 di mia costruzione sono impostate nell’angolo in basso a destra.

Di conseguenza gli Endstop dovranno essere posizionati nel seguente modo:
Asse X endstop fissato a destra negli appositi fori ricavati sull’XEND-IDLER

IMG_1211
Asse Y endstop dietro fissato sull’apposita feritoia dell’ YMOTOR  o su un angolare metallico di opportune dimensioni fissato sulla base in legno.

Y Motor
Asse Z endstop in basso  fissato sull’Endstop Z holder

ENDSTOP-Z-HOLDER-V3motore sx

Posizionati gli Endstop si devono collegare tutti i fili alla RAMPS.
Prestare molta attenzione in questa fase in quanto un cablaggio errato o un corto circuito possono compromettere irrimediabilmente l’elettronica.

Cliccando sullo schema è possibile scaricare la versione in dimensioni originali.

Schema filatureSchema Filature

Post successivo :  Il Firmware e le sue impostazioni di base

Post introduttivo e indice.

Mr 3DFreeze: cold-end device for 3D Printing of melted Wax

We introduce in the images below our first cold-end prototype for 3D printing by selective fast cooling (“freezing”) of a bath of melted material (having low melting-point like Wax and chocolate). This solution is based on thermoelectrical devices and is designed to work with standard RepRap (hot-end) 3D printers, with just simple adaptations of the extruder part, so that the same firmware and g-codes could be used. The printed Wax material can be easily recycled within the same freezing process avoiding any waste. Since Candle-Wax is easily available around the world, we believe the use of Mr 3DFreeze cold-end for the 3D printing of educational objects may find a fertile soil.

Mr3DFreeze_1 Mr3DFreeze_2 Mr3DFreeze_3 Mr3DFreeze_4 Mr3DFreeze_5 Mr3DFreeze_6

L’alimentatore

Post introduttivo e indice.

Dopo una lunga trattazione meccanica eccoci finalmente alla parte elettrica/elettronica.
La parte indispensabile per il funzionamento della stampante è l’alimentatore.

Quali requisiti deve avere l’alimentatore per la stampante 3D Prusa i3?

Tensione di Ingresso:   220Vac
Tensione di Uscita: 12Vcc 5A (60W) per l’alimentazione dell’estrusore  e motori.
12Vcc 11A (132W)  per l’alimentazione del letto di stampa riscaldato.

Con questi requisiti è possibile riutilizzare un alimentatore ATX da 250-300W di un vecchio computer inutilizzato.  Comunque maggiore è la potenza erogata meglio è.

Nel mio progetto ho utilizzato un ATX da 500W regalatomi da un collega.

L’alimentatore ATX nasce per alimentare a 5V l’elettronica del computer e a 12V gli hard disk e driver vari.
La corrente complessivamente erogata per un computer che è circa la metà di quella massima erogabile viene suddivisa su più conduttori che vanno con gli appositi connettori ad alimentare piastre, HD, Floppy, CD  ecc.

Dato che a noi servono sostanzialmente due linee a 12volt, che eroghino due potenze diverse, dovremo modificare l’alimentatore.

PRIMA DI APRIRE  L’ATX
ATTENZIONE, all’interno dell’alimentatore ci sono alte tensioni che possono anche causare la morte per folgorazione.

Prima di aprire l’alimentatore assicurarsi che sia stato spento da qualche ora in modo che tutti i condensatori si siano sufficientemente scaricati.

In ogni caso prestare la massima attenzione a non causare cortocircuiti con lo chassis metallico. Questo può causare folgorazioni!

Apriamo dunque questo ATX e tagliamo tutti i connettori collegati sui fili gialli (12Volt) sui fili rossi (5Volt) sui fili neri (MASSA).

Dovremmo trovare anche dei fili arancioni (3.3Volt) ed un filo verde (ENABLE).IMG_1006 Il panorama dovrebbe essere circa questo.

Una volta aperto l’ATX scopriremo che i fili gialli del 12Volt partono tutti dalle stesse piazzole del PCB.
Per fare in modo che le correnti che useremo non vadano a surriscaldare i cavetti, li raggruppiamo in modo che la corrente si suddivida su piu conduttori ed in particolare useremo 4 fili gialli per la linea da 12V 11A
e 2 fili gialli per la linea da 12V 5A
Se l’alimentatore che si ha a disposizione dovesse avere più fili, andranno tutti utilizzati suddividendoli con le stesse proposzioni.

Lo stesso vale per i fili neri di massa,  Di questi ve ne sono molti di più in quanto usati anche per le linee a 5V e 3,3V.

IMG_1002

Useremo perciò lo stesso numero di conduttori neri da affiancare ai gialli. I rimanenti neri li possiamo arrotolare e se riusciamo li lasciamo all’interno dell’alimentatore oppure li portiamo fuori  assieme a quelli rossi del 5Vcc (in ugual numero) per un eventuale uso per accessori extra.
Anche i fili arancioni li lasceremo all’interno dell’alimentatore accorciandoli al minimo ed isolandoli.

L’ENABLE
Ah si!! non dimentichiamo di collegare il filo verde ad un filo di massa (nero) in modo da abilitare l’ATX ad accendersi appena si inserisce la spina o si preme l’interuttorino (se presente, anche a vuoto (senza carichi collegati)  Se si usa un ATX relativamente nuovo dovrebbe esserci l’interruttore.IMG_1005

Separati i fili nelle due linee, possiamo richiudere con cautela l’ATX .

IMG_1009
Dovremmo avere una struttura come questa.

4+4 fili (positivo e negativo) per il 12Vcc 11A
2+2 fili (positivo e negativo) per il 12Vcc 5A
N fili rossi  e N fili neri (positivo e negativo) per il 5Vcc  (NON USATI).

Filo verde a massa (Isolato e rimane all’interno della scatola).

Prima di collegarlo alla stampante verificare che tutto funzioni misurando con un tester la presenza del 12Volt, del 5Volt e che il ventilatore di raffreddamento giri senza far rumori strani.

Post successivo :  L’elettronica

Post introduttivo e indice.