Como conseguir el Origen Maquina con LinuxCNC

publicado en: Tutoriales | 0

En esta, voy a tratar de explicar algo que ya he comentado de pasada en este blog, y que a mi personalmente me ha llevado un poco de cabeza. Se trata del concepto de ORIGEN MAQUINA y ORIGEN PIEZA. También voy a hablar de como funcionan, para que sirven y como configurarlos. Espero que resulte didáctico.
En primer lugar, que es el origen pieza?
Cuando dibujamos cualquier geometría en 3D en un programa CAD, evidentemente lo dibujamos sobre unos planos ortogonales, cuya intersección es el origen de la pieza que vayamos a crear. Generalmente, este origen de coordenadas, sera en el que en el programa CAM se marque por defecto como origen pieza. A efectos de código, este origen sera siempre el 0,0,0. De forma que si le decimos por código a la fresadora que se vaya a la cota x40 y 10, se moverá a 4cm en el eje X de ese origen, y 1cm en el eje Y. Todas las coordenadas que se marquen en el código G serán con referencia a este origen pieza. Hasta aquí es fácil.
Pero que es el origen maquina?
Bueno, también es otro origen 0,0,0, pero esta referenciado a nuestra fresadora. Como cualquier fresadora, hay un volumen de trabajo, un espacio tridimensional donde la fresa puede llegar, en una 3 ejes, se trata de un paralelepípedo, que en mi caso mide 1000mm en X, 500mm en Y y 200mm en Z. Este volumen, también debe de tener un origen, que suele estar en una esquina. Y que sentido tiene tener este origen? porque cuando vayamos a cargar una pieza en nuestro programa de la fresadora (mach3 o linuxcnc), nosotros podemos colocar nuestro modelo en cualquier lugar dentro de ese volumen de trabajo. La fresadora siempre va a trabajar con respecto a las coordenadas referentes a su origen maquina, pero siempre tendremos la opción de hacer una «transferencia de orígenes». Voy a poner un ejemplo sencillo.
Pongamos que tengo un programa de mecanizado, como el de la imagen siguiente, cuyo origen pieza esta en la base de la L de «LinuxCNC»
Origen LinuxCNC CNC Casera EMC2
Dentro de mi volumen de trabajo, yo debería poder colocar esta geometría (o código G de mecanizado) donde yo quisiera. Ahora bien, tendría que decirle al LinuxCNC donde lo voy a  colocar, para que el nuevo origen no este en la esquina de mi volumen de trabajo, si no en la base de la L del texto.
El programa, internamente lo que hace es sumar a todas las cotas del código G, la distancia entre el origen de coordenadas maquina y el nuevo origen de coordenadas pieza. De esta forma siempre tendremos la misma referencia (origen maquina) y podremos de forma muy sencilla colocar nuestro tocho de trabajo donde mas nos convenga.
Y como se hace esto en la practica con el LinuxCNC?
En primer lugar, siempre que arrancamos el programa, los orígenes en X, Y y Z vienen sin la posición «home». Como en la imagen anterior, al final de la coordenada en X no esta el símbolo de origen (un circulo con dos cuadrantes en negro) lo que significa que no tiene definido el origen maquina y por lo tanto no va a dejar ejecutar ningún código. Por lo tanto lo primero que tendremos que hacer es definir el origen maquina.
Para ello tendremos que desplazar nuestra fresadora hasta el punto que nosotros queremos que sea el origen maquina. En mi caso, yo tengo una herramienta acabada en punta, con la que me voy desplazando y de forma medianamente precisa coloco en un punto que yo considero es mi origen maquina. En ese punto, me voy a la opción «Machine / Homing» y marco para cada eje la posición actual de la fresa como punto origen maquina. A partir de ese momento, esa sera la esquina de mi volumen de trabajo, y el LinuxCNC entenderá que mas allá de esos limites, la fresadora no se puede mover. Esto también es útil para no pasarnos y llevar el movimiento mas allá de los limites físicos de la maquina.
Bueno, ya hemos definido el origen maquina, por lo que ahora tenemos que definir el origen pieza. Para ello cargamos el programa o código G de lo que queramos. En Nuestro tocho de trabajo, tendremos que definirle donde estará el origen pieza. Por ejemplo, en el caso del programa de dibujar la palabra «LinuxCNC» yo usaría un tocho de 135x21mm, y colocaría el origen pieza en la base de la L. Si cojo el tocho de trabajo y lo amarro en mi bancada, lo que haré a continuación es colocar mi herramienta en punta sobre la esquina del tocho donde yo quiero que se mecanice la L. una vez con la fresa en esa posición. La coordenadas que me marca el LinuxCNC es la distancia que comentaba antes, y es la distancia que sumara a cada coordenada del programa (pero esto lo hace el solo, así que no hay que preocuparse). Es el momento de hacer la transferencia de orígenes.
Me voy a la opción de «regular offset» marcando cada eje, y colocando un 0 en el cuadro. De esta forma veremos que las coordenadas que me marca la pantalla han cambiado todas a 0, con lo cual ahora este en mi origen pieza y en la practica, el origen que voy a usar para mecanizar. Cuando ejecute el programa, lo haré todo en referencia a ese origen.
Se que esto no es fácil de entender, pero probando en diferentes piezas, se acaba comprendiendo y entendiendo la importancia de estos conceptos.
Lo practico de esto es que si en el tocho tengo definido el origen pieza, da igual donde lo coloque dentro de mi volumen de trabajo. Solo con llevar la fresa (o la punta de mi herramienta) a ese punto, y hacer un regular offset, habré cambiado el origen y mecanizara todo a partir de ahí.
Ahora bien, lo interesante y practico de estos conceptos, es tener SIEMPRE el mismo origen maquina, porque tendremos una total repetitividad en cualquier cosa que mecanicemos. Esto es fundamental, por ejemplo, si queremos continuar el mecanizado otro dia, apagamos el ordenador, y cuando lo volvemos a encender, como no coloquemos el origen en el mismo punto exacto, lo mas seguro es que el mecanizado continué desplazado, fastidiando la pieza. No obstante, si conseguimos que el origen maquina sea siempre el mismo, esto nunca nos pasara, y tendremos la confianza de que siempre ira al sitio exacto. Esto resulta no solo util, si no fundamental para el caso de que queramos voltear piezas para mecanizarlas por ambos lados.
¿Y el LinuxCNC como puede hacer esto?
Pues lo puede hacer y de una forma muy sencilla. Tiene una opción de buscar el origen maquina de forma automática y aprovechándose de los finales de carrera. Que creíais? que solo servían para no romper la maquina? pues tienen otra utilidad mucho mas practica.
Lo primero seria configurar los finales de carrera de forma que permitan esta opción. En el asistente de configuración de LinuxCNC, tenemos que configurar los finales de carrera con esta opción:
Origen LinuxCNC CNC Casera EMC2

En cada pin asociado a cada eje opción «Both Limit + Home X» esto significa que cada vez que se alcance el final de carrera de ese eje, interpretara el programa que o ha llegado a un limite físico (cuando esta mecanizado o moviéndose) o que ha llegado a la posición de origen maquina (cuando lo estemos buscando)

Después para cada eje hay que configurar las condiciones de «búsqueda» de ese origen

Origen LinuxCNC CNC Casera EMC2

En el caso de mi eje X, por ejemplo tenemos en el segundo bloque de opciones unos valores para buscar el origen maquina automáticamente.
Estos valores, aun no tengo del todo claro como funcionan, y para cada configuración de maquina y motores varia, así que tampoco podéis basaros 100% en esta configuración, pues esto es lo que me funciona a mi.

  • Table Travel: esto básicamente define el volumen de trabajo, el LinuxCNC sabrá que desde el origen maquina no podrá moverse mas de 1000mm (en mi caso) Ademas, de forma gráfica dibujara un paralelepípedo con las medidas que aquí coloquemos y que nos ayudaran para visualizar gráficamente nuestro volumen de trabajo.
  • Home Search Velocity: la velocidad con que ira a buscar el origen. Es importante no solo el valor si no también el signo. El valor no debería ser el máximo de movimiento que den de si los motores, principalmente por la inercia que arrastran. Ya que el no sabe que va a tocar el final de carrera hasta que lo toca, y pensad que cuando lo toca tendrá que frenar a movimiento 0 en 0mm… lo cual no hace ni de coña, vamos. Así que una velocidad moderada, tirando a lenta sera ideal, ya que le dará tiempo a pararse donde toca y no romper nada. El signo también es importante, pues definirá si el eje X, en este caso, se desplaza a la izquierda o a la derecha (en funcion de donde nos interese tener nuestro origen maquina)
  • Home Switch Location: esta sera la distancia física que habrá entre el origen maquina y el punto donde cada eje toque su final de carrera. Esto es, cuando mi eje X toque el final de carrera, el programa automáticamente colocara el origen maquina en este eje, 10mm antes de ese punto (10mm en mi caso) de esta forma nos aseguramos de que nunca llegaremos a volver a tocar el final de carrera. Ya que recordad que el programa, una vez definido el origen maquina, nunca permitirá sobrepasar los limites del volumen de trabajo.
  • Home location: Cuando haya encontrado el origen tocando el final de carrera, podemos hacer que se desplace la distancia que queramos del origen. Para que sirve esto? para que el hecho de buscar el origen maquina, no signifique que tengamos que dejar la fresadora en una posición incomoda, en una esquina del volumen de trabajo. A mi me va muy bien, por ejemplo, cuando encuentra el origen maquina en Z, que después suba 70mm para tener sitio para montar la fresa que quiera usar. En X e Y también, según me venga cómodo a mi.
  • Home latch direction, no lo tengo claro, pero creo que se refiere a una opción para cuando se configura un torno, por eso no le hago mucho caso.
Vale, tenemos configurado el LinuxCNC para encontrar nuestro origen maquina de forma automática, ahora toca saber como hacerlo. Y esto es lo mas sencillo del mundo.
Encendemos el LinuxCNC, y vamos a la opcion «Machine / homing» y elegimos Restaurar eje X. Según como lo hayamos puesto en el asistente, el eje X empezara a moverse en el sentido y velocidad que le hayamos configurado, hasta tocar el final de carrera. Una vez tocado, en la ventana donde salen las coordenadas, saldrá el icono de origen, y lo habra colocado a una distancia del punto de contacto con el final de carrera que hayamos puesto en «home switch location». Después de tocar el final de carrera, se desplazara en sentido contrario la distancia que hayamos puesto en «home location». Repetimos esto para todos los ejes, y ya tenemos el volumen de trabajo en el sitio real, y el origen maquina definido. Si cada vez que arrancamos el programa, hacemos esta operación (que no tiene que tardar mas de 20 segundos) siempre tendremos nuestros orígenes bien colocados.
Ahora solo tenemos que amarrar el tocho donde queramos, ir con la fresa donde queremos colocar el origen pieza en el tocho (aqui podemos ir con toda la precisión que queramos a definir la Z por ejemplo, para hacer grabados, o lo que sea) y hacemos un regular offset para cada eje, según nos interese.
Como veis, fácil y sencillo, y tremendamente útil. Yo he padecido mucho hasta descubrir estos conceptos y conseguir que mi fresadora fuera a buscar los orígenes automáticamente como yo quería, pero he reducido el tiempo de preparación de la pieza una barbaridad.
Espero que con estas instrucciones no perdáis tanto tiempo como he perdido yo. Insisto en que estos conceptos pueden resultar complicados, o liosos, o simplemente no consigáis dar con la configuración ideal para vuestra maquina. De ser así, siempre podéis consultarme. Intentare ayudaros en la medida de mis posibilidades.

In this post, I will try to explain something that I said on this blog, and I personally has been somewhat complicated. This is the concept of MACHINE ORIGIN and PART ORIGIN . I will also talk about how they work, what they are for and how to configure them. I hope it turns didactic.

First, what is the part origin?
When we draw any 3D geometry in a CAD program, evidently draw on some orthogonal planes whose intersection is the origin of the piece that we create. Generally, the origin of coordinates, which will be in the CAM program is marked by default as part zero. For the purpose of code, this will always be the origin 0,0,0. So if we tell the router by code that is to be the coordinate x = 40 y = 10, will move to 4cm in the X axis of this origin, and 1 cm in the axis Y. All coordinates are marked in the G code will be with reference to the original part. So far it’s easy.

But that is the origin machine?
Well, 0,0,0 is another origin, but this can be referenced to our router. Like any router, there is a workload, a three-dimensional space where the cutter can get in a 3-axis, it is a cuboid in my case measures 1000mm in X, 500mm in Y and 200mm in Z. This volume, must also have an origin, usually in a corner. And what the point of having this origin? because when we go to load a piece in our program the router (mach3, LinuxCNC), we can place our model anywhere within that workload. The router will always work with respect to the coordinates origin related to machine, but always have the option of making a «transfer of origins.» Let me give a simple example.

Imagine you have a machining program, like the picture below, in which the the workpiece zero is at the base of the L «LinuxCNC»
e99a3-ventana_07

Inside my workload, I should be able to place this geometry (or machining G code) where I wanted. Now, would you tell the LinuxCNC where I will place, so that the new origin is not in the corner of my workload, but at the base of the L text.
The program, internally what it does is add to all dimensions of the G code, the distance between the origin of the machine coordinates and workpiece coordinates again. This way we will always have the same reference (source machine) and can very easily place our work material which suits us more.

And how is this done in practice with LinuxCNC?
First, whenever we start the program, the origins in X, Y and Z are not the «home» position. As in the previous image, the end of the X-coordinate is not the source symbol (a circle with two black quadrants) which means that the machine does not have a defined origin and therefore will not let you run any code. So the first thing you have to do is set the machine origin.

To do this we must move our router to the point where we want to be the origin machine. In my case, I have a pointed tool, with which I’m moving and I place precisely at a point that I consider my origin machine. At that point, I go to the «Machine / Homing» option and pointed to the current position of each axis of the machine tool as a point origin. From this moment, that will be the corner of my workload, and LinuxCNC understand that beyond these limits, the router can not be moved. This is also helpful not to go and take the movement beyond the physical limits of the machine.
Well, we have defined the origin machine, so now we have to set the part zero. To do this we load the program or G code what we want. In our work material, we have to define where will be the part zero. For example, for the program to draw the word «LinuxCNC» I would use a 135x21mm work material, and would place the origin at the base part of L. If I take the work material and tie it to my bench, I will place my tool tip on the corner where I want material that to be written L. once the tool in this position the coordinates that marks me is the distance LinuxCNC I said before, and that would provide the distance to each coordinate program (but this is done by the program, so do not worry). It’s time to make the transfer origins.
I go to the option of «regular offset» marking each axis, and placing a 0 in the box. Thus we see that the coordinates that mark the screen I have changed all to 0, which now is in my origin piece and in practice, the source that will be used for machining. When you run the program, I’ll do everything in reference to that source.
I know this is not easy to understand, but tested in different parts, finally understands the importance of these concepts.
The practical part of this is that if the work material have defined the part zero, no matter where you put it inside my workload. Just to bring the cutter (or the tip of my tool) to that point, and do a normal offset, I will change the source and machined everything from there.
Now, the interesting and practical of these concepts, we ALWAYS have the same origin machine, because we will have a complete repeatability anything to work. This is essential, for example, if we want to continue processing other day, turn off the computer, and when I go back to start, as we place the origin at a different point, machining moves, teasing the part. However, if we can get the source machine is always the same, this will never happen to us, and we trust that will always go to the right place. This is essential in case we want to machine parts on both sides.

And how can the LinuxCNC do this?
Well you can do so very easily. It has an option to search the origin machine automatically and taking advantage of the limit switches.

The first would set the limit switches so as to allow this option. In the setup wizard LinuxCNC, we need to set the limit switches with this option:
42885-ventana_02

Each pin associated with each axis option «Both Limit + Home X» this means that whenever the limit that axis is reached, will perform the program has reached a physical limit (when machining or moving) or it has come to the machine home position (when you’re looking for)

Then we have to set the conditions of «search» for each axis of this origin

50fc5-ventana_03

For my X axis, for example we have in the second block of options values ​​to search automatically the machine origin.
These values have not yet entirely clear how they work, and for each machine configuration and various motors, so you can not completely follow this configuration, as this is what works for me.

  • Table Travel: this basically defines the workload, the LinuxCNC know that from the source machine can not move more than 1000mm (in my case) Also, graphically draw a parallelepiped with these measures and to help us to graphically visualize our volume working.
  • Home Search Velocity: the speed with which you go to find the source. It is important to not only the value but also the sign. The value should not be the maximum movement of the engines, mainly by inertia that drag. Since he does not know when he will touch the limit switch until you touch it, and think that when you touch will have to slow down movement 0mm … which does not in any case. So a better slow speed will moderate ideal as it gives you time to stand where it touches and not break anything. The sign is also important because if you define the X axis, in this case, moves to the left or right (depending on where we are interested in having our origin machine)
  • Home Switch Location: this will be the physical distance between the source machine and the point where each axis touches its limit. That is, when I touch the X axis limit, the program automatically placed the origin on this axis machine, before that point 10mm (10mm in my case) in this way we ensure that we will never again touch the end switch. Since the program remember that once defined the origin machine, never allowed to exceed the limits of the workload.
  • Home location: When you have found the origin by touching the Switch, we can make the distance the origin we want to move. Why is it useful? the fact that the machine origin search, does not mean we have to stop the router in an awkward position, in a corner of the workload. My suits me, for example, when the source machine is in Z, then climb to 70mm to have space for mounting the milling cutter you want to use. In X and Y also, as I come to my comfortable.
  • Home latch direction, I am not clear, but I think it refers to an option when you configure a lathe, so I do not pay much attention.
Okay, we have set up our origin to find LinuxCNC machine automatically, now we have to know how. And this is the easiest thing in the world.
We turn on the LinuxCNC, and go to the option «Machine / homing» and choose Restore X axis according as we put in the wizard, the X axis start moving in the direction and speed that you have set up the final play of career. Once touched, in the window where all the coordinates, the icon will go home, and there will be placed at a distance from the contact point with the limit we have placed on «home switch location.» After touching the Switch, it will move in the opposite direction the distance we have placed on «home location». We repeat this for all axes, and we have the volume of work in the real place, and the machine defined origin. If every time you start the program, do this operation (which need not take more than 20 seconds) will always have our well-placed origins.
Now we just have to tie the material work wherever we want. then go with the tool where you want to place the workpiece origin in the material (here we go with all the precision we want to define the Z for example for making prints, or whatever) and do a regular offset for each axis as interested.
As you see, easy and simple, and extremely helpful. I have suffered many things to discover these concepts and get my router to automatically search out the origins as I wanted, but I have reduced the preparation time of the part a lot.
I hope these instructions will not lose as much time as I have lost. Insist that these concepts can be complicated or messy, or not you succeed to find the ideal solution for your machine configuration. If so, you can always email me. I’ll try to help you in any way I can.