Sistema - Biela / Manivela

Fecha de publicación
Cateogría del artículo Motion Control
Visualizaciones del artículo Leído  6086  veces

Pere Garriga nos explica  todo lo que hay que hacer para controlar el servomotor motor de un sistema de biela / manivela desde el punto de vista del movimiento lineal al final de la biela

Sistema - Biela / Manivela

El propósito de este artículo es que los proyectistas mecánicos sepan lo que comporta el sistema mecánico elegido a la hora de controlarlo con un servomotor.

Antaño, una manera bastante eficaz de realizar un movimiento de la posición A, a la B con un motor eléctrico, era emplear un sistema de biela / manivela, puesto que, simplemente parando el motor con un final de carrera, en la posición donde muchos grados de giro suponen pocos mm de desplazamiento, ya era suficientemente preciso.

Llegó un momento en que era imprescindible cambiar los valores de A y B de forma inmediata y automática, por lo que se necesitaba un servomotor controlado en lazo cerrado de posición. En muchos casos, el proyectista se limitaba a reemplazar el motor de autoinducción por un servo motor, sin saber el trabajo que le iba a generar al programador.

En este artículo se explica todo lo que hay que hacer para controlar el servomotor motor de un sistema de biela / manivela desde el punto de vista del movimiento lineal al final de la biela, a este punto le vamos a llamar TCP (Tool Center Point)

Croquis de un sistema Biela / Manivela.

El siguiente croquis muestra el sistema en la posición máxima del movimiento, que corresponde con la suma de las longitudes de la biela y la manivela y a los 90° de posición angular de j1. En el centro, una posición intermedia, en función del valor de Alfa y a la derecha, la posición mínima posible, que corresponde a la resta de la longitud de la manivela y la biela y a -90° de posición angular de j1.



Quien más quien menos conoce este mecanismo, no hay mucho más que explicar acerca de su funcionamiento, que en este artículo veremos en detalle.

Lo que yo diría en primer lugar respecto a la biela / manivela, es que esta cinemática no se debería emplear en las máquinas 4.0. para realizar movimientos lineales, sea vertical u horizontal (eje deslizante). La razón es, por la complicación que supone a nivel de control y dimensionado del servomotor.

Además, según sean las longitudes de la biela y las de la manivela, la curva del movimiento lineal varia y hay casos en los que el punto de trabajo del motor es nefasto. Las siguientes curvas muestran cómo afecta una variación en la longitud de la manivela, en este ejemplo la mejor elección sería la de una longitud de manivela de 180 mm porque es la más “lineal”.



En el 99% de los casos una mejor solución sería realizar el movimiento lineal mediante un husillo o cualquier otro actuador en el que el que un giro uniforme del motor produzca un movimiento lineal uniforme.

Ya existen en el mercado gran cantidad opciones, de múltiples fabricantes y con diversas formas constructivas, incluyendo versiones en inoxidable.

Con cualquiera de estos actuadores el movimiento es directo en las unidades de usuario configuradas, sean mm, pulgadas, µm, etc.

También se puede optar por un diseño propio, que no tiene por qué ser con husillo, se puede emplear polea y correa dentada, piñón cremallera, un motor lineal tubular, etc. Pero lo importante es que el movimiento sea directamente lineal.

Calculo de la transformada.

Para poder “linealizar” el movimiento, será necesario conocer las ecuaciones para transformar la posición angular de j1 a la posición lineal en unidades de usuario del TCP (transformada directa) y también la transformada inversa, para calcular a qué posición hay que mover j1 para que la posición del TCP sea la requerida. Es el mismo proceso que se realiza en cualquier otra cinemática de cualquier robot, pero en este caso para un solo eje.

Transformada directa.

Vamos a suponer una longitud de biela de 400 mm y una longitud de manivela de 180 mm. Resulta que, al dar tensión la lectura de la posición de j1 = 26.42°, necesitamos conocer la posición en el TCP; para ello calculamos la transformada directa, empleando la ecuación para tal fin:



Y en este caso obtendremos un valor de Y de 446,2 mm. Esta transformada solo se emplea durante la inicialización y con el valor obtenido se hace un preset de la posición de un eje virtual al que llamaremos Y. El eje virtual Y es con el que se trabaja, como eje lineal y el programa se encargará de convertir su movimiento al giro necesario para j1, de forma que el movimiento del TCP será el mismo que el del eje Y.

Transformada Inversa.

Necesitamos posicionar el TCP, a una altura, Y de 250 mm, hay que conocer la posición angular correspondiente para mover j1 a dicho valor, calculamos la transformada Inversa, empleando la ecuación para tal fin:

Y en este caso obtendremos un valor de j1 de -46,33°

Formas de implementación.

Siempre que se trate con transformadas, los motores de las juntas deberían disponer de encoders absolutos multivuelta. Por lo que damos por supuesto que el motor de J1 dispone de dicho tipo de feedback.

Primera opción:

Si de lo que se trata es de posicionar el TCP a una altura conocida y no importa la forma de la velocidad, sino solamente que la posición sea la correcta.

El proceso sería el descrito en este pseudocódigo:

// ---------------------------------------------------------------------------------------
// Asignamos valores según sea el hardware ------------------------------------
    Lb = 400; // Longitud de la biela
    Lm = 180; // Longitud de la manivela

// Calculo de la transformada inversa de la posición del TCP deseada
    Y = 242; // Posición deseada del TCP
    Alfa = 90-Arccos((Y²+Lm²-Lb²)/(2*Y*Lm)); // Posición transformada a J1
    MoveAbsolute (Alfa); // Posiciona J1 al valor Alfa
// ----------------------------------------------------------------------------

La posición deseada de 242 mm se alcanza con total precisión, pero durante el posicionado, el giro de j1 será a velocidad constante, pero no la del TCP.

Segunda opción:

Si de lo que se trata es de que el TCP se mueva como si fuese un eje lineal, con velocidad uniforme, entonces hay que realizar los movimientos, directamente sobre el eje virtual Y, calcular continuamente en una tarea rápida la transformada inversa para enviar el resultado de la posición de J1, como valor de referencia de posición, al servomotor correspondiente.

Hay varias formas de conseguir el resultado, que también están en función de lo que permita el control empleado. La mayoría de controladores PAC permiten tomar el control del valor de referencia de posición que se envía a los servodrives, en este caso se haría lo descrito en el siguiente pseudocódigo:

// ----------------------------------------------------------------------------------------------
// Tarea cíclica rápida, de 1 a 4 mseg., para el cálculo de la transformada ----------
// inversa y envió de posición de referencia ----------------------------------------------
    Alfa = 90-Arccos((Y²+Lm²-Lb²)/(2*Y*Lm)); // Posición de Y transformada a J1
    PosRefJ1 = Alfa; // Posiciona J1 al valor Alfa
// ------------------------------------------------------------------------------------------------

Esta tarea se ejecuta cíclicamente y lo que hace es convertir la posición del eje virtual Y a la posición transformada para el eje real J1, que es el que mueve el TCP. Así cualquier movimiento de Y se refleja en el TCP.

Si el PAC empleado no permite tomar el control de la posición de referencia para los servodrives, se puede emplear el Work arround descrito en el siguiente pseudocódigo:

// ------------------------------------------------------------------------------------------
// Tarea cíclica rápida, de 1 a 4 mseg., para el cálculo de la transformada ---
// inversa y posicionado del eje j1 ---------------------------------------------------
    Alfa = 90-Arccos((Y²+Lm²-Lb²)/(2*Y*Lm)); // Posición transformada a J1
    Si la posición de j1 ha cambiado, entonces
        MoveAbsolute J1 (Alfa);
    Fin de bloque
// ----------------------------------------------------------------------------

Mediante un posicionado absoluto que ejecutamos continuamente, siempre y cuando el valor de la posición de destino haya cambiado, conseguimos un resultado muy similar al de la opción anterior.
En ambos casos el eje Y virtual lo mueve otra parte del programa, mediante movimientos en JOG, posicionados, etc.

Tercera opción:

En este caso el TCP se moverá como en la opción anterior, a velocidad constante, pero emplearemos un perfil CAM para hacer la transformada inversa del movimiento del eje virtual Y, el que ahora será el Master y moverá al eje j1, que ahora será el Slave. Esta técnica se puede emplear en cualquier PAC. En el gráfico se muestra un perfil diseñado con 46 puntos y su forma. 

Con esta técnica se podría decir que la transformada inversa de cada posición de Y (Master), ya está pre calculada y plasmada en el perfil, dicho de otra forma, para cada posición del eje maestro Y, el perfil nos da directamente la posición correspondiente de j1 (Slave).
En la explicación de la transformada inversa hemos calculado la posición de j1 para un valor de Y de 250 mm. Si miramos en el perfil (punto verde) para 250 mm del Master, veremos que el valor para el Slave es de -46,33°, lógicamente obtenemos mismo valor.

Si recordamos el funcionamiento de un perfil CAM:

Sea cual sea el movimiento del Master y se mueva como se mueva (en Jog, posicionados, etc.), el PAC está continuamente leyendo su posición y buscando en el perfil CAM el valor que le corresponde al Slave, toma dicho valor y lo envía directamente como referencia de posición para el Slave; Por tanto, el Slave estará en todo momento en la posición que le corresponda según sea la posición del eje Master. Los valores entre punto y del perfil los calcula el PAC empleando el tipo de interpolación programado. Al final el funcionamiento es el mismo que el de la opción 1, pero aprovechándonos de un perfil CAM (disponible en todos los PAC) en lugar de tomar directamente el control de la posición de referencia del eje.

Los pasos que debería realizar el programa serían:

  1) Solo al inicio, referenciar el virtual Y, con la transformada directa de j1
  2) Calcular los valores de Master y Slave de los 46 puntos del Array
  3) Convertir el Array a una estructura CAM
  4) Iniciar el perfil CAM en modo absoluto
  5) Realizar los movimientos necesarios en el eje virtual Y

Lógicamente el eje Y solo se puede mover dentro de un rango de P45 a P0, en este caso con dichas longitudes de biela y manivela será de 220 a 580 mm.

Resumen / Conclusión.

Lo que le resulta fácil al proyectista mecánico, me refiero a mantener un sistema de biela manivela cambiando el motor Ac por un servomotor, no va en pro de las prestaciones de la máquina ni de la sencillez de la aplicación, nunca se debería usar la biela manivela, salvo que hubiese una situación especial que lo justificase.
En el mercado hay infinidad de servo actuadores lineales estándar que se controlan de forma fácil y con los que conseguiremos mejores prestaciones. Aunque también se puede optar por un diseño propio con husillo u otro sistema en el que el movimiento sea directo y lineal.

Agradecimientos.

Quiero agradecer la colaboración de Pere Garriga Sánchez, en la creación de este artículo, en todo lo referente a las matemáticas.

Pere es estudiante de 2º curso de Ingeniería mecánica en la UPC y tiene un grado superior en diseño mecánico y otro de fabricación por el IPESS.

Linkedin Pere Garriga

/blogs-automatizacion/marcas/498-motion-control

Motion Control

Blog dedicado a la introducción en los conceptos de Motion Control (Control de movimiento) en sistemas de automatización




Descargas