Sonda cero para la fresadora X6-1500GT Parte 2

En la anterior entrada, Sonda cero para la fresadora X6-1500GT Parte 1 explicaba cómo he construido mi nueva sonda cero.
En esta entrada mostraré como la he calibrado, y podréis ver algunas pruebas de su funcionamiento.

El Script de la sonda

Mi intención es fijar la sonda en una posición de la máquina (donde no me estorbe mucho), de tal forma que con una macro podré mover el spindle sobre ella y con otra macro podré hacer el cero con la herramienta que tenga instalada en ese momento.
Todas mis macros de movimiento (ir a home, ir a sonda, etc) los he programado de tal manera que hagan movimientos seguros en lo que respecta al eje Z, es decir, si el spindle está en medio de la máquina, a pocos milímetros de la base y pulso el botón de ‘ir a posición home’, el script, en lugar de mover los 3 ejes simultáneamente hacia la posición home, lo que hace es, primero eleva el eje Z y luego, mueve los ejes X e Y.
Con esta sencilla operación, puedo estar seguro que al pulsar el botón, la herramienta no chocará con alguna posible pieza que tenga en la base de la máquina.
Dicho esto, el script de hacer el cero lo he programado de tal manera que estando el eje Z en su posición superior, al ejecutar el script sea lo más rápido posible, la para lo cual, lo que hace es script es usar dos velocidades:

  • Baja a una velocidad rápida (F800 en el ejemplo) hasta detectar la sonda
  • Retrocede una pequeña distancia (en el ejemplo, 1mm)
  • Baja de nuevo, pero a una velocidad más lenta (F20 en el ejemplo) hasta detectar la sonda
  • Toma nota de la coordenada absoluta de máquina en donde se activó la sonda y la muestra en la barra de estado (y por tanto en el log) del Mach3
  • Hace el cero del eje Z en ese punto

Por supuesto, para usar este script, la máquina tiene que tener los ejes referenciados, sino no tendrás coordenadas absolutas de máquina fiables, para lo cual, tu máquina debería tener instalados detectores de posición inicial en sus 3 ejes.
Puedes ver aquí cómo instalar sensores de ‘Home’ en tu máquina: Añadiendo detectores a la fresadora X6-1500 GT

Tambien cabe mencionar… que si vas a probar este script con tu sonda conductiva… ten cuidado y modifica la velocidad de bajada rápida, o tu máquina podría pasarse de frenada estrellando la herramienta contra la sonda. En la sonda mediante pulsador esto no tiene problemas, porque el pulsador tiene cierto margen, ya que desde su punto de activación permite que la herramienta baje por lo menos otro milímetro más sin chocar.

Este es el código del script para hacer cero a 2 velocidades:

Rem	VBScript Para hacer cero en Z con la sonda cero
Rem 	www.parecefacil.com


cRecorridoMaximo	=51		'Distancia máxima a bajar buscando la sonda (50 mm)
cRetroceso	=1		'Distancia a retroceder para hacer la pasada lenta (1mm)
cFRapido	  	=800		'F para bajar rápido
cFLento		=20		'F para bajar lento y detectar el cero 	


If GetOemLed (825) <> 0 Then 		'si la sonda está pulsada, mostramos error y no seguimos
    Message "(ERROR: La sonda cero está activada antes de empezar!!)" 'esto se vera en la status bar como mensaje
Else

	ZRef = GetOEMLed(809)			'TRUE si el eje Z NO está referenciado

	If ZRef <> 0 Then		
	  Message "ERROR: El Eje Z debe estar referenciado"
	Else
		
	  AlturaDeSonda = GetUserDRO(1151)	'Obtiene la altura de sonda
	  CurrentFeed = GetOemDRO(818) 		'Obtiene el F actual

	  Rem Primera deteccion bajando rápido:
	  Code "F" & cFRapido	  			
		  
	  ZNew = GetDro(2) - cRecorridoMaximo	'Cordenada Z meta de la sonda

	  Code "G31Z" &ZNew
	  While IsMoving()			'Esperamos a que la sonda se active
	  Wend

	  ZNew = GetVar(2002) 			'Obtenemos coordenada Z de donde ha tocado

	  Rem subimos un trozo para volver a bajar lento:
	  code "G0Z" & ZNew + cRetroceso		'Retrocedemos cRetroceso hacia arriba

	  Rem Y Bajamos lento:
	  Code "F" & cFLento			'Bajamos hacia la sonda, pero lentamente
	  ZNew = GetDro(2) - (cRetroceso+1)

	  Code "G31Z" &ZNew
	  While IsMoving()			'Esperamos a que la sonda se active
	  Wend
   
	  ZCero = GetOemDRO( 85 )			'Obtenemos Z (de máquina, no relativa) del cero detectado
	  Message "Z Absoluta detectada:" &ZCero

	  Call SetDro (2, AlturaDeSonda)		'Hacemos el cero de eje z en el alto de la sonda
	  Code "G4 P0.25" 			'Pausa

	  Code "F" &CurrentFeed 			'Volvemos a poner el F que habia antes de empezar el script

	  Rem Movemos el Z a posicion de Home:
	  z = GetOemDRO( 192 )			'Obtenemos la Z de posicion de home
	  code "G0G53Z" & z
	End If  	
End If                                 

Pruebas de funcionamiento

Aqui muestro el funcionamiento de la sonda y del script, una vez montado todo:

Ajuste de la altura de la sonda

Para poder hacer el cero, el script necesita saber a que altura está el punto justo donde el pulsador hace contacto respecto del suelo. En este vídeo muestro cómo averiguar esta altura, obteniendo el dato que poner luego en el campo ‘altura de sonda’ en la pantalla correspondiente del Mach3:

Dejar un comentario?

16 Comentarios.

  1. Hola
    Por casualidad he visto el trabajo que has realizado con tu maquina y no tengo mas que felicitarte.
    Yo hace una semana he comprado una de la misma casa y de momento estoy en pruebas.
    Si me gustaría preguntarte si no es molestia, si me puedes definir el punto cero de Z que buscas con la sonda.
    Me intentare explicar mejor:
    El mach3 necesita la altura de la fresa asta la bancada o hasta la pieza?
    Yo lo hago asta la pieza a fresar pero no hay forma, queda demasiado alta.
    Ok. no te molesto mas
    Un saludo y gracias por tu ayuda

  2. Bueno, si, te entiendo la pregunta.

    A ver.. en esta máquina, como las herramientas se ponen a mano, resulta que cada vez que pones una herramienta, lo mismo la dejas más metida en el collet o mas sacada, ¿esto que quiere decir?, pues que a nosotros, todo el sistema que tiene el mach3 de almacenar el offset de altura de cada herramienta no nos sirve… porque no podemos asegurar que cuando ponemos la misma fresa quede a la misma altura que cuando la usamos por ultima vez.
    Para solucionar esto, lo que tenemos que hacer es considerar el cero de la herramienta y el cero del trabajo como el mismo.
    Es decir, tu en tu programa de CAM (yo por ejemplo uso el HsmWorks que se pega al SolidWorks) cuando definas el trabajo de fresado tienes que especificar dónde quieres el cero de ese trabajo.
    Yo en mis trabajos, siempre (o casi siempre) le digo al CAM que el cero del trabajo para el eje Z estará en la parta inferior de la pieza, en el suelo, asi al hacer el cero con la sonda, ese cero será el cero del trabajo pero para esa herramienta en concreto.
    Cuando en un trabajo usas mas de una herramienta, pues nada mas cambiar de herramienta has de hacer el cero de nuevo, para que el cero siempre esté en el punto en donde el extremo de esa herramienta toque el punto en donde has definido el cero en tu CAM (en mi caso… siempre en el suelo, osea encima de la madera de sacrificio que tengo puesta en mi máquina).
    Al principio usaba la parte superior del tocho a fresar como cero del trabajo, pero pronto me di cuenta que es mejor hacerlo en el sulo, dado que la parte superior del tocho, lo mas probable es que lo freses y por tanto te quedas sin un lugar donde aposentar la sonda.
    No sé si me he explicado bien, si te quedan mas dudas pegame un grito!

  3. Ahora que releo tu pregunta… a ver, el mach3 no necesita ni una ni otra altura…al Mach3 le da lo mismo… es el CAM, en donde tu defines cual sera tu cero.
    Ese punto, el que tu definas en tu CAM es donde tienes que hacer el cero con la herramienta que vayas a utilizar.

    El objetivo que tienes que lograr es que si tecleas X0 en el mach3, la punta de la fresa se ponga en la altura en la cual tu has definido el cero del trabajo en tu programa de CAM.

  4. Perdon, quise decir, si tecleas Z0, no X0…

  5. juan carlos garcia hernandez

    hola nakitxu, haces un trabajo increible exponiendo tus actualizaciones.
    me gustaria que me respondieras a una pregunta, mis finales de carrera son inductivos como los tuyos, yo tengo un pequeño bloque de hierro en los finales, osea cuando detecta el hierro se enciende la luz y se para la maquina en todo los ejes, hasta aqui todo bien, el problema es que siempre que termina de ir al home de cada eje se enciende la emergencia y tengo que pulsarla para levar el sigiente home, asi todos.
    ¿tienes alguna idea de que puede ser?
    un saludo y gracias de antemano

    • Sí, el problema es que el Match 3 te deja definir sensores para inicio de carrera y también sensores para seguridad.
      En teoría, tendríamos que tener dos sensores para cada cosa, unos para hacer el cero o inicio de cada eje y otros, situados más atrás del cero para seguridad.

      El problema que estás teniendo es que tienes que definir tus sensores de inicio de carrera en las entradas destinadas a home de los ejes, no a las entradas destinadas a los sensores de seguridad, ya que éstos bloquean por hardware los drivers de los motores (además de activarte la seguridad).

      Yo los sensores de home de cada eje los tengo puestos como eso, como sensores de home, asi que no actuan de fin de carrera para que el spindle no se salga del recorrido, mientras que los restantes si que los tengo puestos como sensores de seguridad de fin de carrera, de tal manera que si el spindle llega a esas posiciones, la máquina se para al instante y hay que reposicionar el eje moviendolo a mano y luego resetear la emergencia.
      La verdad, es que nunca me he pasado de los límites de los ejes más que cuando alguna vez moviendo a mano los ejes me he pasado de recorrido… así que lo que hice fué conectar los límites de ejes por software para evitar esto.

  6. amigo lo felicito buena esplicacion pero quiciera saber en que parte del script coloco la altura del sensor e intentado en barios lados y nada me hace una altura como de 3 o 4mm, otra pregunta usted lleva la herramienta manual mente o tiene configurado por cordenadas gracias

    • La altura de la sonda, en mi script se lee en la linea:


      AlturaDeSonda = GetUserDRO(1151) 'Obtiene la altura de sonda

      que lo que hace es leerla de un campo de entrada numérico que tengo en una de mis pantallas del Mach3.
      Si no controlas las pantallas del Mach3 y cómo definirlas, simplemente puedes escribir el valor que quieras en esa línea del script.
      Es decir, el GetUserDRO(1151) lo que hace es leer el valor que yo escribo en una de las pantallas de mi Mach3… quitalo y pon ahi el número de la altura de tu sonda.

      • amigo como me gustaria que hicieras un video de como configuro el movimiento del script y cordenadas ya tengo instalado los finales de carrera

      • amigo puedes hacer un video de como configurar el movimiento home en el script

  7. Fantástico trabajo. Tengo que hacerme uno como el tuyo. 😉
    El movimiento de maquina hasta posicionarse en el centro de sonda, como lo tienes puesto en código?

    Saludos

    • Pues tengo dos macros asociadas a mi teclado DRO, con una defino donde esta la sonda, es decir, la primera vez que coloco la sonda en la mesa muevo la fresa a mano, la pongo encima y pulso un boton para memorizar la posicion y una vez hecho esto (una sola vez) ya puedo usar otro de los botones que lo que hace es mover la fresa hasta ese punto (de manera segura: primero sube el eje Z para librar cosas que haya en la mesa y luego mueve los ejes X e Y)

  8. amigo puede hacer un video de como hacer los macros y asociarlos y memorizar la posicion le estaria agradeciendo

  9. que mas amigo de nuevo a molestarlo, me gustaría que hicieras un vídeo de como hizo los macros necesarios para esta sonda cero estaría muy agradecido, e intentado en hacer los macros pero no e podido

    • Ya lo siento, tras un incidente no tengo la maquina operativa… ni siquiera tengo montado el PC que la controla, asi que no puedo ni buscar el código del script.

      Pero recuerdo que yo usaba una pantalla que descargué por internet, que ya tenía dos botones, uno para memorizar una posición y otro para ir a esa posición memorizada. Yo los cambié un poco, para que primero subiera el spindle y luego moviese los ejes X e Y (para que no chocase con nada).

      En cuanto instale la máquina de nuevo haré algo sobre como se definen las pantallas del Mach3, las macros, etc, pero por ahora no puedo ayudarte, lo siento.

  10. amigo muchas gracias

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>