En la actualidad, existen muchos sensores que son muy costosos y engorrosos de utilizar, a continuación, te indicamos uno de los componentes de arduino más versátil que existe, estamos hablando del sensor BMP180 para arduino.
Por esta razón, sigue leyendo, que explicamos detalladamente sus características técnicas, su fácil instalación y como configurar para que realice mediciones de presión y temperaturas.
¿Qué es el sensor BMP180 para arduino?
Es una pequeña placa pcb o circuito que integra un sensor de presión barométrico muy preciso.
Está diseñado principalmente para cuantificar la presión atmosférica, y con este valor, se estima cuál es la altura con respecto al nivel del mar.
El sensor BMP180 puede conectarse a un procesador como lo es Arduino.
¿Cuáles son sus características técnicas del BMP180?
Los desarrolladores del sensor BMP180 para arduino integraron diversas características interesantes, enseguida las detallamos a fondo, para comprobar así porque este sensor es uno de los más versátiles que existe en la actualidad.
Rango de medida
El sensor tiene un rango de medida que oscila entre los 300 hPa (Hectopascal) y 1100 hPa, contiene una desviación estándar de 1.0 hPa. Esto lo hace uno de las placas más sensibles y exactas para cuantificar variables ambientales que existen en la actualidad.
Este rango de presión en la cual funciona el sensor BMP180, equivale a leer un rango de altura que va desde los 1000 metros por debajo del nivel del mar hasta los 9000 metros sobre el nivel del mar.
Por eso esta placa es frecuente verlas instaladas en drones que miden las condiciones atmosféricas o en equipos que se sumergen en el mar ya sea con fines de investigación o recreación.
También mide la temperatura
A pesar de la creencia, el sensor si puede leer la temperatura ambiente como lo haría un sensor LM35. El rango operativo de temperatura está entre los -40 °C y los 85 °C. La desviación de la medida es de +/- 2 °C, la cual, para un aparato tan pequeño, tiene un error bastante aceptable.
De esta forma, la lectura de esta medida depende en gran medida de la temperatura atmosférica, esto a su vez afecta a la densidad del aire. Otros factores que pueden afectar son la humedad y la velocidad del viento.
Componentes y diseño
Tiene un regulador de voltaje, en la cual su rango de trabajo está entre 3.3V – 5V DC. También tiene resistencia pull-up y capacitores by-pass.
Además, la presentación es muy pequeña y además es muy plana, esto permite que su consumo de energía sea casi imperceptible. Se estima que las dimensiones del sensor sean de 1mm x 1mm.
Datos de consumo
Se estima que su consumo cuando está en Stand-by es en promedio de 0.1 μA y 650 μA cuando realiza la medición. Con respecto a su tiempo de respuesta, el rango de tiempo está entre 5 ms y 17 ms y va a depender en gran medida del tipo de resolución.
Sus datos se obtienen de manera inmediata y efectiva gracias a su interfaz de operación de I2C (la cual opera a un voltaje de 3,3V).
¿Cuál es el precio de un sensor BMP180 para arduino?
Luego de ver las diferentes funciones que realiza el sensor BMP180 para arduino, debes estar pensando que el precio va a ser un poco excesivo y no estará al alcance de todos.
Pero actualmente, lo podemos adquirir por un precio relativamente bajo, el cual está entre los 12 a 15€ con encapsulado genérico para electrónica general o tipo componente Arduino por unos 2€ ( más barato si lo pides en aliexpress).
Por fortuna, hay muchas empresas que se dedican a la fabricación de estos sensores, pero una de las marcas más populares y con los estándares de calidad más alto para el desarrollo de este tipo de sensores, es la empresa de tecnología BOSCH y puedes comprarlos en el siguiente vínculo que te envían 3 unidades por 6,99€ desde Amazon para Arduino ( recomendado ).
Esquema de montaje del BMP180
En la siguiente imagen observamos que es una conexión sencilla, la conexión GND y VCC del sensor hace la diferencia de voltaje ya que una se encuentra conectada a tierra y la otra está conectada directamente a la fuente de energía.
Para la lectura, se debe conectar el Pin SDA con el SDA (A4) de Arduino, mientras que el Pin SCL del sensor BMP180 con el SCL (A5) del Arduino.
Os dejo otro esquema alimentando el bmp180 externamente.
Descargar la librería
Una vez realizado el montaje de la placa Arduino, para completar con la instalación, debes descargar la librería específica para el sensor BMP180, la cual contendrá los algoritmos para efectuar las lecturas. Si aún no lo tienes descargado, puedes hacerlo ingresando en el siguiente enlace.
https://github.com/sparkfun/BMP180_Breakout_Arduino_Library
Asimismo, es necesario, una vez descargado todo el fichero, que se realice el importe de estos documentos al programa Arduino. Algunos de los comandos que se emplean habitualmente para este sensor son:
- Begin (): Se usa cuando se presenta una falla en la ejecución del comando, marca 1 si se inicia adecuadamente y 0 si presenta un fallo.
- startTempeture(): Con esta función se inicia la medición de la temperatura y también señala los milisegundos que falta para la toma.
- getTemperature(): Comando que nos permite cuantificar la temperatura, es una de las variables más importante del sensor, porque con ella, nos ayuda a cuantificar de manera más precisa la temperatura (como se mencionó anteriormente, la presión atmosférica depende directamente de la temperatura ambiente).
- Nuevamente, si da como resultado 0 es debido a una falla en la lectura, hay que estar pendiente de estos pequeños detalles. Este depende directamente del comando anterior.
- StartPressure (Tamaño de muestra): Un funcionamiento similar al comando “startTempeture()”, pero hay que declarar el tamaño de la muestra que va desde 0 a 3. Si arroja el número 0 en el primer muestreo es porque no ha realizado la medición de la presión.
- getPressure(P,T): Para emplear este comando hay que hacer un llamado a “startPressure()” y emplear la variable temperatura, la cual es necesaria para el cálculo.
Si también lo deseas, se puede realizar la medición de la altitud, usando el comando “altitude()”, te da como resultado la altura expresada en metros. Ahora, si buscas cuantificar la altura sobre el nivel del mar en la cual te encuentras, lo puedes llevar a cabo usando la función “seaLevel()”.
Ejemplo: cómo obtener los valores de presión y temperatura con el sensor BMP180
Para realizar la medición de estos dos parámetros, se debe seguir el siguiente algoritmo:
#include <SFE_BMP180.h>// Importamos la librería.
#include <Wire.h>// Importamos Wire, necesaria para la gestión de su dirección y envío de datos
SFE_BMP180 pressure;
double Presion = 0;
double PresionBase=0;
double Temperatura = 0;
char status;
void setup(){
Serial.begin(9600);
SensorStart();// inicializa el sensor
}
void loop(){
ReadSensor(); // Leemos el sensor
Serial.print("Temperatura: ");Serial.print(Temperatura);Serial.println(" grados C");//imprimimos la temperatura
Serial.print("Presion: ");Serial.print(Presion);Serial.println(" milibares");//imprimimos la presion atmosferica
Serial.println();
delay(500);
}
void SensorStart(){ //Secuencia de inicio del sensor
if (pressure.begin()){
Serial.println("BMP180 Conexion exitosa");
}else{
Serial.println("BMP180 fallo de conexion (desconectado?)\n\n");
while (1);
}
status = pressure.startTemperature(); //Se inicia la lectura de temperatura
if (status !=0 ){
delay(status);
status = pressure.getTemperature(Temperatura);//Se lee una temperatura inicial
}
if (status !=0 ){
status = pressure.startPressure(3);//Se inicia la lectura de presiones
}
if(status !=0 ){
delay(status);
status = pressure.getPressure(PresionBase, Temperatura); //Se lee la presión inicial incidente sobre el sensor en la primera ejecución
}
} // cierra SensorStart
void ReadSensor() {//En este método se hacen las lecturas de presión y temperatura
status = pressure.startTemperature(); // Se inicia la lectura de temperatura
if (status != 0){
delay(status);
status = pressure.getTemperature(Temperatura);
}
if (status != 0){
status = pressure.startPressure(3);
}
if (status != 0){
delay(status);
status = pressure.getPressure(Presion, Temperatura);
}
}
Envía los valores por wifi
Si tu proyecto de arduino necesita ser controlado en remoto o a cierta distancia quizás te interese enviar los valores de presión y temperatura por wifi.
Si es tu caso te recomendamos leer nuestro tutorial donde explicamos como usar el wifi esp8266 de arduino, como instalarlo, su esquema y un sencillo ejemplo.