BMP280 BME280

¡Hola!

Hoy quería contaros un poco sobre este sensor. Se trata de un circuito integrado que vamos a encontrar en modulitos, como se hace todo ahora, para tener el acceso fácil. Vamos a dejar primero una cosa clara para que no os equivoquéis como yo:

- BMP280: sensor de temperatura y presión
- BME280: sensor de temperatura, humedad y presión

Los más baratos los encontraréis a 3.3V, y la diferencia con los más caros es, no nos engañemos, que estos últimos llevan un pequeño regulador de tensión y puedes conectarlo a 5V. Y luego están los muy caros que llevan adaptadores de nivel de tensión para que el módulo no sufra, lo cual es lo más indicado.

Aunque sea de 3.3V, se puede conectar con un puerto digital con un máximo de 5V, mientras alimentas la patita Vcc con 3.3V. Pero no es lo más recomendable. Se puede usar un Arduino Pro Mini o Due, o algún otro modelo que funcione a 3.3V.

Aquí uno caro con reguladores de Adafruit

¿Qué puedes hacer con estos sensores?
Lo que he hecho yo ha sido poner un módulo BMP280 conectado a la Raspberry Pi 3. Cada cierto tiempo, 5 minutos, hago que se lean los valores del sensor, se guarden los valores en un archivo de datos (dos archivos de datos distintos, de hecho, uno del día y otro de las últimas 24 horas) y mediante un extenso código creo una gráfica, que luego puedo visualizar en el navegador mediante un poco de código php y html. Aquí un resultado:

A ver, la temperatura está demasiado elevada, esto es porque está en un lugar bastante cerrado junto a la raspberry que suelta algo de calor (el procesador se pasa el día sobre los 50ºC). Hay picos de temperatura cuando encendemos el ventilador, lo cual es muy curioso. La presión tampoco es correcta y ahí ya no sé qué decir, pero la evolución, comparada con un sensor calibrado no muy lejos de aquí, es la misma.

Este es el comienzo de un proyecto mayor que tengo entre manos y aunque el resultado no parezca muy correcto, ya he conseguido tener algunas pinceladas del software y de paso ver cómo se comporta la temperatura de la habitación ante determinados eventos.

Otras cosas que se pueden hacer: antes de la raspberry probé el módulo con Arduino y daba valores bastante realistas tanto de temperatura como de presión. Conociendo la presión atmosférica a nivel del mar y la que da el sensor, puedes aproximar la altitud a la que te encuentras. Esto viene en el código de ejemplo de Arduino IDE con la librería Adafruit_BMP280.

Y si te compras el BME280, puedes medir la humedad y ya tienes un sensor ambiental completo.

Estos módulos se comunican mediante I2C, lo cual requiere dos cables de comunicación. Por ejemplo en el Arduino Uno R3 se conecta:

  • Pin SDI del módulo al pin A4 (analógico 4) del Arduino
  • Pin SCK del módulo al pin A5 (analógico 5) del Arduino

Debido a que el módulo ya contiene unas resistencias de pull-up, no es necesario preocuparse de nada más, sólo requiere la alimentación (recordad, Vcc a 3.3V) y GND.

Para el resto de placas y microcontroladores (Raspberry, STM32, ...) hay librerías, así que su uso sigue siendo igual de sencillo.

He generalizado mucho para el BMP280, porque el BME no lo he probado, pero las librerías se encuentran fácilmente poniendo en Google por ejemplo: Arduino bme280 library.

Mucho ánimo y espero que se os ocurran cosas geniales con este módulo.

Sensores de temperatura

En la nueva asignatura de sensores, que he fundido con instrumentación, porque están basadas en lo mismo, vemos nuevos sensores y sus características.

En éste apartado veremos los sensores de temperatura existentes, pero no simplemente el LM35...

Elementos bimetálicos

Es un trasductor que transforma cambios de temperatura en deformaciones mecánicas debido al coeficiente de dilatación de los materiales de los que se compone. Normalmente está formado por dos placas de metales distintos unidos, en distintas configuraciones.

Las deformaciones que la temperatura produce en uno de ellos se aprovechan para hacer indicadores de temperatura como éste:

También se usan para interruptores térmicos, termostatos y cebadores, elementos que necesitan partes mecánicas. Es muy importante su aplicación en campos donde no se pueda usar la electricidad o componentes derivados del mercurio, por ejemplo medida en gases inflamables, productos químicos o alimentación.

A pesar de que son bastante económicos y robustos, presentan una respuesta bastante lenta y no muy exacta, y la medida de temperatura no es puntual, sino que se distribuye por toda la superficie bimetálica.

Resistencias termométricas

Como ya se vio en el apartado de puentes de instrumentación, estas resistencias hechas de distintos materiales, generalmente  platino (RTP), por ser  el más lineal, varía su resistencia según la temperatura y el coeficiente del material.

R(T) = Ro(1+aT)

Al ser un elemento tan lineal, una RTP se puede cambiar por otra sin recalibrar el circuito. No todas las RTP tienen los mismos coeficientes, a partir de cierto rango de temperaturas pueden variar. Por lo general, todas tienen una constante
a = 0.00385 ºC^-1

Su rango de temperaturas va desde los -200 a los 850 ºC. A la hora de medir se tiene que tener en cuenta que el paso de corriente por su misma resistencia disipa potencia y aumenta la temperatura del sensor.

Termopares

Éste tipo de sensor aprovecha el efecto Seebeck: en un circuito con dos metales homogéneos distintos unidos en sus extremos, y éstos  a distinta temperatura, aparece una corriente eléctrica en función de la diferencia de la temperatura.

Sin embargo, no aparece el mismo potencial para pares de temperatura distintos, es decir, no es lo mismo medir con la punta 1 a 100ºC y la punta 2 a 0ºC que con la punta 1 a 200ºC y la punta 2 a 100ºC, aunque la diferencia sea de 100ºC igual. Es por ésto que se debe enfriar, o compensar, la "punta 2" o unión fría, a 0ºC.

Aun así, veremos que en la realidad ésta llamada unión fría no existe como tal, porque la unión de un tercer metal cuyas uniones están a la misma temperatura no afecta a la medida, entonces añadimos el cobre del circuito que mide la diferencia de tensión y queda así:

La medida de un termopar no es lineal, sino que tiene muchas curvas, podría llegar a necesitar hasta  9 coeficientes dependiendo del tipo y el rango de temperaturas. A un rango pequeño de temperaturas podría linealizarse, pero como todo ésto es muy complejo se han creado unas tablas que dan la tensión a distintas temperaturas teniendo la unión fría a 0ºC.

Entonces se puede compensar la unión fría mediante un circuito que dé la tensión necesaria para la compensación, o directamente conociendo la temperatura de la unión fría se dirige a las tablas y se suma la tensión de la temperatura de la unión fría a la tensión que está dando el termopar, obteniendo otra tensión que ahora sí, te diriges a su posición en la tabla y obtienes la temperatura real de la unión caliente.

Termistores

Existen dos tipos de termistores

  • NTC: el coeficiente es negativo
  • PTC: el coeficiente es positivo

Se tratan básicamente de semiconductores hechos de óxidos metálicos dopados, como se puede observar, no son lineales y además no tienen mucha repetibilidad ni exactitud. Comparado con una RTP:

Su fórmula es entonces exponencial: \displaystyle R = A \cdot e^{B/T}

También \displaystyle R = R_{0} \cdot e^{B(\frac{1}{T}-\frac{1}{T_{0}})}

Los parámetros A y B se calibran en 3 puntos distintos, obteniendo una tabla según el modelo y fabricante.

Para hacerlos más lineales, se puede poner una resistencia en paralelo, aunque pierda sensibilidad. También se venden pares de termistores integrados en uno solo que mediante un simple circuito se hace lineal. Pero no es lo más común.

Sus aplicaciones suelen estar en la protección de circuitos contra sobrecalentamientos, por ejemplo en muchas fuentes de alimentación se pueden encontrar termistores a la entrada para limitar la corriente.

Sensores integrados

Se basan en la sensibilidad de la unión semiconductora, tienen un coste bajo, una sensibilidad muy alta, aunque un reducido rango de temperaturas (limitado por las propiedades térmicas del encapsulado, principalmente) Como ejemplos tenemos:

  • Lm335: salida proporcional en grados Kelvin 10 mV/K
  • Lm35: salida proporcional en grados celsius 10 mV/ºC
  • AD590: salida por corriente de 1 uA/K, a dos terminales
  • MAX6625: es un sensor con conversión ADC y comunicación serie que además se puede programar

Automática 0: introducción

Automática es la parte de la ingeniería de los procesos que se basa en controlar la respuesta de éstos teniendo en cuenta sus características y el estado en el que se encuentra.

Por ejemplo: cuando te metes en la ducha y abres el agua caliente (entrada de referencia), ésta se calienta (salida, respuesta). Si se calienta demasiado (sobreoscilación por subamortiguamiento), regulas la posición del grifo hasta que está a tu gusto (alcanza la referencia). Tú conoces las características de tu calentador, así que sabes controlarlo bien.

¿Por qué es tan importante el verbo "regular"? Porque de lo que se trata ésto es de diseñar un regulador automático que haga la misma función que alguien a mano. Más adelante.

Ahora hablemos de funciones de transferencia. La función de transferencia de un sistema es una expresión matemática que relaciona la entrada con la salida. Es decir, dada dicha función, si ponemos una entrada (por ejemplo una función escalón, abrimos a tope el grifo y lo dejamos ahí), obtendremos la expresión matemática de la salida. En la vida real las cosas trabajan en el dominio del tiempo: cuando se consigue la expresión de la salida, queda una variable t que da los puntos en cada instante del tiempo. Pero para ello necesitábamos ecuaciones diferenciales de tamaños y complejidades mortales. Para evitarlo, usamos la transformada de Laplace, que nos lleva al dominio de s.

Ésto de la transformada es algo que no me ocupa en éste blog, digamos simplemente que es una forma de resolver ecuaciones diferenciales complejas en unos pocos pasos. Para que veáis cómo es ésto, tenemos una tabla de expresiones que se usan normalmente:

laplace

Volviendo al tema de las funciones de transferencia. Resulta que en un mismo sistema hay varias fdt, por ejemplo: el regulador (tu en la ducha), la función posición del grifo - paso del agua, la función tiempo de calentador activo - temperatura, la función del sensor de temperatura que es tu piel...

Dichas fdt las ponemos en varios bloques, lo que da lugar a un sistema que tiene ésta forma:

fdt

Para interpretarlo: tu cerebro pone una referencia, la temperatura que te apetece. Ésta referencia es interpretada junto a la temperatura que notas que hay (sensor), lo cuál envía la diferencia (error) al control, que es también tu cerebro, tu mano y el grifo. Actúas sobre el grifo y la planta cambia su estado, pasa más agua fría, o más caliente, el calentador va más fuerte o menos, dando al final una temperatura de salida. Ésto hará que varíe la lectura del sensor y vuelta a empezar.

Pongamos etiquetas a cada bloque:

fdt2

La función de transferencia (en bucle cerrado) entre la entrada y salida, conociendo las de cada bloque es:

fdt3

Para acordarse: parte de arriba dividido por uno más todo.

Y la función de transferencia en bucle abierto:

fdt4

¿Qué diferencia hay entre bucle abierto y bucle cerrado? En el bucle abierto, la realimentación (línea que pasa por el sensor) no está conectada, por lo tanto, el regulador no sabe qué diferencia hay entre lo que quiere y lo que ha salido, y es 99.999% probable que el sistema se inestabilice. Sería algo así como si no tuviéramos sensación de temperatura en la piel. No sabemos si el agua está fría o caliente, y podríamos acabar helados o quemados.