El Firmware

El Firmware

Una vegada tenim tots els components electrònics connectats, procedirem a la càrrega del firmware a la placa controladora. Com ja hem dit, el firmware és el programa que s’instal·la a la placa controladora de la impressora 3d i la seva funció és que aquesta interpreti correctament les ordres del arxiu gcode generat pel laminador.

El firmware més utilitzat en les impressores Reprap és el Marlin, que podem descarregar des del github oficial dels desenvolupadors.

Per a procedir a la càrrega del firmware al microcontrolador necessitarem instal·lar al ordinador l’entorn de programació Arduino, que també trobareu a la pàgina oficial. En el moment d’escriure aquesta entrada, la versió de l’IDE d’Arduino que utilitzarem és la 1.0.6.

Connectem la placa controladora a l’ordinador per mitjà del cable USB, obrim l’entorn Arduino i seleccionem el model de placa que utilitzem i el port on la tenim connectada.

Un cop descomprimit el firmware, dins la carpeta Marlin, trobareu l’arxiu Marlin. Tot seguit, l’obrim des de l’entorn Arduino i se’ns mostraran, a la part superior i en forma de pestanyes, tots els arxius que el formen.

Per a configurar els paràmetres de la nostra impressora 3d, ens dirigim a la pestanya Configuration.h

Anem a editar els paràmetres. El primer és opcional, pero és aconsellable per tal d’identificar-lo en un futur.

#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define STRING_CONFIG_H_AUTHOR "(nom del autor dels canvis, nom de la impressora)" // Who made the changes..

Velocitat de transmissió de dades entre l’ordinador i placa controladora

#define BAUDRATE 250000

És la velocitat de transmissió de dades entre la placa i l’ordinador. El valor per defecte podria donar problemes en alguns equips: la canviarem per una velocitat més conservadora.

#define BAUDRATE 115200

Model de placa utilitzada

#define MOTHERBOARD BOARD_RAMPS_13_EFB

Totes les electròniques suportades pel Marlin, les trobem a la pestanya boards.h, en el nostra cas escollim la opció de placa RAMPS amb un extrusor, un ventilador de capa i un llit.

A títol d’exemple, si la nostra placa fos una RUMBA, aquesta línia quedaria de la següent manera:

#define MOTHERBOARD BOARD_RUMBA

Número d’extrusors

#define EXTRUDERS 1

La majoria de les impressores 3d porten un sol extrusor, tot i que n’hi ha que poden anar equipades amb dos o més. En aquest cas modificaríem el valor.

Tipus de sensor de temperatura (termistor)

#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_BED 0

A sobre d’aquestes línies, el Marlin ens mostra un llistat dels models de termistors suportats i els identifica amb un número, que és el que figura al final de cada una d’aquestes cinc. Les quatre primeres fan referència als models de termistors dels hotends i la darrera al valor del termistor del llit. Si un component no està calefactat, li assignem el valor 0

Per tant, segons la configuració mostrada, aquesta impressora 3d només equipa un extrusor amb un termistor del tipus 1 al hotend, que correspon al model 100k thermistor - best choice for EPCOS 100k (4.7k pullup) i no porta llit calefactat.

Temperatura mínima d’activació

#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define HEATER_3_MINTEMP 5
#define BED_MINTEMP 5

Per sota d’aquesta temperatura la electrònica no activarà el/els calefactor.

És una mesura de seguretat: si un fil d’un termistor es trenqués, la lectura errònia que s’enviaria de manera continuada a la controladora seria de 0ºC. Si els calefactors es poguessin activar, la controladora els aniria subministrant corrent permanentment al creure que no arriben a la temperatura d’impressió, quan realment la sobrepassarien fins a provocar la seva destrucció.



Màxima temperatura dels calefactors

#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define BED_MAXTEMP 150

Defineix la temperatura màxima a la qual poden arribar els calefactors de la nostra impressora 3d. Els valors introduïts seran els límits que el fabricant del hotend i del llit calent ens indiquin no sobrepassar.

Es tracta una altre mesura de seguretat que impedeix que es sobrepassi aquesta temperatura en el cas que al laminador n’introduíssim erròniament una de superior.

Temperatura mínima d’extrusió

#define EXTRUDE_MINTEMP 170

Impedeix a la impressora 3d d’extrusionar filament si el hotend no ha arribat a aquesta temperatura, per tal d’evitar els problemes de tracció que es provocarien a l’extrusora si s’intentés introduir filament que el hotend no pogués fondre.

El valor recomanat hauria de ser uns 10 o 20 graus inferior a la del filament que menys temperatura d’impressió necessita.

Invertir la lògica dels endtops

onst bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop

Els interruptors de final de carrera serveixen per a definir l’origen dels eixos X, Y, Z. Al principi de la impressió, s’activen els motors dels eixos del hotend i del llit calent fins que toquen els finals de carrera. Segons com els tinguem connectats, haurem d’invertir la lògica en aquest apartat del firmware.

Normalment oberts (NO)

Es tracta de quan un dels cables està connectat al pin C i l’altre al NO. Quan es polsi, enviarà la senyal d’activació a la placa controladora i el motor de l’eix corresponent s’aturarà. Amb aquesta configuració, el valor que hem de posar al firmware és true.

Normalment tancats (NC)

Es tracta de quan un dels cables està connectat al pin C i l’altre al NC. El seu comportament és l’invers del cas anterior, sempre està enviant senyal a la placa controladora, excepte quan està polsat. Aquesta connexió té una avantatge, que es que si un cable dels enstops es trenca, la senyal que envia a la placa controladora éss com si estigués polsat, per tant faria aturar el motor corresponent. Amb aquesta configuració, el valor que hem de posar al firmware és false.

Invertir direccions dels motors dels eixos

#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false

Si els motors giren en direcció contraria al que haurien de girar, podem canviar el valor en l’eix corresponent o simplement girar el sentit del connector del motor a la placa controladora.

Invertir direccions dels motors dels extrusors

#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false

El mateix que el cas anterior

Ajustos final de carrera

#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

Indica a la impressora 3d quina direcció ha de seguir en cada eix per a arribar al origen de coordenades.

Límits de recorregut del eixos

#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS 200
#define Y_MAX_POS 200
#define Z_MAX_POS 200

Aquesta és la distància en mil·límetres que es pot desplaçar el hotend i el llit en els seus eixos. Hem de tenir cura que no sempre coincideix amb la mida del llit, per tant és aconsellable mesurar la distància des del broquet fins al final de l’eix i guardar una petita distància de seguretat, introduir uns valors més petits que aquest en el X Y Z MAX i observar si encara tenim recorregut.

Ajustos De Moviment

#define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min)

Ens defineix la velocitat en que es desplaçaran els components dels eixos fins a l’origen (homing).

// default settings

#define DEFAULT_AXIS_STEPS_PER_UNIT   {80,80,4000,500} // default steps per unit for Ultimaker

Són els números de passos teòrics que necessiten els motors perquè els components dels eixos {X, Y, Z, Extrusor} es desplacin 1 mm. De l’exactitud d’aquests valors en depèn la precisió de la nostra impressora 3d.

Els càlculs són molt simples. Hem de distingir que en una impressora 3d hi ha eixos traccionats per a politges i corretges (en una prusa I3 o dissenys derivats són els eixos X i Y) i altres que ho són per una varilla roscada d’un determinat (en una prusa I3 o dissenys derivats, l’eix de les Z porta varilles roscades M5).

En el cas de les corretges i politges GT2:

Les corretges GT2 tenen un pas de 2mm i les politges GT2 habituals estan formades per 20 dents.

Els motors NEMA 17 utilitzats són de Pas angle de 1.8 º

Per tant, si una volta sencera de l’eix motor són 360º i les característiques del fabricant ens diuen que per cada pas l’eix es desplaça 1,8º, si dividim els 360º per 1,8º/pas, necessitarem 200 passos per a completar la volta sencera.

Recordem que els drivers dels motors divideixen cada pas del motor, en 16 o 32 micropassos, per tant, per a completar una volta sencera necessitarem 3200 micropassos en el cas d’un driver de 16 i 6400 micropasos per a un driver de 32.

Sabem que les politges tenen 20 dents i que cada dent representa un moviment de 2 mm de la corretja

#define DEFAULT_MAX_FEEDRATE         {300, 300, 5, 25}   // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves
Template Design © Joomla Templates | GavickPro. All rights reserved.