Un barometro es un instrmento capaz de medir la presión atmosférica.
Normalmente, los sensores que podemos encontrar miden esta presión basandose en la deformación de una pequña caja metálica que puede verse en su superfie. Dentro de esta caja se ha hecho el vacio, por lo que no hay una presión interna que contrarreste la presión del aire sobre ella, lo cual la hace más sensible a las variaciones.
Para este tutorial vamos a utilizar un sensor barometrico BMP085, ya que existe una librería (que podemos descargar aquí) que nos dará un acceso rápido y sencillo a las lecturas del sensor.
Este sensor no solo nos permite conocer la presión atmosferica del sitio donde nos encontramos (útil por ejemplo para precedir la meteorología) sino que además nos permite conocer la altitud a la que nos encontramos (un uso muy interesante para proyectos de Drones) e ,incluso, cuenta con un sensor de temperatura bastante fiable.
Esta es la conexión del sensor al arduino:
Pin del barometro | Pin de Arduino |
---|---|
SDA | A4 |
SCL | A5 |
Vcc | 3.3V |
GND | GND |
Es MUY IMPORTANTE utilizar estos pines, ya que la comunicación se realiza por i2C y estos pines son los que cuentan con este tipo de conexión en la mayor parte de los Arduinos (todos los basados en los chips 168 o 328).
Otro punto fundamental es la alimentación. Algunos sensores BMP085 vienen integrados en un módulo que cuenta con un reguldor de tensión, lo que nos permite conectarlo directamente a 5V, PERO NO EN TODOS LOS CASOS ES ASí. El sensor funciona a 3.3V, por lo que conectarlo a 5V sin protección lo destruira de forma definitiva. Asegurate bien de conocer las características de tu módulo antes de conectarlo.
Una vez lo tenemos conectado, es el momento de empezar a pedirle lecturas. Como ya dijimos, existe una librería para Arduino que simplifica mucho esta tarea. Veamos sus funciones:
Devuelve una lectura de la temperatura, en grados centigrados.
Devuelve la lectura de la presion atmosférica medida en Pascales
Devuelve la altitud a la que se encuentra. En realidad lo que hace es asumir que a nivel del mar la presión es de 1013 milibares, con ese dato y la presión actual estima la altitud a la que se encuentra.
Si conocemos la presión real que existe a nivel del mar podemos tener una lectura más exacta pasando este dato (en pascales) como parametro.
Ejemplo:
/*Utilizandola así hace una estimación basada en que la presioón a nivel del mar es de 1013 milibares. */ int altitud = bmp.readAltitude(); /*Supongamos que sabemos que la presión atmosferica a nivel del mar en ese momento es de 1015 milibares. Pasando este dato a pascales no da un total de 101500 Pa.*/ int altitud = bmp.readAltitude(101500);// de esta forma, la medicion de la altitud será más precisa.
Y aquí teneis un ejemplo completo de su funcionamiento:.
#include <Wire.h> #include <Adafruit_BMP085.h> Adafruit_BMP085 bmp; void setup() { Serial.begin(9600); bmp.begin(); } void loop() { Serial.print("Temperatura = "); Serial.print(bmp.readTemperature()); Serial.println(" *C"); Serial.print("Presion = "); Serial.print(bmp.readPressure()); Serial.println(" Pa"); Serial.print("Altud = "); Serial.print(bmp.readAltitude()); Serial.println(" m"); Serial.println(); delay(500); }