Foro MetalAficion
CNC => CNC - Software y Controladores => Mensaje iniciado por: DEVILHUNTER en 29 Noviembre 2013, 21:46
-
Hace ya tiempo que quería probar esto, pero al desconocer el código necesario no sabía como hacerlo, cansado de buscar una referencia entre la pieza y la fresa con el método del papel o la galga, me puse a buscar información.
Una de las ventajas de que la MF-70 de Proxxon sea de aluminio, es que el anodizado de la mesa es aislante eléctrico, con lo que al conectar un cable a la pieza a fresar (esta es una limitación, la pieza ha de ser de material conductor) y otro a la fresa, podemos conectarlos directamente a la placa de control (en mi caso una TB-6560 V2 roja) como si fuese uno de los interruptores final de carrera.
Para la gente que tenga otras fresadoras este método también puede ser implementado, es cuestión de aislar eléctricamente la mesa del husillo. En los routers con los laterales de madera es directo, y probablemente en husillos de altas revoluciones también por sus rodamientos cerámicos. Para fresadoras más convencionales se podría cambiar los rodamientos por unos buenos cerámicos, o poner una fina lámina de film plástico entre el cabezal y la guía que desliza por la columna, evitando que los tornillos hagan contacto con unos casquillos cerámicos. Es cuestión de que cada uno vea como hacerlo según su fresadora.
Existen dos formas de configurar el touch probe en LinuxCNC. La primera es abrir el archivo .hal, y allí introduciremos una línea de comando indicando el pin que vamos a utilizar, en mi caso el 10. Este método manda una señal de que ha habido contacto cuando se cierra el circuito y se conecta el pin a tierra, así que la señal ha de ser invertida y la línea es la siguiente:
net probe parport.0.pin-10-in-not => motion.probe-input
En caso de usar un touch probe común, no hemos de invertir la señal:
net probe parport.0.pin-10-in => motion.probe-input
El otro método es directamente seleccionar el touch probe en el pin correspondiente, teniendo en cuenta si hay que invertir la señal o no, durante el step config.
Para configurar el touch probe, en Mach nos vamos a la pantalla de port and pins y en el apartado correspondiente al touch probe seleccionamos el pin que vamos a usar, teniendo en cuenta si hay que invertir la señal.
Ahora que tenemos listo el software controlador, enganchamos un cable a la tierra de la placa controladora y otro a la salida del pin correspondiente. Con una pinza (o directamente al cabezal si hay continuidad) enganchamos un cable a la fresa y el otro cable a la pieza.
Ya podemos ordenar al control que mueva los ejes y se detenga en cuanto haga contacto meditante un código G que explicaré a continuación. También podemos desplazar manualmente los ejes mediante las flechas de control, que el ordenador detendrá el movimiento en cuanto haya contacto y en la pantalla nos saldrá un mensaje de error indicando que ha habido contacto entre el touch probe y la pieza durante un movimiento manual.
Para explicar los comandos de código G útiles para este menester voy a usar como ejemplo un programa que he realizado, basándome en otro que encontré pero que no me funcionaba, no se porqué. Se coloca manualmente la sonda en el interior de un agujero circular, al ejecutar el programa mueve la sonda hasta hacer contacto en diferentes puntos y de esta manera calcula el centro del agujero.
%
F50
#1000=20
G10 L20 P1 X0 Y0
G91 G38.2 X#1000
#1001=#5061
G90 G0 X0
G91 G38.2 X[0-#1000]
#1002=#5061
G90 G0 X[[#1002+#1001]/2]
G10 L20 P1 X0
G91 G38.2 Y#1000
#1001=#5062
G90 G0 Y0
G91 G38.2 Y[0-#1000]
#1002=#5062
G90 G0 Y[[#1002+#1001]/2]
G10 L20 P1 Y0
%
F50 selecciona una velocidad de desplazamiento para los ejes. Es importante que esta velocidad sea baja para obtener la mayor precisión. Hay que tener en cuenta los ejes empiezan a frenar en cuanto hacen contacto, y la deceleración que pueden tener está limitada por la configuración de los motores, así que cuanto más lento vaya, menor será la distancia utilizada para frenar.
#1000=20, LinuxCNC tiene una serie de variables volátiles o permanentes a las que el código G puede acceder para leer o grabar poniendo una almohadilla seguida del número correspondiente. Ciertas variables guardan los valores de los parámetros del programa, mientras que otras están libres para que el usuario guarde los datos que crea necesario. En este caso guarda en la variable #1000 el valor de 20, que se usará para delimitar el movimiento máximo que realizará la sonda (en unidades máquina) intentando encontrar la pieza. Si tu agujero mide más, simplemente hay que aumentar este valor. Si queréis saber más acerca de las variables tenéis este link:
http://www.linuxcnc.org/docs/html/gcode/overview.html#_numbered_parameters_a_id_sub_numbered_parameters_a
G10 L20 P1 X0 Y0, el comando G10 L20 nos permite establecer un nuevo valor de offset para la posición actual de cualquier eje, en cualquiera de los ejes de coordenadas. En este caso, selecciona el primer eje de coordenadas (P1 al que se accede con el comando G53, P0 es coordenadas máquina) y establece la posición actual como X=0 e Y=0 en dicho eje de coordenadas. Esta línea no es estrictamente necesaria, el código en el que me basé utilizaba variables volátiles para guardar este dato, pero no se porqué al intentar acceder posteriormente a ellas no me funcionaba.
G91 G38.2 X#1000, esta línea ordena a la máquina moverse hasta hacer contacto con el touch probe (G38.2) una distancia relativa desde la posición actual (G91) igual al valor que anteriormente habíamos asignado a la variable #1000 en el eje X.
#1001=#5061, con esta línea accedemos a la variable #5061 que contiene el valor de la posición en ejes máquina del eje X en todo momento, y la guardamos en una nueva variable volátil.
G90 G0 X0, volvemos rápidamente al punto de inicio.
G91 G38.2 X[0-#1000], volvemos a realizar un movimiento lento en el eje X para hallar el punto de contacto, esta vez en dirección contraria.
#1002=#5061, vuelve a guardar la posición actual del eje X, punto en el que ha habido contacto, en una nueva variable #1002.
G90 G0 X[[#1002+#1001]/2], regresa rápidamente al punto intermedio entre los dos puntos de contacto, que habían sido guardados en las variables #1001 y #1002.
G10 L20 P1 X0, de nuevo establece el punto actual como origen del eje de coordenadas 1 en el eje X, ya que en este punto de X se encuentra el centro del agujero.
Las siguientes líneas del programa son una repetición de las anteriores, solo que intercambiando el eje X por el Y para hallar el centro de este eje (cuidado que la variable que contiene el valor de la posición del eje Y en cada instante es #5062). Os dejo un vídeo de su funcionamiento:
http://youtu.be/Jm9cOa4t8xU
El doloroso sonido al desplazar el eje Y es causado por un problema en el soporte del motor que estoy solucionando, ya que además me provoca pérdida de pasos a altas velocidades (altas para esta máquina y unos motores Nema 17 claro).
Se que se puede hacer una subrutina igual para Mach3 pero no tengo ni idea de como sustituir el tema de las variables.
Espero haber ayudado a comprender cómo funciona el programa, para aquellos que nos estamos iniciando en el CNC, ya que entender un código paso a paso es una de las cosas que mas trabajo lleva.
-
Gracias devil!!!
-
Hola.
Que bueno!
Gracias por tu informacion.
-
por experiencia te digo, que no te fies mucho de eso que el anodizado es aislante.
Saludos
-
Gracias a todos.
Jbecerra, esto solo es dar unos primeros pasitos en el mundo del LinuxCNC, tu programa digitalizardor es un auténtico sprint en comparación.
Octavio, entre que la señal son sólo 5V y el anodizado duro tiene una capa mayor de alúmina, no tengo miedo a que pueda haber algún tipo de conexión. De todas formas en caso de que por cualquier tipo de problema haya algún contacto indeseado, el comando G38.2 impide que se inicie el movimiento y manda un aviso de error indicando que hay contacto antes de iniciar el desplazamiento.