Muchas veces tenemos que ingresar la señal analógica de un sensor de cualquier tipo en un microcontrolador para que esta sea tratada o mostrada en alguna pantalla.
Lo que sucede con los sensores es que no siempre tienen respuesta lineal, o bien nos entregan valores que nos sean útiles para mostrar en una pantalla.
Suponemos un sensor de temperatura que entrega un nivel de tensión no lineal en función a la medición de la temperatura.
Lo que sucede con los sensores es que no siempre tienen respuesta lineal, o bien nos entregan valores que nos sean útiles para mostrar en una pantalla.
Suponemos un sensor de temperatura que entrega un nivel de tensión no lineal en función a la medición de la temperatura.
Tomaremos
10 muestras a distintas temperaturas y crearemos una tabla de valores de x e y,
donde y serán los valores de temperatura y x serán los valores de tensión
medidos en función de la temperatura.
Si
quisiéramos crear algún algoritmo informático por ejemplo para leer el sensor y
mostrar los datos de temperatura en pantalla, por tratarse de un sensor no
lineal, deberíamos aplicar algún acondicionamiento estadístico para que en la
pantalla sean lineales respecto a la temperatura.
Para
esto podemos aplicar una regresión estadística que alimentaremos desde los
valores de la tabla de valores que detallaba anteriormente.
Existen
muchos tipos de regresiones (Lineal, Logarítmica, Exponencial, Cuadrática,
Polinomica, etc…), cada tipo de regresión será elegida en función al gráfico que salga de la tabla. Es decir, si la tabla de respuesta del sensor nos indica
una curva similar a una parábola, claramente debemos aplicar una regresión
cuadrática, lo mismo si la curva de respuesta es logarítmica, exponencial, si
posee muchos picos y valles tal vez nos convenga una polinomica o una suma de
funciones, claramente se puede acomplejar tanto como uno quiera, como el
procesador nos permita manejar operaciones matemáticas.
El
Office, en el programa Excel, nos permite a partir de una tabla, generar el gráfico de la curva y también aplicarle la regresión que queramos dejando en
evidencia la ecuación de la misma.
Por
razones obvias solo mostrare los cálculos y ecuaciones de una regresión lineal,
ya que el resto son más complejas y no tendría sentido en el post ya que se
pueden calcular con el Excel.
Ahora
vamos a trazar la curva con estos valores:
Como se
puede ver en el gráfico la curva es casi lineal, si bien no es una recta
podemos realizar una regresión lineal y nos dará una ecuación de dispersión que
nos servirá para incorporar en el proceso informático.
Como
sabemos la ecuación de una recta es: y=mx+b, ahora para darle los valores correctos a m y a b, debemos aplicar las formulas de regresión lineal.
Donde:
Primero
tenemos que calcular los promedios, o las medias.
Ahora ya
tenemos los pre cálculos realizados, tenemos que hallar b.
Lo haremos por
partes, primero el numerador y luego el denominador.
Ahora realizamos
el cálculo de m.
Ahora debemos
hallar b.
Quedando así la
ecuación de la recta.
Si tomamos el gráfico donde mostramos la curva que representa la tabla de valores y
superponemos la recta que hallamos recién, nos quedara el siguiente gráfico.
Para
nuestra comprobación, aplicaremos la ecuación lineal a la tabla de valores del
sensor.
Comprobando
los valores resultantes de la ecuación lineal, podemos ver que en función de la
temperatura real de medición y los valores de tensión entregados por el sensor,
tenemos una lectura con un error pero que aproxima a los valores reales de
temperatura gracias a la dispersión lineal que se puede apreciar en los gráficos.
En
nuestro programa en C, entonces leeremos el ADC.
ADC configurado a 8bit (0
a 255), +Vref: 5V, -Verf: 0V.
valSensorInt =
read_adc(); Leemos ADC y alojamos en variable int8.
valSensor = 5.0 *
valSensorInt / 256; Convertimos a float.
valLCD = 18.70422 *
valSensor – 10.78811; Aplicamos regresion lineal.
No hay comentarios.:
Publicar un comentario