2015/08/15

II - Cómo reviví mi Rapman con electrónica estándar (2a. parte. Firmware/Software).


PASOS FINALES

Hola a todos.

A continuación describo los pasos finales para poner a funcionar la impresora.


FIRMWARE

Como la electrónica que escogí fue diseñada como reemplazo para la impresora Ultimaker 1, debí ser consistente e investigué sobre el firmware utilizado y cómo adaptar su configuración a las características técnicas de Rapman 3.1 (que son un poco diferentes, aunque no mucho, realmente).

Marlin permite una perfecta compatibilidad entre la electrónica recién instalada y la impresora original.

Obtén el firmware MARLIN aquí (botón derecho, guardar enlace como...):

www.salgadodigital.com/Rapman_revival_files/Marlin-Stable.zip

Descomprime el directorio en tu computador.

Esta es la versión original del firmware. Debes ser precavido, porque hay varios "sabores" de Marlin en internet, y pueden ser incompatibles con nuestra impresora.

ARDUINO IDE

A continuación, se debe obtener Arduino IDE, que permite:

- Comunicarse con el board Arduino a través del puerto USB.
- Editar los archivos de configuración de Marlin, para programar el microcontrolador Arduino.
- Compilar y grabar el firmware editado en el board Arduino, para habilitar todos los componentes mecánicos, eléctricos y electrónicos de la impresora.

La versión 0023 de Arduino IDE funciona perfecto en nuestra situación. Lo puedes descargar aquí (botón derecho, guardar enlace como...):

www.salgadodigital.com/Rapman_revival_files/arduino-0023.zip

Podrías instalar alguna versión más reciente (v.g. 1.6.4), pero vas a encontrar muchos errores al intentar compilar Marlin. Y el objetivo es hacer todo el proceso lo más sencillo y eficiente posible, sin complicaciones.

Instala Arduino IDE y ejecuta la aplicación.

Selecciona el board Arduino Mega 2560 (Tools / Board / Arduino Mega 2560):








CONFIGURACIÓN

Para una explicación detallada de la programación del microcontrolador Arduino para una impresora 3D, consulta el sitio Solid Utopia:

http://solidutopia.com/marlin-firmware-user-guide-basic

Para nuestro caso en particular, simplemente descarga estos 3 archivos, ya editados para el funcionamiento óptimo de la impresora Rapman 3.1, y los sobre-escribes en el directorio de Marlin (botón derecho, guardar enlace como...):

Configuration.h
http://www.salgadodigital.com/Rapman_revival_files/Configuration.h
Configuration_adv.h
http://www.salgadodigital.com/Rapman_revival_files/Configuration_adv.h
Pins.h
http://www.salgadodigital.com/Rapman_revival_files/pins.h



Abre el archivo Marlin.ino Marlin-Stable / Marlin )

Abre la pestaña Configuration.h

Si vas a editar Marlin, porque tienes una configuración diferente a la original que viene con tu Rapman, vamos a describir solamente las líneas de código que cambian para el funcionamiento óptimo de la impresora (un solo extrusor).

Ajustes generales

Librería para habilitar el LCD
    #include <U8glib.h>

Definir la velocidad de comunicación con la impresora (en baudios)
  #define BAUDRATE 250000

Seleccionar el board
  #define MOTHERBOARD BOARD_ULTIMAKER
Si tienes otro board (Ramps, por ejemplo) selecciona el nombre desde boards.h que coincida con tu configuración.

Sensor de temperatura
  #define TEMP_SENSOR_0 2
El termistor 2 corresponde al termistor original - 200k - ATC Semitec 204GT-2 (4.7k pullup). 
En los otros sensores, el segundo número - 0 - indica que no está habilitado.

Temperatura mínima
  #define HEATER_0_MINTEMP 5
Temperatura en ºC

Temperatura máxima
  #define HEATER_0_MAXTEMP 240
Temperatura en ºC, para ABS

Ajustes mecánicos

End Stops
Resistencias Pull-up
#ifndef ENDSTOPPULLUPS
  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
  #define ENDSTOPPULLUP_XMAX
  #define ENDSTOPPULLUP_YMAX
  #define ENDSTOPPULLUP_ZMAX
  #define ENDSTOPPULLUP_XMIN
  #define ENDSTOPPULLUP_YMIN
  #define ENDSTOPPULLUP_ZMIN
#endif

#ifdef ENDSTOPPULLUPS
  #define ENDSTOPPULLUP_XMAX
  #define ENDSTOPPULLUP_YMAX
  #define ENDSTOPPULLUP_ZMAX
  #define ENDSTOPPULLUP_XMIN
  #define ENDSTOPPULLUP_YMIN
  #define ENDSTOPPULLUP_ZMIN
#endif

Invertir la lógica de los interruptores de fin de recorrido (End Stops)
const bool X_MIN_ENDSTOP_INVERTING = false;
const bool Y_MIN_ENDSTOP_INVERTING = true;
const bool Z_MIN_ENDSTOP_INVERTING = false;
const bool X_MAX_ENDSTOP_INVERTING = true;
const bool Y_MAX_ENDSTOP_INVERTING = false;
const bool Z_MAX_ENDSTOP_INVERTING = true;

Inhabilitar Ejes
  #define DISABLE_INACTIVE_EXTRUDER false

Invertir dirección steppers motor
  #define INVERT_X_DIR true
  #define INVERT_Y_DIR true
  #define INVERT_Z_DIR false
  #define INVERT_E0_DIR true
  #define INVERT_E1_DIR true
  #define INVERT_E2_DIR true

Definir dirección HOME
  #define X_HOME_DIR -1
  #define Y_HOME_DIR 1
  #define Z_HOME_DIR -1

No permite ir a la impresora más allá de los límites de los End Stops
  #define min_software_endstops true
  #define max_software_endstops true

Área de impresión (real)
  #define X_MAX_POS 260
  #define X_MIN_POS 0
  #define Y_MAX_POS 200
  #define Y_MIN_POS 0
  #define Z_MAX_POS 190
  #define Z_MIN_POS 0
Autonivelación de la cama de impresión
//#define Z_PROBE_REPEATABILITY_TEST

Ajustes de Movimiento

Velocidad al punto HOME
  #define HOMING_FEEDRATE {50*40, 50*40, 4*40, 0}

Pasos de motor por unidades
  #define DEFAULT_AXIS_STEPS_PER_UNIT   {87.575,87.575,1280,1629}
Datos obtenidos de documentos técnicos de Bits from Bytes, aún colgados en la red.

Aceleración
  #define DEFAULT_MAX_ACCELERATION      {900,900,100,1000}
  #define DEFAULT_ACCELERATION     1000 
  #define DEFAULT_RETRACT_ACCELERATION     100 
  #define DEFAULT_XYJERK     10.0

Temperatura de precalentamiento
  #define PLA_PREHEAT_HOTEND_TEMP 185
  #define PLA_PREHEAT_HPB_TEMP 0

LCD y soporte para tarjeta SD

Todos estos items se habilitan, para que funcione el Módulo de Control LCD

  #define ULTRA_LCD
  #define SDSUPPORT 
  #define ENCODER_PULSES_PER_STEP 4 
  #define ENCODER_STEPS_PER_MENU_ITEM 1
  #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
 #define DOGLCD
 #define U8GLIB_ST7920
 #define REPRAP_DISCOUNT_SMART_CONTROLLER
 #define ENCODER_PULSES_PER_STEP 4
#define ENCODER_STEPS_PER_MENU_ITEM 1
#endif


Enviar el firmware a la impresora 3D

Si editaste el archivo Configuration.h, in Arduino IDE, guarda las modificaciones.

Ahora, vamos con la verificación y compilación.

Verificar el código































Si todo está correcto, Arduino dirá “Done uploading” (subida realizada); de otra manera, se obtendrán uno o varios mensajes de error. Si esto sucede, por lo general hay una mención sobre la línea del error. Verifica tu código por si se encuentra un error de comentarios: //, puntos u otros caracteres especiales podrían haberse digitado incorrectamente.

Una vez esté compilado correctamente,  puedes conectar el board Arduino al computador con el cable USB.

NOTA: observa que la fuente de poder de 18V (preferible este voltaje, para alcanzar y sostener la temperatura de trabajo) sólo se debe conectar al board Ultimaker.























Selecciona el puerto apropiado (Tools menu / Serial Port / <port number>).

Sube el código compilado al board Arduino.
































Ahora, tu impresora está lista para funcionar. Rapman revivió!


MÓDULO DE CONTROL LCD

Recuerdas la pantalla original de la impresora Rapman 3.1?


Marlin permite sincronizar un LCD de la misma manera y darle autonomía a la impresora a través del módulo de control:

- Control de la temperatura de cada componente
- Precalentamiento del hot end
- Cooldown
- Coordenadas de la impresión en valores X Y Z
- Movimiento por pasos del extrusor, en decimales
- Envío del extrusor al punto HOME
- Control de velocidad, aceleración, retracción, pasos de los motores, etc. 
- Selección del archivo a imprimir -tarjeta SD-
- Control de ejecución del archivo
- Pausa o finalización de impresión
- Y mucho más

Si son correctas las conexiones eléctricas realizadas en la primera parte de este tutorial y el firmware está correctamente instalado, verás así la pantalla:























ARRIBA
Izquierda
Extrusor #1 / temperatura de trabajo Hot end y temperatura actual (termistor)
Aquí aparecen todos los extrusores que tengas configurados
Derecha
Cama caliente / temperatura de trabajo y temperatura actual (termocupla)
Ventilador

CENTRO
Coordenadas del extrusor en el plano cartesiano de la impresora

ABAJO
Izquierda
Tarjeta SD
Derecha
Porcentaje de ejecución del archivo de impresión (Gcode)
Última línea 
Muestra el estado de la impresora y otros mensajes de funcionamiento, sobre la marcha.

CODIFICADOR ROTATORIO
Adicionalmente, todas las acciones como la calibración, movimientos de los ejes y otras funciones se pueden hacer simplemente usando el codificador rotatorio (potenciómetro).
Presionándolo, se obtiene acceso a todas las funciones de la impresora:

PREPARE
Disable steppers
Auto home
Set home offset
Preheat ABS or PLA -->coloca un valor de referencia en ºC y verifica el calentamiento físico del hot end y el aumento de temperatura en el LCD.
Move axis --> presiona el codificador rotatorio y selecciona el movimiento requerido en mm. Mueve los motores girándolo, para verificar las conexiones  de los  motores  y la funcionalidad de los end stops, así como las dimensiones reales de los desplazamientos en mm.
y mucho más

CONTROL
Para cambiar sobre la marcha la configuración predeterminada en Marlin.

PRINT FROM SD
Total autonomía para imprimir nuestros diseños 3D sin conexión al PC.

Obviamente, con este módulo de control hay algunas diferencias de operación, pero es la experiencia más cercana al funcionamiento al que estábamos acostumbrados en nuestra Rapman 3.1

Así quedaría nuestra impresora con la electrónica de reemplazo Ultimaker + Arduino:





























Se pueden mejorar algunas características de funcionamiento, conociendo mejor la programación que permite Marlin. Este es un campo nuevo para mí, y habrá algunos bugs que se pueden resolver con los parámetros correctos. Estamos reviviendo una impresora que se desarrolló con un firmware muy diferente.

Se reciben sugerencias y mejoras!

Como podemos ver, después del ensamble, los componentes quedan "tirados" al pie de la impresora.

Podríamos elaborar una caja que contenga el board y el módulo de control LCD, impresa por nosotros mismos en PLA, o elaborada con piezas de acrílico transparente (similar a la impresora original).

Pero esa es otra historia, que abordaremos otro día en este blog.

------------

SOFTWARE

Podemos seguir usando el sofware de nuestra preferencia para generar los Gcode, en mi caso, Skeinforge 0041 (con modificaciones en algunos parámetros del módulo Dimension, que explicaré un poco más abajo), sin pérdida de calidad o rendimiento en la impresión de nuestros diseños 3D. La experiencia de usuario es la misma que teníamos, porque esta electrónica es perfectamente compatible con nuestra impresora:




Si ya trabajas con Skeinforge, debes reemplazar el módulo dimensión. Puedes descargarla acá (botón derecho, guardar enlace como...):

Esta versión corrige algunos problemas que pueden causar pequeñas pausas en la impresión. 

NO BAJAR ESTE ARCHIVO si estás usando Skeinforge 0043 o posterior - que ya contiene estas correcciones.

Vamos al subdirectorio craft_plugins dentro del directorio de Skeinforge: skeinforge_application/skeinforge_plugins/craft_plugins

Renombra el archivo dimension.py como dimension_backup.py (o algo similar, en caso de que necesites volver al archivo original).

Copia el archivo dimension.py en el subdirectorio.

Ejecuta Skeinforge.

En el módulo Dimension marca Activate Dimension
y también Activate Absolute Extrusion Distance
Filament diameter: 3.0
Filament Packing Density: 0.97  (si haces tus diseños en PLA)

Y listo.

El Gcode resultante tendrá algunas diferencias con el Gcode al que estábamos acostumbrados, porque Marlin solo ejecuta Distancia Absoluta de Extrusión y otras operaciones están codificadas de manera diferente:
































Hay una manera sensacional de sincronizar Skeinforge con un software de control llamado Repetier (instalándolo en el PC):

- Impresionante visualizador Gcoder, en tiempo real.
- Generación de Gcode a una velocidad 3 veces mayor, muy útil para hacer cambios rápidamente en las estructuras de soporte o en modelos sencillos o complejos.

Con todas las características de Skeinforge, repotenciado.

Ese es nuestro próximo tema en este blog.

Buena suerte!

No comments:

Post a Comment