22-01-2025, 11:18 PM
Buenas,
Estaba intentando actualizar el firmware de mi Artillery Genius (la tenía bastante abandonada y estaba todavía con el software de fábrica).
Me he descargado la versión 2.1.2.5 de Marlin y el TFT patch 11 pero durante la instalación del Marlin (vía Cura) me apareció un error y desde ese error la placa base parece haber dejado de comunicarse con la pantalla, y tampoco la reconoce mi PC Windows. ¿Qué puedo hacer?
Creo que no es un tema de los drivers del ordenador porque antes del error durante la instalación el ordenador reconocía la impresora sin problemas. He intentado reiniciar la impresora mientras tenía el cable conectado al PC (ChatGPT me dijo que así se pondría la placa en modo "desarrollador" y la reconocería el PC) pero no ha servido.
Gracias por vuestra ayuda.
Hola @ miguebarrio, bienvenid@ al foro.
Dices que has intentado instalar la última versión de Marlin con CURA, lo que es bastante extraño pues con esa aplicación solo se puede grabar el firmware ya compilado en un archivo .hex y para tener ese archivo, debes utilizar una aplicación que ya permite subirlo a la placa directamente: tendrás que aclarar un poco este punto.
Sobre la conexión de la placa al ordenador por USB, lo primero que debes hacer es comprobar si el ordenador la detecta, para lo que debes abrir el Administrador de dispositivos, conectar placa y ordenador por USB y encender la impresora (no, la placa no entrará en "modo desarrollador" haciendo eso, te ha tomado el pelo ChatGPT).
Si no hay ningún cambio en el Administrador de dispositivos, el ordenador no detecta la placa, lo que puede deberse a un conector o cable USB defectuoso o a un problema con el circuito de la placa que controla esa conexión: para saber cual de ellos es, habrá que cambiar de conector USB en el ordenador y de cable; si no hay cambios, el problema está en la placa y habrá que sustituirla por una nueva.
Si hay cambio en el Administrador de dispositivos, hay que mirar en que apartado ha colocado el nuevo dispositivo: si es en el Otros dispositivos y con una señal de peligro amarilla, se necesita instalar el driver correspondiente; si aparece en el apartado Puertos COM y LPT, la conexión está correcta y se le habrá asignado un puerto COM, que habrá que utilizar en las aplicaciones que utilicemos para controlar la conexión.
La verdad es que he visto ya varias veces que algún usuario indica que le ha preguntado a ChatGPT la solución de su problema con la impresora, cosa que me parece bastante curiosa: no tengo nada contra la IA, por el contrario me parece que es/será una revolución, pero como cualquier otra herramienta, es importante saber cómo funciona y sus limitaciones.
Actualmente ChatGPT es como un niño sabelotodo, que nunca te dirá que no sabe lo que le preguntas, por lo que en algunos casos sus respuestas estarán equivocadas o serán directamente inventadas, como es el caso de ese "modo desarrollador".
Hola Simemart, gracias por tu rápida respuesta.
Respecto al tema de usar CURA, fue porque me descargué directamente el archivo .hex, seguí los pasos de un tutorial de YouTube.
Respecto a la conexión de la placa al ordenador, al conectar el usb el PC lo reconoce en el COM5. He probado a cambiar de puerto y también lo reconocía correctamente (en el COM6). El problema es que si utilizo programas como pronterface para conectarme a la impresora, esta no da ninguna señal. En pronterface, por ejemplo, se queda únicamente en "Connecting..."
Revisando el tema por mi cuenta, he visto que el firmware que me descargué era para una placa Artillery Rubí, y mi impresora tiene una Makerbase (pensaba que tenía una artillery rubí ya que la compré directamente a artillery, pero al parecer no es así, supongo que es porque es un modelo antiguo). Entiendo que el utilizar un firmware que está preparado para otra placa puede haber ocasionado el problema durante la instalación. ¿Es así?
Por otro lado, he leído que con un USBasp puedo instalarle el firmware de una forma más "directa" y sin usar el cable usb. ¿Quizás esta sea la solución?
PD: completamente de acuerdo con tu comentario sobre ChatGPT, lo utilizo porque en la mayoría de ocasiones es más rápido que buscar en google, pero el hecho de que nunca reconozca que no sabe de lo que habla suele traer bastantes calentamientos de cabeza...
Hola, si el ordenador le asigna un puerto COM a la impresora, no es necesario que utilices un programador externo (tipo USBasp), pues si la placa tiene bien el bootloader, podrás cargarlo por la conexión USB sin ningún problema.
Para ello, tendrás que descargarte los fuentes de Marlin de su página oficial, así como los archivos preconfigurados de esa misma versión y utilizar los correspondientes a ese modelo de impresora: las Genius venían inicialmente con la placa MKS GEN L, que es la que traen los archivos preconfigurados.
Para compilar y grabar el firmware en la placa, la opción más sencilla es con el IDE de Arduino, versión 1.8.19; otra opción ligeramente más compleja es utilizar PlatformIO en Visual Studio Code: en cualquier caso, si no sabes como hacerlo, no dudes en preguntar y te indicaré el proceso.
Si por favor, explícamelo para hacerlo con el IDE de Arduino, gracias.
24-01-2025, 01:21 AM
(Última modificación: 24-01-2025, 01:24 AM por Simemart.)
Vamos a ello.
1- Descarga estos dos archivos: Arduino IDE 1.8.19 y Marlin 2.1.2.5.
2- Crea una carpeta en la raíz del disco duro (por ejemplo, C:\Trabajo) y descomprime en ella los archivos anteriores. Creará dos carpetas: C:\Trabajo\arduino-1.8.19 y C:\Trabajo\Marlin-2.1.2.5.
3- Abre la carpeta C:\Trabajo\Marlin-2.1.2.5\Marlin, pulsa con el botón derecho sobre el archivo Marlin.ino, pulsa Abrir con>Más aplicaciones>Buscar otra aplicación en el equipo y selecciona C:\Trabajo\arduino-1.8.19\arduino.exe. Se abrirá el IDE de Arduino, con los archivos de configuración Configuration.h y Configuration_adv.h en pestañas separadas.
4- Selecciona la pestaña del Configuration.h y realiza los siguientes cambios (como está -> como debe quedar):
#define MOTHERBOARD BOARD_RAMPS_14_EFB -> #define MOTHERBOARD BOARD_MKS_GEN_L
#define X_DRIVER_TYPE A4988 -> #define X_DRIVER_TYPE TMC2100
#define Y_DRIVER_TYPE A4988 -> #define Y_DRIVER_TYPE TMC2100
#define Z_DRIVER_TYPE A4988 -> #define Z_DRIVER_TYPE TMC2100
#define E0_DRIVER_TYPE A4988 -> #define E0_DRIVER_TYPE TMC2100
//#define PIDTEMPBED -> #define PIDTEMPBED
#define X_MIN_ENDSTOP_INVERTING false -> #define X_MIN_ENDSTOP_INVERTING true
#define Y_MIN_ENDSTOP_INVERTING false -> #define Y_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING false -> #define Z_MIN_ENDSTOP_INVERTING true
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 } -> #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 445 }
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 } -> #define DEFAULT_MAX_FEEDRATE { 150, 150, 10, 50 }
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } -> #define DEFAULT_MAX_ACCELERATION { 2000, 2000, 100, 5000 }
#define DEFAULT_ACCELERATION 3000 -> #define DEFAULT_ACCELERATION 800
#define DEFAULT_RETRACT_ACCELERATION 3000 -> #define DEFAULT_RETRACT_ACCELERATION 2000
#define DEFAULT_TRAVEL_ACCELERATION 3000 -> #define DEFAULT_TRAVEL_ACCELERATION 1000
#define JUNCTION_DEVIATION_MM 0.013 -> #define JUNCTION_DEVIATION_MM 0.05
//#define S_CURVE_ACCELERATION -> #define S_CURVE_ACCELERATION
#define XY_PROBE_FEEDRATE (133*60) -> #define XY_PROBE_FEEDRATE (50*60)
//#define MULTIPLE_PROBING 2 -> #define MULTIPLE_PROBING 2
#define INVERT_Y_DIR true -> #define INVERT_Y_DIR false
#define INVERT_Z_DIR false -> #define INVERT_Z_DIR true
//#define Z_HOMING_HEIGHT 4 -> #define Z_HOMING_HEIGHT 10
#define X_BED_SIZE 200 -> #define X_BED_SIZE 220
#define Y_BED_SIZE 200 -> #define Y_BED_SIZE 230
#define X_MIN_POS 0 -> #define X_MIN_POS -2
#define Y_MIN_POS 0 -> #define Y_MIN_POS -5
#define Z_MAX_POS 200 -> #define Z_MAX_POS 250
//#define LCD_BED_TRAMMING -> #define LCD_BED_TRAMMING
//#define EEPROM_SETTINGS -> #define EEPROM_SETTINGS
#define LCD_LANGUAGE en -> #define LCD_LANGUAGE es
5- Selecciona la pestaña del [b]Configuration_adv.h y realiza los siguientes cambios (como está -> como debe quedar):
//#define ADAPTIVE_STEP_SMOOTHING -> #define ADAPTIVE_STEP_SMOOTHING
//#define BABYSTEPPING -> #define BABYSTEPPING
//#define BABYSTEP_ALWAYS_AVAILABLE -> #define BABYSTEP_ALWAYS_AVAILABLE
#define ARC_SUPPORT -> //#define ARC_SUPPORT
6- Conecta la impresora al ordenador por USB, enciéndela y anota el puerto COM que se le asigna.
7- En el menú Herramientas, selecciona en Placa: Arduino Mega or Mega2560, en Puerto: el que se le asignó y pulsa el botón Subir (el circulo con la flecha apuntando a la derecha, arriba a la izquierda de la ventana). Se realizará la compilación y después se grabará el firmware compilado en la placa.
8- Una vez se reinicie la impresora, hay que refrescar la memoria EEPROM, por una de estas tres formas: si sale el mensaje al reiniciar, aceptándolo; utilizando las opciones del menú de la pantalla para ese fin o enviando los comandos M502 y M500 (desde Pronterface, por ejemplo).
9 - Ya se puede hacer un PID Autotune (comando M303), tanto del hotend como de la cama, cambiando los valores que se encuentran en el archivo Configuration.h por los que facilite dicho comando y volviendo a compilar y grabar en la placa.
Con eso ya quedaría la impresora lista para la calibración inicial: puede serte de ayuda lo que indico en este post.[/b]
Gracias Simemart, he seguido todos los pasos y ha compilado correctamente, pero a la hora de subirlo a la placa, me devuelve este error:
El Sketch usa 63010 bytes (24%) del espacio de almacenamiento de programa. El máximo es 253952 bytes.
Las variables Globales usan 2944 bytes (35%) de la memoria dinámica, dejando 5248 bytes para las variables locales. El máximo es 8192 bytes.
Ha ocurrido un error mientras se enviaba el sketch
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: verification error, first mismatch at byte 0x5500
0xff != 0xb0
avrdude: verification error; content mismatch
Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.
¿Qué puedo hacer con esto?
Pues viendo ese error, lo más probable es que la placa haya perdido el bootloader, de ahí que nadie conteste al otro lado de la conexión USB.
Para solucionarlo, tendrás que volver a cargarlo en la impresora, pero por la conexión ICSP utilizando un programador externo, que puede ser uno comercial (tipo USBasp o AVRISP).
Una opción más económica para hacerlo, es utilizar un Arduino Uno como ISP: tienes dos ejemplos de como se hace aquí ( Post1, Post2).
|