Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
APORTE Orientación de las piezas impresas.
#1
Varias veces he respondido a consultas sobre la orientación de las piezas impresas por las impresoras que referencian la posición mediante tres ejes cartesianos (rectangulares) y siempre se suscitan las mismas dudas y comentarios, estos últimos la mayoría de las veces equivocados o inexactos. Por ello, voy a intentar clarificar un poco este tema.

Como siempre, serán bienvenidas las objeciones y correcciones a lo que expongo, si son presentadas con argumentos razonados que las apoyen.

Solo me referiré a los ejes X e Y, dado que el eje Z siempre tiene la misma orientación (ya que no es posible imprimir de arriba a abajo).

La orientación de las piezas impresas está condicionada por la del programa de diseño con que se han generado, ya que el STL que se utiliza para cortar la pieza lleva incorporada esa orientación.

Tanto la del programa de corte como la de la impresora tendrán que coincidir con aquella para que no sea necesario invertir de forma manual la pieza antes de generar el archivo G-code.

La dirección estándar para todos los programas de diseño que conozco es (en sentido creciente): X de izquierda a derecha; Y de delante a atrás y Z de abajo a arriba.

CURA considera las direcciones según ese criterio, por lo que no hay problema en este caso. En él este aspecto no es configurable, aunque de forma manual puede invertirse la pieza según cualquier eje.

Simplify3D, por defecto, tiene invertido respecto a ese criterio el sentido del eje Y, por lo que reflejará las figuras según ese eje. Este criterio puede cambiarse en la configuración de la máquina y ajustarlo como se quiera. También, como en CURA, se puede reflejar de forma manual la pieza según cualquiera de los ejes.

No conozco el criterio por defecto que utilizan otros programas de corte ni sus posibilidades de configuración en este sentido, aunque supongo que serán similares a los anteriores.

Por lo que se refiere a la máquina, la orientación la fijan tanto la posición física de los interruptores de final de carrera de los ejes como su tipo (configurado en el firmware).

La posición de los interruptores es una decisión de diseño, más o menos condicionada por la estructura elegida. Suele ser habitual la colocación atendiendo, más que nada, a como llevar los cables hasta la placa.

El tipo se refiere a si es un interruptor de final de carrera que limita el movimiento en dirección descendente del eje (MIN) o ascendente (MAX).

Una vez decididos ambos, queda fijado el origen de coordenadas de la máquina (punto 0,0,0) y en ese momento, ya no queda margen de libertad a la configuración del firmware. Sólo queda ya configurar el sentido de giro de los motores, para que se muevan en las direcciones correctas cuando lo hacen hacia los interruptores (decreciente si son MIN o creciente si son MAX).

Como sucede para el programa de corte, si esta orientación no coincide con la del programa de diseño y el de corte, habrá inversión en el eje en que sean distintas.

Sólo hay dos formas de cambiar la orientación de la máquina: cambiar la posición del interruptor de carrera del eje al lado contrario o cambiar el tipo de interruptor en el firmware. En ambos casos, hay que cambiar también el sentido del movimiento de ese eje.

Cambiar el interruptor de posición en la impresora no siempre es posible o recomendable por lo que, si no queremos o no podemos hacerlo, nos queda como única solución el cambio de tipo.

Lo habitual es que los interruptores de final de carrera estén configurados todos como MIN en el firmware (los ejes se mueven hacia direcciones negativas para realizar el “home”), lo que hace que muchas placas solo traigan conectores para ese tipo.

Para modificar el tipo de interruptor, hay que realizar tres cambios: el control del interruptor por la placa, la dirección del “homing” y el sentido del movimiento de ese eje.

Para lo primero, depende de si tenemos una placa que tenga ya un conector dedicado para el interruptor en posición MAX o no.

Si lo tiene, sólo hay que conectarlo en él e indicarle al firmware que lo utilice. Si no lo tiene o no queremos cambiar la conexión, hay que utilizar el del MIN como si fuese MAX, para lo que hay que cambiar el pin asignado en el archivo pins_X.h (donde X es el nombre de la placa).

La configuración del tipo de interruptor se realiza en las siguientes líneas del archivo Configuration.h:

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG


Hay que tener descomentadas (sin el // inicial) las líneas correspondientes a los interruptores que se utilicen en cada eje.

Dado que pasamos a utilizar otro tipo de interruptor, hay que cambiar su lógica si es necesario. Se realiza en las siguientes líneas:

#define X_MIN_ENDSTOP_INVERTING <valor>
#define Y_MIN_ENDSTOP_INVERTING <valor>
#define X_MAX_ENDSTOP_INVERTING <valor>
#define Y_MAX_ENDSTOP_INVERTING <valor>


siendo <valor>, true o false. Los interruptores del tipo NC (normalmente cerrados) tienen valor false y los NO (normalmente abiertos) true.

La dirección del “homing” se configura en las siguientes líneas:

#define X_HOME_DIR -1
#define Y_HOME_DIR -1


El valor -1 indica MIN y el 1 MAX.

Cambiar el sentido del movimiento del eje depende del tipo de impresora que se trate.

Si es del tipo con un driver para cada eje la cosa es sencilla: se puede invertir la conexión del motor o cambiar la lógica en el firmware. Esto último se realiza en las siguientes líneas:

#define INVERT_X_DIR <valor>
#define INVERT_Y_DIR <valor>


siendo <valor>, true o false. Hay que poner el valor que haga que el eje se mueva en la dirección correcta.

Si la impresora es del tipo Core (XY o YX) la cosa se complica, ya que el movimiento de los ejes X e Y se realiza conjuntamente por dos drivers, por lo que no funcionan los métodos descritos para las anteriores.

En este tipo de impresoras confluyen tres variables: el tipo de Core (XY o YX), la conexión de los motores (cual se conecta al driver de X y cual al de Y) y la lógica del movimiento de cada eje.

El tipo de Core lo determina la asignación de ejes que hagamos: será CoreXY, si cuando los motores giran en el mismo sentido se mueve el eje que consideramos X y cuando giran en sentidos opuestos se mueve el eje que consideramos Y. Será CoreYX, si se cumple el criterio contrario al anterior.

Aún no he dado con el algoritmo para sacar la configuración directamente, pero sigo pensando en el tema. Mientras tanto, pruebo todas las configuraciones posibles hasta dar con la correcta.

Las variables son: tipo de cinemática (CoreXY, CoreYX), conexión de los motores (2 formas), lógica del eje X (true, false) y lógica del eje Y (true o false). Total 16 posibilidades.

Veamos un caso concreto, como ejemplo para aplicar todo esto:

Impresora tipo Core con placa RAMPS 1.4, interruptores de final de carrera de tipo NO, situados en la esquina trasera izquierda y configurados como MIN, lo que hace que su origen de coordenadas esté en dicha esquina y con la orientación (en sentido ascendente) del eje X de izquierda a derecha y del eje Y de atrás a adelante, que hace que sea una CoreYX.

Simplify3D como programa de corte, que como vimos, por defecto tiene el origen de coordenadas igual que la impresora, por lo que ningún problema con esto.

Pero sí lo tenemos en que no coincide la orientación del programa de corte/impresora, con la del programa de diseño. Esto hace que se invierta el eje Y, por lo que las piezas aparecen reflejadas respecto a ese eje, tanto en Simplify3D como una vez impresas.

Para solucionarlo, o bien se invierten las figuras al diseñarlas o al cortarlas (lo que obliga a hacerlo de forma manual cada vez), o bien se cambia la orientación, tanto en la impresora como en el programa de corte, para adaptarlos al del programa de diseño. Dado que no quiero tener que acordarme de invertir las piezas, tomaré esta segunda opción.

En Simplify3D lo tengo fácil, ya que solo tengo que indicarle que invierta el eje Y en la configuración de la máquina (si fuese CURA no tendría que hacer nada).

Para revertir la inversión del eje Y en la impresora, sin cambiar de posición el interruptor de final de carrera (cosa que no quiero hacer), tengo que cambiar: 1) el tipo de interruptor de ese eje a MAX, 2) el control del interruptor, 3) la dirección del “homing” a MAX y 4) el movimiento del eje Y para que sea en dirección creciente hacia el interuptor, que ahora es de tipo MAX.

1) Para lograr esto, configuro así las siguientes líneas en el archivo Configuration.h:

#define USE_XMIN_PLUG
//#define USE_YMIN_PLUG
//#define USE_XMAX_PLUG
#define USE_YMAX_PLUG


Dado que el interruptor es de tipo NO, además tengo que poner así la lógica del interruptor:

#define Y_MAX_ENDSTOP_INVERTING true

2) Aunque la placa RAMPS 1.4 lleva conector dedicado para el MAX, no voy a cambiar el interruptor de conector. Utilizaré el MIN al que ya está conectado.
Para ello, en el archivo pins_RAMPS.h, intercambio la definición de pines:

#define Y_MIN_PIN   15
#define Y_MAX_PIN   14


3) La dirección del homing se configura con la siguiente línea:

#define Y_HOME_DIR 1

4) Las posibles configuraciones para cambiar el sentido del eje son:

resim

Iríamos probando hasta dar con la configuración correcta, que es la que consigue que los ejes se muevan según el criterio buscado (en sentido creciente): X de izquierda a derecha e Y de adelante a atrás.
Suponiendo que fuese la 15, querría decir que lo hemos conseguido teniendo conectado el Motor2 al driver del eje X, el Motor1 al del eje Y y con la siguiente configuración en el archivo Configuration.h:


//#define COREXY
//#define COREXZ
//#define COREYZ
#define COREYX
//#define COREZX
//#define COREZY

#define INVERT_X_DIR false
#define INVERT_Y_DIR true


Con ello, el origen de coordenadas de la impresora pasará a la esquina delantera izquierda y el sentido de los ejes de la máquina, del programa de corte y del de diseño serán iguales, con lo que las piezas saldrán perfectamente orientadas en todos los ejes.
Citar
#2
Lo cierto es que este tema siempre suscita dudas, y es normal! Son muchas variables a tener en cuenta y todo el mundo suele acabar probando a cambiar una a una cada variable para ver como afecta al comportamiento de la impresora.

Con respecto a lo de que Cura lo hace bien y Simplify invierte un eje... pues a mi no me ha ocurrido, es cierto que no he usado el programa oficial de Cura, si no el CuraEngine que integra Repetier Host, pero el dia que me cambie a simplify yo no tuve que cambiar nada... y las piezas salen como deben salir y no reflejadas.

El apunte de cambiar el pin en el pins.h es bueno. Por suerte hay acceso a los ficheros de configuracion y cambiar un pin por si se nos ha quemado un puerto o queremos cambiar el driver usado o cualquier otra cosa es muy sencillo. Es la parte buena de usar un firmware abierto.

Por ultimo, el tema del origen de coordenadas es peliagudo, el truco para saber si esta correctamente situado en la impresora es basandose en el eje X de la misma y la dirección de la Z. Usando la regla de la mano derecha sacas la dirección de la Y. Si esta dirección no coincide con la que pongas en el firmware estarás inviertiendo algun eje (por ejemplo en una impresora tipo prusa con el final de carrera Y detras, su 0 deberia estar con la cama pegada al fondo y conforme la cama avanza hacia la parte frontal (y la cama se aleja del origen de coordenadas) la coordenada Y se irá incrementando cada vez mas.

resim

Esa es la metodologia que yo sigo... pero podria estar equivocado. Tambien es verdad que yo trabajo con sistemas de coordenadas a diario y mi forma de ver estas cosas ha cambiado desde que empece a trabajar (por ejemplo para mi el origen de coordenadas de la impresora no lo veo como estatico, para mi el eje Y mueve el origen de coordenadas al moverse (es decir, el sistema de coordenadas esta embarcado en la cama) y las coordenadas se toman en referencia a la distancia entre el origen de coordenadas de la cama y las coordenadas del cabezal del extrusor)

Yo lo veo de esta forma pero hay muchas maneras correctas de interpretarlo.
Citar
#3
Hola, gracias por los comentarios.
Si con Simplify3D te salen igual las piezas que con CURA, es que tienes marcada la casilla de inversión del eje Y en la configuración de la máquina, bien en el perfil de impresión que utilices (si tienes marcada la casilla Modificar definición de máquina en el apartado G-Code) o, si no tienes marcada esa casilla en el perfil, en la configuración general de la máquina en el menu Herramientas>Opciones en el apartado Máquina.
Creo que me he equivocado y esta es la configuración por defecto, pero si desmarcas todas las casillas (es decir, no inviertes ningún eje) entonces sucede lo que indico en el post.
Efectivamente, la regla de la mano sirve para saber la orientación de los ejes según la norma DIN66217, que se refiere a este tema para las máquinas de control numérico (CNC) y es a la que se adhieren todos los programas de diseño que conozco.
El punto de vista que indicas sobre el origen de coordenadas se refiere únicamente a las impresoras tipo Prusa, en las que la cama es la que realiza el movimiento del eje Y, pero no lo tendrías si manejas una de tipo Core, ya que en estas no se mueve la cama.
Realmente, lo que se mueve respecto a los ejes es la boquilla de impresión, solo que en las tipo Prusa el movimiento en el eje Y lo realiza la cama en lugar del cabezal. Pero el efecto es exactamente el mismo: que la boqulla se desplace a lo largo de ese eje.
La cama nunca se mueve respecto a los ejes. Es decir, el origen de coordenadas está fijo siempre en un punto de ella, tanto si se mueve como si no lo hace, solo que si la cama se desplaza para realizar el movimiento de un eje, lógicamente se desplaza con ella.
Esto mismo sucede, solo que a la inversa, para el eje Z: en las tipo Prusa la que se desplaza es la boquilla, mientras que en las tipo Core lo hace la cama.
Pero desde el punto de vista de la boquilla del extrusor, que es la que hace la impresión, no existe diferencia alguna.
Si no lo ves así, haz el siguiente experimento mental: supón que te encuentras aferrado a la boquilla y tu único sentido es la visión de la cama únicamente, ¿como sabrías si quien se mueve eres tú o es la cama durante la impresión?
La posición de los interruptores de final de carrera y el tipo, son los que determinan el punto de la cama donde se fija el origen de coordenadas.
Cuando en el post me refiero a que se encuentra en una esquina determinada de la máquina, me refiero al punto donde se encuentra la boquilla cuando todos los ejes están a 0, que será un punto sobre la cama en esa esquina, como es lógico.
Citar
#4
Si... con lo del origen de coordenadas movil me referia a las prusa. Tengo que montarme algun dia la coreXY pero la verdad... no tengo tiempo casi.

Ciertamente el firmware interpreta que el origen de coordenadas esta fijo en el espacio sea el caso de una prusa, corexy o cualquier otro modelo de impresora.
Lo que hacemos es mover los ejes y punto, al firmware le da igual.

Como he dicho antes, son maneras de pensar, para mi, por mi trabajo tiene todo el sentido que si una pieza es movida por un eje, el sistema de coordenadas sea movil en relación a la posicion de ese eje, pero como digo, a efectos practicos es exactamente igual que sea fijo o movil, solo usamos 3 ejes, asi que no tiene importancia alguna.
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Que material utilizar para las piezas impresas de una impresora 21Curiosos 8 981 20-01-2018, 07:17 PM
Último mensaje: dvera16
  Como alisar y pintar piezas impresas repente 61 25,209 18-09-2015, 01:48 PM
Último mensaje: Miguel Angel
  [AYUDA] Piezas impresas con simetria silth 20 1,974 25-01-2015, 04:24 PM
Último mensaje: silth
  Casas impresas con barro Electromecánico 0 391 18-10-2014, 09:20 PM
Último mensaje: Electromecánico
  Dudas acabado de las piezas impresas branigan 6 906 27-03-2014, 09:49 PM
Último mensaje: nexocomun