domingo, 29 de enero de 2017

Problema al cargar firmware en Arduino con LCD conectada


Si tenéis LCD en vuestra impresora 3D y el firmware utilizado es Marlin, debéis tener en cuenta que es necesario realizar un "Restore Failsafe" para que lea los valores que se le mandan desde Arduino cuando esta conectado al PC.


Si no se hace esto, se quedan guardados por defecto (y arranca siempre con ellos), los valores que metes a mano desde la propia pantalla LCD.

Un ejemplo de esto, nos ocurrió con una impresora que queríamos tener independiente del PC, agragando una pantalla LCD y lector de tarjeta SD.



 Al decidir calibrar los pasos del motor para medidas correctas (AXIS STEP PER UNITS), los datos que introducíamos desde el PC no tenían efecto alguno pues siempre leía los valores instroducidos desde la LCD.
 

 
Cuando se realiza un "Restore" luego hay que hacer un "Store memory".


Un método para solucionarlo es desactivando la EEPROM desde la configuración de Marlin en Arduino, para que no se puedan guardar los cambios que haga desde la pantalla LCD. 
Los parámetros de configuración que coge son de las variables Default, que se encuentra en el sketch y no de las de la memoria EEPROM si la desactivas.
Habilitando la EEPROM, pero reseteandola con la opción "Restore Failsafe" coge los datos nuevos que introducimos desde el firmware(skech).


Para activar o desactivar la eeprom para guardar valores de datos al introducir nuevos valores en las variables se utilizan las librerías propias de Arduino que controlan el acceso a la memoria eeprom.

Sabiendo esto, muchos usuarios prefieren que los datos introducidos desde la pantalla LCD se mantengan uncluso despues de apagar la impresora o resetear Arduino.

Con las funciones de EEPROM en Marlin activadas, el usuario puede configurar, ajustar o modificar algún parámetro de configuración y guardarlos de forma permanente. Esta forma es más accesible que teniendo que conectar el cable USB y acceder al firmware de Arduino en configuration.h y modificar desde hay los parámetros.

En la mayoría de Firmware Marlin, las funciones EEPROM están desactivadas. Para activarlas, accedemos al archivo configuration.h y localizamos la siguiente parte de código y descomentamos (borrar //) las líneas resaltadas:

// EEPROM
// The microcontroller can store settings in the EEPROM, eg max velocity...
// M500 - stores parameters in EEPROM
// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
//define this to enable EEPROM support
//#define EEPROM_SETTINGS
//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
// please keep turned on if you can.
//#define EEPROM_CHITCHAT



Una vez descomentadas estas dos líneas, la eeprom queda activa, y en el menú de la LCD aparecerán tres nuevas funciones:
  • Almacenar Memoria (Store Memory):almacena los valores actuales de la impresora 3D en la EEPROM, convirtiéndose en los valores de configuración predeterminada al iniciar.

  • Cargar Memoria(Load Memory):Recupera los ajustes almacenados de la EEPROM y sobreescribe lo que esté actualmente en la SRAM de Arduino.

  • Restaurar fallos(Restore Failsafe): sobreescribe lo que esté en la SRAM con los valores específicos del archivo configuratión.h

Las configuraciones que se pueden almacenar en la memoria EEPROM son:
  • Pasos por unidad (normalmente pasos por mm) para los ejes X, Y y Z, así como pasos de extrusión / mm.
  • Avances máximos (en mm / s) para X, Y, Z y Extrusor.
  • Aceleración máxima (en mm / s 2 ) para X, Y, Z y extrusor.
  • Aceleración y Retracción.
  • Min FeedRate(avance mínimo) (mm / s), Min Travel Feedrate (mm / s), Min Segment Time (ms), MaxJerk X, Y, Z  (mm / s).
  • Home Offset (mm).
  • Valores PID.


Para acceder a las funciones Guardar Memoria, Cargar Memoria y Restaurar fallos, utilizar los comandos (M-Code) M500, M501 y M502 que corresponden a dichas funciones respectivamente.



Esperamos que esta entrada resuelva muchos de vuestros problemas a la hora de configurar y ajustar los valores de la impresora 3D si tenéis una LCD conectada.


Un saludo a todos,
Ingenio Triana.

1 comentario: