AN 1005: Convertir el ángulo de inclinación en grados

Descripción

Esta nota de aplicación explica cómo convertir la salida bruta de un sensor de inclinación electrolítico en grados.

Rango lineal y rango de operación de los sensores de inclinación

El rango de medición de un sensor de inclinación electrolítica puede describirse de dos maneras: rango lineal y rango operativo. El rango operativo es el rango en el que el sensor dará una salida monótona, pero por lo demás no tiene características definidas (es no lineal). El rango lineal es la porción del rango operativo en la que la salida es lineal dentro de un cierto porcentaje. La figura 1 muestra la diferencia entre los dos rangos.

 

 

 

 

 

 

 

 

Figura 1 Rango lineal (izquierda) y rango de operación (derecha).

Aproximación lineal

Para encontrar el ángulo de inclinación dentro del rango lineal, es necesario encontrar una función lineal que coincida con la salida del sensor. Esta será la función de la línea del gráfico de la izquierda en la figura 1. Esta función se indica a continuación:

La salida bruta del sensor en esta fórmula es la salida del sensor. Esto suele ser en recuentos, pero pueden usarse otras unidades dependiendo de cómo se lea la salida del sensor.

Los otros dos valores requerirán tomar muestras del sensor en ciertos ángulos. Estos ángulos pueden ser determinados usando otro sensor, un transportador digital, o cualquier otro método para determinar los ángulos. La salida bruta del sensor a 0° es sólo la salida cuando el sensor está nivelado.

Los recuentos por grado (que es la pendiente de la línea) se calculan mediante la siguiente fórmula:

El rango lineal se obtiene de la hoja de datos del sensor. Las salidas brutas serán la salida del sensor en los bordes del rango lineal. Por ejemplo, para un sensor con un rango lineal de ±25°, las salidas brutas se muestrearán a +25° y -25°. Tenga en cuenta que estas muestras sólo tendrán que tomarse una vez para crear la función; la conversión de la inclinación puede hacerse entonces utilizando los valores muestreados.

Digamos que tenemos un sensor 0717-4319-99 con una salida de 16 bits (0 a 65535) que nos gustaría convertir en grados. Este es un sensor de doble eje con un rango lineal de ±20°. Como es un sensor de doble eje, necesitaremos 2 fórmulas: una para el eje X y otra para el eje Y. Primero, encontraremos la fórmula del eje X. Empezamos a tomar muestras a 0° y ±20° y encontramos las siguientes mediciones.

Inclinación del eje X a -20° = 26055

Inclinación del eje X a 0° = 33234

Inclinación del eje X a ±20° = 40379

Ahora podemos usar estas muestras para calcular los conteos por grado:

Los recuentos por grado y muestra cero pueden entonces conectarse a la fórmula para dar la conversión que se indica a continuación:

Si es necesaria una medición del eje Y, siga estos pasos de nuevo con muestras del eje Y.

Ahora, siempre que tengamos una medida de este sensor que queramos convertir en grados, podemos usar esta nueva fórmula. Por ejemplo, si tenemos una salida X de 29655, podemos usar la fórmula para determinar el ángulo de inclinación:

Recuentos aproximados por grado

Debido a las ligeras variaciones causadas por el proceso de fabricación, la función de conversión debe ser calculada para cada sensor específico. Sin embargo, esto no siempre es factible. En la tabla siguiente se indican los recuentos medios por grado y los valores de 0° que pueden utilizarse en los cálculos. Tenga en cuenta que la utilización de estos valores dará lugar a mediciones menos precisas que la creación de una función para el sensor específico. Todos los valores son para una salida de 16 bits (0-65535). Los sensores que no están en la tabla requerirán que el usuario siga el procedimiento anterior para encontrar una conversión.

Sensor Recuentos por grado Cero grados
0703-1602-99, 0729-1765-99 976 32768
0703-0711-99 17582 32768
0717-4303-99 736 32768
0717-4304-99 268 32768
0717-4305-99 188 32768
0717-4306-99 188 32768
0717-4311-99 268 32768
0717-4313-99 342 32768
0717-4314-99 335 32768
0717-4316-99 756 32768
0717-4317-99 569 32768
0717-4318-99, 0729-1751-99,
0729-1752-99, 0729-1753-99,
0729-1754-99, 0729-1755-99,
0729-1759-99, 0729-1760-99
284 32768
0717-4319-99 363 32768
0717-4321-99 758 32768
0717-4322-99 594 32768
0737-0101-99 2887 32768
0737-1203-99 12765 32768

Interpolación multipunto

El método de interpolación multipunto utiliza muestras tomadas con antelación para derivar la medición en grados. La precisión de este método dependerá del número y la distribución de las muestras; sin embargo, incluso tomando 3 muestras generalmente se obtiene un mejor resultado que con una aproximación lineal.

La distribución de las muestras es uno de los factores más importantes para lograr una conversión precisa. Las conversiones cercanas a las muestras serán más precisas. Debido a esto, las muestras tomadas más cerca de las muestras resultarán en conversiones más precisas. Estas muestras deben tomarse a lo largo de todo el rango del sensor. Dependiendo de la aplicación, pueden ser dispersadas uniformemente a través de todo el rango o enfocadas en una región donde la precisión es necesaria.

Para convertir un valor bruto en grados, identifique dos muestras de referencia. Estas son las dos muestras más cercanas a la medición en cada dirección. Luego, encuentre una aproximación lineal entre las dos muestras y mapee la salida bruta en esta aproximación. El punto de esta línea dará la inclinación del sensor en grados. El gráfico de la figura 2 muestra una visualización de este concepto.

Figura 2 Gráfico que muestra las muestras, las muestras de referencia y la medición.

La fórmula de esta conversión se muestra a continuación.

Digamos que tenemos una medición en bruto de 56412 de un sensor de inclinación con un rango de operación de ±60°. Además, supongamos que ya tomamos muestras a intervalos de 5° para usarlas en la conversión. Comparando 56412 con las muestras, determinamos que nuestros dos puntos de referencia estarán a 50° (54213) y 55° (57878). Podemos entonces usar la fórmula para calcular el ángulo:

Por lo tanto, nuestra medición final es de 53°.

Este método puede utilizarse para convertir las mediciones de cualquier lugar dentro del rango de operación del sensor a grados. También logrará una mayor precisión que la aproximación lineal. Sin embargo, requiere un gran número de muestras precisas para lograr los mejores resultados.

Interpolación de polinomios

La interpolación de polinomios puede utilizarse para lograr mediciones precisas sin necesidad de tomar muchas muestras. Este método utilizará muestras para encontrar una ecuación polinómica que proporcione una conversión precisa en todo el rango operativo del sensor.

Las muestras tomadas se usarán para desarrollar una ecuación polinómica que describirá la salida del sensor. Como mínimo, se necesitarán muestras de N-1 para derivar un polinomio de grado N. Por ejemplo, 7 muestras crearán un polinomio de grado 6. También puedes usar más muestras para crear un polinomio de grado inferior, pero esto generalmente tendrá una menor precisión que crear un polinomio de grado superior con los mismos puntos.

Se puede utilizar cualquier número de muestras, pero recomendamos tomar al menos 3 muestras. Usar 2 muestras funcionaría, pero resultaría en una aproximación lineal. Tenga en cuenta que hay poca mejora en la precisión de los polinomios de grado 7 o superior.

Aunque el polinomio puede ser determinado manualmente, es mucho más fácil calcularlo usando un software. Un método simple es utilizar la línea de mejor ajuste de Microsoft Excel; sin embargo, esto puede no ser lo suficientemente preciso para una conversión utilizable. Wolfram Alpha es una opción más precisa, pero la ecuación aún tendrá que ser resuelta manualmente. La mejor opción es usar una biblioteca de programación. Por ejemplo, se puede utilizar el método Polynomial.fit() de la biblioteca NumPy Python. El siguiente código muestra cómo esto puede generar un polinomio de 6º orden a partir de 7 puntos:

importar numpy.polynomial.polynomial
coeficientes = numpy.polynomial.polynomial.polynomial.fit(
56668, 46553, 36140, 32845, 31207, 21913, 9586], # valores brutos
60, 42, 12, 0, -6, -36, -60], # valores de ángulo correspondientes a los valores brutos
6) # orden del polinomio
impresión(coeficientes)
# Salida:
# [-7.88427627e+01 2.57631617e-03 -7.71958174e-08 -1.75354175e-13
# 2.17551410e-16 -5.89635260e-21 4.45379575e-26]

Tenga en cuenta que cuando se utiliza una función como esta, es importante especificar el orden correctamente. Por ejemplo, 4 muestras generarán un polinomio de 3er orden. Sin embargo, si se da 4 como el orden, la biblioteca hará una suposición aleatoria para crear una ecuación. Esto resultará en conversiones menos precisas.

La matriz devuelta por Polynomial.fit() son los coeficientes del polinomio. Basándose en la salida anterior, la ecuación sería:

Ángulo = (4.45e-26)x6- (5.89e-21)x5+ (2.17e-16)x4- (1.75e-13)x3- (7.72e-8)x2+ (2.57e-3)x1- 78.84

Esta función puede utilizarse para resolver ángulos desconocidos introduciendo el valor en bruto de x. Por ejemplo, digamos que tenemos la función anterior y tenemos una medida en bruto de 41643. Podemos encontrar el ángulo usando los siguientes cálculos:

Ángulo = (4.45e-26)(41643)6 - (5.89e-21)(41643)5 + (2.17e-16)(41643)4 - (1.75e-13)(41643)3 - (7.72e-8)(41643)2 + (2.57e-3)(41643)1 - 78.84

Ángulo = 232.264 - 738.402 + 654.227 - 12.663 - 133.868 + 107.285 - 78.842 = 30.002°.

Si se utiliza la biblioteca NumPy que se muestra arriba, se puede hacer utilizando el método polyval().

print(numpy.polynomial.polynomial.polyval(41643, coefficients.convert(.coef))
# Output: 30.001695321007

Tenga en cuenta que el resultado de este cálculo es muy sensible a cualquier cambio en la entrada. Por ejemplo, si los coeficientes anteriores se redondean a 3 dígitos significativos (tal como están escritos), el resultado de la ecuación es 31°. Por ello, es importante no redondear ningún valor mientras se calcula el ángulo con este método.