Estoy con un proyecto de construcción de una Delta con skr1.4 turbo. El caso es que no me hace homing, se queda como bloqueada y suenan muy mal los motores.
Los motores si que puedo moverlos en todos los sentidos, si yo marco 10 mm Z+ se mueve bien, los 3 ejes simultáneamente. Alguien sabe que puede pasar.
Hola, si los ejes se mueven bien de forma manual, pero no al hacer el homing, quizá tengas configurada una velocidad demasiado elevada para tu mecánica en este último.
05-03-2021, 09:11 AM (Última modificación: 05-03-2021, 11:03 AM por p52sarup.)
(04-03-2021, 11:46 PM)Simemart escribió: Hola, si los ejes se mueven bien de forma manual, pero no al hacer el homing, quizá tengas configurada una velocidad demasiado elevada para tu mecánica en este último.
Yo no toque nada de esto, pero si es mm/s es una burrada.
Por otro lado no se si tendra que ver algo el zprobe que me parece que lo tengo inc¡vertido.
De todas formas te paso los archivos de conf por si tienes un hueco y puedes echarle un ojo.
Por que ademas de este problema tengo una duda en cuanto a la configuracion de la geometria:
Como podras ver en la imagen adjunta existen varios parametros de ajuste diagonal, carriage, etc. Pues bien en mi archivo configuracion de marlin hay varios de estos parametros que no los encuentro, carriage_offset y effector_offset son dos de ellos.
#ifENABLED(DELTA_AUTO_CALIBRATION) // set the default number of probe points : n*n (1 -> 7) #define DELTA_CALIBRATION_DEFAULT_POINTS 4 #endif
#ifEITHER(DELTA_AUTO_CALIBRATION, DELTA_CALIBRATION_MENU) // Set the steprate for papertest probing #define PROBE_MANUALLY_STEP 0.05 // (mm) #endif
// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). #defineDELTA_PRINTABLE_RADIUS250.0 // (mm)
// Center-to-center distance of the holes in the diagonal push rods. #defineDELTA_DIAGONAL_ROD738.0 // (mm)
// Distance between bed and nozzle Z home position #defineDELTA_HEIGHT700.00 // (mm) Get this value from G33 auto calibrate
#defineDELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate
// Horizontal distance bridged by diagonal push rods when effector is centered. #defineDELTA_RADIUS382.66 // (mm) Get this value from G33 auto calibrate
// Trim adjustments for individual towers // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // measured in degrees anticlockwise looking from above the printer #defineDELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate
Hola, no soy un experto en este tipo de cinemática, pero quizá pueda aportarte alguna información.
Por la configuración que adjuntas, veo que tienes una máquina con unas dimensiones considerables, lo que demandará unos componentes muy robustos para que todo funcione como debe, supongo que lo habrás tenido en cuenta y que también habrás comprobado que la geometría que has implementado está dentro de los límites aceptables para la cinemática.
Esos parámetros que indicas que no encuentras en Marlin, no son relevantes para su configuración, ya que no intervienen en los cálculos del movimiento y por eso no están.
Los que necesita son los que aparecen en la configuración: la longitud del brazo (DELTA_DIAGONAL_ROD), el radio (DELTA_RADIUS), el radio del área de impresión (DELTA_PRINTABLE_RADIUS) y el desplazamiento máximo del eje Z (DELTA_HEIGHT). El único valor que no sale de mediciones directas es el radio del área de impresión, así que supongo que lo habrás ajustado al máximo que te permite la estructura que tienes.
En todo caso, con el comando G33 puedes comprobar si los valores que tienes configurados para los otros parámetros están correctos o tienes que hacer alguna modificación.
Si no hago yo mal los cálculos, me sale que tienes un ángulo mínimo de unos 31º, algo conservador y que viene bien para que las articulaciones sufran menos y para que la relación entre la velocidad de desplazamiento de los carros y la del soporte del extrusor (effector) sea menor, aunque te limita el área de impresión que se podría conseguir con unos brazos tan largos. Para la diferencia de altura, entre los anclajes de los brazos en el soporte del extrusor y la punta de la boquilla obtengo 69 mm, lo que no sé si se corresponde con la realidad.
Sobre la configuración que adjuntas, un par de cosas:
- Los motores que estás utilizando, ¿son realmente de 400 pasos (0,8º)? Ese es el valor que tienes configurado en el parámetro XYZ_FULL_STEPS_PER_ROTATION.
- Tienes habilitada la autocalibración y definidos unos offsets para el sensor, pero no veo que tengas definido ninguno, ¿que tipo estás usando?.
- Los valores de velocidades máximas y aceleraciones son demasiado elevados: quizá deberías bajar las aceleraciones a 1000 mm/s² mientras calibras la impresora y después de que la tengas funcionando correctamente, subirlas si es necesario.
- La velocidad configurada para los movimientos manuales es de 50 mm/s, lo que es bastante razonable, pero para el homing tienes 200 mm/s, lo que me parece demasiado elevada.
- No tienes activado el uso de la EEPROM, por lo que cualquier cambio permanente que quieras hacer en los parámetros de configuración te obliga a recompilar y grabar el firmware, cosa que es un verdadero engorro, sobre todo en la fase de puesta en marcha de la máquina.
06-03-2021, 12:49 PM (Última modificación: 06-03-2021, 01:23 PM por p52sarup.)
En primer lugar, muchas gracias por todo,
El sensor que uso es el que viene con la anycubic kossel plus, un pulsador. No se exactamente cual tengo que definir en marlin.
//#define EEPROM_SETTINGS // Persistent storage with M500 and M501
Cuando activo esta función ¿que es lo que estamos activando?, no termino de comprenderlo, ¿que hace M500 y M501
Cambiando velocidades se han solucionado los problemas de homing, ahora va genial, muchas gracias.
Lo único que tengo algún problemilla en la geometría y en los pasos por mm, si le digo que baje 10 mm en Z baja 20 mm justamente el doble, pero vaya creo que son problemas mecánicos de ajuste de los brazos.
06-03-2021, 05:53 PM (Última modificación: 06-03-2021, 05:53 PM por Simemart.)
Sobre el sensor, si dices que es el de la Anycubic Kossel Plus, creo que lleva un sensor a distancia (inductivo o capacitivo,) pues en los archivos pre configurados para ella de Marlin viene definido como FIX_MOUNTED_PROBE: no sé a que te refieres entonces con que es un pulsador (una foto sería de gran ayuda en este caso).
Te explico la función del parámetro EEPROM_SETTINGS, aunque se me había olvidado que en tu caso la placa no tiene por defecto memoria EEPROM, por lo que si quieres utilizar estas funciones tendrás que adquirir un módulo específico para esta función (BTT EEPROM V1.0).
Las MCU que controlan las placas que se utilizan para las impresoras 3D, además de la memoria flash, que se utiliza para albergar el software que la controla y de la memoria RAM, que se utiliza para la ejecución, suelen tener una memoria EEPROM como almacenamiento persistente, de forma que se puedan almacenar datos (normalmente parámetros) en ella y se mantengan entre reinicios de la placa.
Para habilitar su uso (cuando está presente), se utiliza el parámetro EEPROM_SETTINGS, que cuando está definido le indica al firmware que debe usar la memoria EEPROM y habilitar los comandos que la manejan (M500 y M501).
Si está activada, durante el arranque de la placa se cargan en la memoria RAM los valores de los parámetros almacenados en la EEPROM, en lugar de los grabados en el código del firmware, lo que permite modificarlos y conservar dichas modificaciones, sin que sea necesario compilar y volver a grabar aquel en la placa.
El comando M500 guarda en la memoria EEPROM los parámetros que se encuentran actualmente en la memoria RAM y el M501, carga en la memoria RAM los parámetros almacenados en la memoria EEPROM.
Sobre el problema con el movimiento de los ejes, creo que no te fijaste en la pregunta que te hice sobre el tipo de motores que utilizas: si son los habituales de 200 pasos por vuelta (1,8º por paso), los tienes configurados como de 400 pasos, lo que genera el problema que estás teniendo (distancias recorridas dobladas).
El parámetro en el que se configura ese valor es XYZ_FULL_STEPS_PER_ROTATION, se encuentra en el archivo Configuration.h: ponlo a 200 y problema resuelto.
(06-03-2021, 05:53 PM)Simemart escribió: Sobre el sensor, si dices que es el de la Anycubic Kossel Plus, creo que lleva un sensor a distancia (inductivo o capacitivo,) pues en los archivos pre configurados para ella de Marlin viene definido como FIX_MOUNTED_PROBE: no sé a que te refieres entonces con que es un pulsador (una foto sería de gran ayuda en este caso).
Te explico la función del parámetro EEPROM_SETTINGS, aunque se me había olvidado que en tu caso la placa no tiene por defecto memoria EEPROM, por lo que si quieres utilizar estas funciones tendrás que adquirir un módulo específico para esta función (BTT EEPROM V1.0).
Las MCU que controlan las placas que se utilizan para las impresoras 3D, además de la memoria flash, que se utiliza para albergar el software que la controla y de la memoria RAM, que se utiliza para la ejecución, suelen tener una memoria EEPROM como almacenamiento persistente, de forma que se puedan almacenar datos (normalmente parámetros) en ella y se mantengan entre reinicios de la placa.
Para habilitar su uso (cuando está presente), se utiliza el parámetro EEPROM_SETTINGS, que cuando está definido le indica al firmware que debe usar la memoria EEPROM y habilitar los comandos que la manejan (M500 y M501).
Si está activada, durante el arranque de la placa se cargan en la memoria RAM los valores de los parámetros almacenados en la EEPROM, en lugar de los grabados en el código del firmware, lo que permite modificarlos y conservar dichas modificaciones, sin que sea necesario compilar y volver a grabar aquel en la placa.
El comando M500 guarda en la memoria EEPROM los parámetros que se encuentran actualmente en la memoria RAM y el M501, carga en la memoria RAM los parámetros almacenados en la memoria EEPROM.
Sobre el problema con el movimiento de los ejes, creo que no te fijaste en la pregunta que te hice sobre el tipo de motores que utilizas: si son los habituales de 200 pasos por vuelta (1,8º por paso), los tienes configurados como de 400 pasos, lo que genera el problema que estás teniendo (distancias recorridas dobladas).
El parámetro en el que se configura ese valor es XYZ_FULL_STEPS_PER_ROTATION, se encuentra en el archivo Configuration.h: ponlo a 200 y problema resuelto.
Buenas tardes,
No es inductivo ni capacitivo , pero bueno tendrá el mismo funcionamiento, al final es un contacto que da una señar digital. Imagino que se usará la misma configuración. Este es el sensor, es un palpador.
Vale, ya entiendo lo de la EPROM, tengo una placa trigorilla que sí que tiene este tipo de memoria y es cierto que guardaba los parametros ahí y luego los cargaba. Es más cómodo, lastima que la skr 1.4 turbo no la lleve.
Lo último está claro, tengo mal definidos los pasos.
Muchas gracias de nuevo, seguiré avanzando en la puesta en marcha. Cualquier cosa voy comentando.
Vale, desconocía que fuese así el proceso para realizar la autonivelación en esas máquinas y por eso la configuración en ellas del tipo de sensor como FIX_MOUNTED_PROBE me hizo pensar que sería un sensor a distancia. Ese tipo de sensor es el que tienes que configurar también en tu caso.
Poniéndonos en plan purista, eso no es un sensor sino un interruptor mecánico de contacto, similar a los que se utilizan para los finales de carrera (aunque de mayor calidad y se supone que más precisión) y dado que detecta por contacto y está fijo, hay que desmontarlo después de realizada la calibración, pues sino durante el uso normal chocaría con las piezas impresas (cosa que no hace un sensor, pues se encuentra siempre por encima de la boquilla durante la impresión).
Investigando sobre la EEPROM en estas placas cuyas MCU no la incluyen, me he topado con algo que desconocía: Marlin permite realizar una emulación, de forma que se tenga esa funcionalidad aunque no exista una EEPROM física. La emulación tambien se puede utilizar aunque se tenga una MCU que incluya EEPROM.
Para ello, hay que definir, además del parámetro EEPROM_SETTINGS, un parámetro que indica el tipo de emulación y que puede ser de tres tipos: utilizar la memoria flash de la MCU (#define FLASH_EEPROM_EMULATION), la memoria SRAM (#define SRAM_EEPROM_EMULATION) o la tarjeta SD (#define SDCARD_EEPROM_EMULATION).
Por defecto, el tamaño de la memoria EEPROM emulada es de 4 KiB, aunque se puede cambiar asignando un valor hexadecimal al parámetro MARLIN_EEPROM_SIZE.
Una vez definida, la EEPROM emulada se utiliza de la forma habitual (comandos M500 y M501).
(08-03-2021, 12:59 AM)Simemart escribió: Vale, desconocía que fuese así el proceso para realizar la autonivelación en esas máquinas y por eso la configuración en ellas del tipo de sensor como FIX_MOUNTED_PROBE me hizo pensar que sería un sensor a distancia. Ese tipo de sensor es el que tienes que configurar también en tu caso.
Poniéndonos en plan purista, eso no es un sensor sino un interruptor mecánico de contacto, similar a los que se utilizan para los finales de carrera (aunque de mayor calidad y se supone que más precisión) y dado que detecta por contacto y está fijo, hay que desmontarlo después de realizada la calibración, pues sino durante el uso normal chocaría con las piezas impresas (cosa que no hace un sensor, pues se encuentra siempre por encima de la boquilla durante la impresión).
Investigando sobre la EEPROM en estas placas cuyas MCU no la incluyen, me he topado con algo que desconocía: Marlin permite realizar una emulación, de forma que se tenga esa funcionalidad aunque no exista una EEPROM física. La emulación tambien se puede utilizar aunque se tenga una MCU que incluya EEPROM.
Para ello, hay que definir, además del parámetro EEPROM_SETTINGS, un parámetro que indica el tipo de emulación y que puede ser de tres tipos: utilizar la memoria flash de la MCU (#define FLASH_EEPROM_EMULATION), la memoria SRAM (#define SRAM_EEPROM_EMULATION) o la tarjeta SD (#define SDCARD_EEPROM_EMULATION).
Por defecto, el tamaño de la memoria EEPROM emulada es de 4 KiB, aunque se puede cambiar asignando un valor hexadecimal al parámetro MARLIN_EEPROM_SIZE.
Una vez definida, la EEPROM emulada se utiliza de la forma habitual (comandos M500 y M501).
Muchas gracias Simemart,
Investigue algo sobre la emulación, pero lo dejaré para mas adelante ya que tengo problemas algo mas importantes. Solucione el problema de los pasos, efectivamente eran 200 pasos por vuelta y se solucionó el problema, ya se desplaza correctamente en Z.
Hay otra cosa que me preocupa más, tengo problemas en los desplazamientos del carro en XY, lo que me pasa es que, cuando muevo en X e Y no permanece en el mismo plano. Quería comentar estos problemas para estudiarlos e ir descartando. Para mi entender toda esta configuración es la relativa a "Delta setting", pero se me ocurre que tengo algún problema de precisión en los brazos.
Al ser una impresora grande, creo que la precisión mecánica a la hora de fabricarlos puede haber fallado. ¿Existe alguna manera de comprobar, cuando hago un desplazamiento en X, lo que deben moverse cada uno de los ejes ?. Por ejemplo, me lo invento, si muevo 50 mm en X, el eje Y se moverá 100 mm+, el X 20mm- y el Z 60 mm-. De esta manera comprobaría que la configuración en "delta setting" se transmite bien a los motores y mi problema es de la fabricación mecánica.
Si el cabezal de impresión no se desplaza de forma correcta, pude ser debido a algún parámetro mal configurado, pues supongo que te habrás asegurado de que todos los brazos son de la misma longitud y están anclados de forma simétrica en el carro de impresión.
Para facilitar la calibración de este tipo de impresoras, existe un comando gcode (G33) que la realiza de forma automática, a partir de los valores configurados para el radio del área de impresión y la longitud del brazo: te recomiendo que le eches un vistazo aquí.
En todo caso y respondiendo a tu última pregunta, puedes estar seguro de que Marlin realiza los movimientos de los ejes que corresponden a la geometría que esté definida por lo que, con casi absoluta seguridad, el problema está en los valores configurados o en la parte física de la impresora.