Conexión de amperios de barómetro. Barómetro con funciones avanzadas. Conexión de un sensor digital de humedad y temperatura

La magnitud de la presión atmosférica, la velocidad y la naturaleza de sus cambios juegan papel importante en la predicción del clima y también influyen en gran medida en el bienestar de las personas susceptibles a la dependencia del clima, dolencias asociadas con diversos fenómenos climáticos. Los barómetros se utilizan para medir la presión atmosférica. Un barómetro aneroide mecánico tiene dos manos. Uno muestra la presión actual. Otra flecha, que se puede configurar manualmente en cualquier posición, le permite marcar el valor medido para determinar la tendencia de los cambios en la presión atmosférica a lo largo del tiempo. Es muy deseable que el barómetro electrónico muestre no sólo el valor de la presión atmosférica, sino que también permita determinar si hay un aumento o una disminución y con qué rapidez cambia el parámetro medido.

Estaciones meteorológicas económicas uso doméstico muestra sólo pictogramas con imágenes de gotas de lluvia, nubes o el sol. Es difícil decir cómo se relacionan estos iconos con la presión atmosférica y si esta estación meteorológica tiene un sensor barométrico o utiliza otros métodos creativos para predecir el tiempo. Las estaciones meteorológicas más avanzadas muestran el valor de presión actual en forma de números y el cambio de presión durante las últimas horas en forma de un gráfico de barras aproximado, que tiene una función principalmente decorativa. Estas estaciones meteorológicas son mucho más caras. También existen en el mercado dispositivos muy avanzados diseñados para marineros, navegantes, etc., que muestran tanto los cambios de presión como el valor actual con gran precisión, pero estos dispositivos son muy caros.

Esta publicación analiza un barómetro casero simple que muestra la magnitud y la tasa de cambio en la presión atmosférica, así como la temperatura del aire.

La apariencia del dispositivo se muestra en la fotografía.

Los resultados de la medición se muestran en una pantalla de síntesis de caracteres de dos líneas. La primera línea muestra el resultado de medir la presión atmosférica actual en mmHg, la desviación del valor de presión actual del valor promedio para este lugar(se considera positivo el exceso del valor de presión actual sobre la media), así como la temperatura del aire en grados centígrados. Datos dados en línea superior, actualizado cada 6 segundos. La salida de nuevos datos va acompañada de un destello del LED situado encima del indicador.

La segunda línea del indicador muestra los incrementos de presión sobre última hora, las tres y las diez. Si la presión ha aumentado durante el período de tiempo especificado, el incremento correspondiente se muestra con un signo más, en caso contrario, con un signo menos. Los datos de la segunda línea se actualizan cada 10 minutos. Inmediatamente después de encender el barómetro, la segunda línea estará vacía. Los valores numéricos aparecerán allí después de 1 hora, 3 horas y 10 horas respectivamente.

El barómetro está diseñado para funcionar en una habitación seca y calentada a una temperatura de 0...40 °C y una presión atmosférica de 600...825 mm Hg. Arte.

La precisión de la medición de presión y temperatura está determinada enteramente por la precisión del sensor de presión Bosch BMP180 utilizado. El error típico en la medición de la presión es -1 hPa, lo que corresponde aproximadamente a 0,75 mmHg. El componente de ruido al medir la presión es de 0,02 hPa (0,015 mmHg). El error típico de medición de temperatura alrededor de 25°C es de +/- 0,5°C. Las características técnicas más detalladas del sensor BMP180 se pueden encontrar en las especificaciones técnicas. descripción en la solicitud.

Intervalos de tiempo en este dispositivo contado programáticamente. El error en la formación de estos intervalos, medido por el autor, no supera un minuto en 10 horas.

El diagrama del barómetro se muestra en la figura.

El elemento principal del dispositivo es el módulo Arduino Nano. El autor utilizó la versión 3 con microcontrolador ATmega 328. Memoria del módulo en en este caso Sólo un tercio está ocupado, por lo que se puede utilizar. módulo arduino Nano con microcontrolador ATmega 168.

La pantalla de Winstar WH1602L tiene dos líneas con 16 caracteres en cada línea. Su base es el controlador HD44780. La resistencia R2 le permite ajustar el contraste de la imagen. Si el voltaje en el pin 3 (Vo) se desvía mucho del voltaje óptimo, entonces no se verá ninguna imagen en la pantalla. Esta circunstancia debe tenerse en cuenta a la hora de encender el dispositivo por primera vez. Para la instancia de visualización utilizada por el autor, el voltaje óptimo en el pin 3 fue de aproximadamente 1 V. La resistencia R3 determina el valor actual de los LED de retroiluminación.

El sensor de presión BMP180 tiene caja metálica tamaño 3,6x3,6x1 mm. Sus conclusiones son almohadillas de contacto ubicadas en la parte inferior de la carcasa. Además, el sensor requiere una fuente de alimentación de 1,8 - 3,6 V. Los niveles de señal con los que intercambia el sensor dispositivo externo, también difieren de los requeridos. Estas circunstancias dificultan el uso directo del BMP180. Afortunadamente este problema fácilmente solucionado. Están disponibles para la venta módulos basados ​​​​en sensores BMP180, que incluyen los propios sensores y todos los elementos correspondientes. Estos módulos son un tablero de 10x13 mm. Su costo es de aproximadamente 1,4 USD. La apariencia del módulo se muestra en la siguiente foto.

El LED HL1 parpadea cada 6 segundos, lo que indica que se han mostrado nuevos resultados en la pantalla del barómetro. El autor utilizó un LED verde con un diámetro de 3 mm L-1154GT de Kingbright.
El condensador C1 tiene bastante gran capacidad, lo que hace que el dispositivo sea insensible a fracasos a corto plazo nutrición. Si esto no es necesario, entonces C1 se puede reducir a 500 microfaradios.
El diodo D1 apaga la luz de fondo del indicador durante cortes de energía. aumenta el tiempo duración de la batería barómetro a partir de la energía almacenada en el condensador C1.

El dispositivo se puede alimentar desde cualquier fuente. corriente continua (cargador Teléfono móvil, fuente de alimentación de cualquier dispositivo, etc.) con una tensión de salida de 8...12 V. A una tensión de 9 V, el barómetro consume unos 80 mA.

El dispositivo se monta sobre una placa de pruebas de 85 x 55 mm, que se fija a la pantalla mediante una placa de plexiglás.

El sensor BMP180 está ubicado en la parte inferior, lo más lejos posible de los principales elementos generadores de calor, que son la resistencia R3 y la pantalla con retroiluminación LED. El cuerpo del dispositivo es una caja de plástico de 160x160x25. Se deben perforar una serie de orificios de ventilación en las paredes inferior y superior de la caja.

En la aplicación se presenta el boceto que debe actualizarse en la memoria del módulo Arduino Nano. El autor utilizó el entorno. IDE de Arduino 1.8.1. Para admitir el sensor de presión, se debe instalar la biblioteca Adafruit-BMP085. El archivo correspondiente se incluye en el archivo adjunto.

Antes de cargar el boceto, en la línea 17, en lugar del número 740.0, que corresponde a la presión promedio en el lugar de instalación del barómetro del autor, ingrese la presión promedio en mm. rt. Arte. , correspondiente a la ubicación donde se instalará su barómetro. En una primera aproximación, este parámetro se puede determinar mediante la fórmula Рср = 760 - 0,091h, donde h es la altura sobre el nivel del mar en metros. La forma más sencilla de determinar la altura es con usando gps navegador.

Esta fórmula no tiene en cuenta muchos factores que influyen presión atmosférica y es aplicable sólo para altitudes de hasta 500 m. Descripción de los métodos más. definición precisa La presión promedio está fuera del alcance de esta publicación. Se pueden encontrar en numerosos materiales sobre meteorología disponibles en Internet.

Lista de radioelementos

Designación Tipo Denominación Cantidad NotaComerciomi bloc de notas
A1 Módulo con sensor BMP180 1 al bloc de notas
A2 placa arduino

Arduino Nano 3.0

1 al bloc de notas
VD1 diodo rectificador

1N4007

1 al bloc de notas
HG1 pantalla LCDWH1602L1 winstar al bloc de notas
HL1 CONDUJOL-1154GT1 reybrillante al bloc de notas
C1 condensador electrolítico4700 uF x 16 V1

BMP085 es un sensor para monitorear la presión barométrica (además, también monitorea la temperatura).

El sensor se utiliza en muchos proyectos, incluidos usando arduino, ya que prácticamente no tiene análogos. Además, también es económico. La primera pregunta que surge es: ¿por qué alguien mediría la presión atmosférica? Hay dos razones para esto. El primero es controlar la altitud sobre el nivel del mar. A medida que aumenta la altitud, la presión disminuye. Muy conveniente para practicar senderismo, como alternativa. Navegadores GPS. Además, la presión atmosférica se utiliza para pronosticar el tiempo.

El BMP085 fue reemplazado alguna vez por el sensor BMP180, que se conecta a Arduino y otros microcontroladores de la misma manera que su predecesor, pero es más pequeño y cuesta menos.

Características técnicas de BMP085

  • Rango de sensibilidad: 300-1100 hPa (9000 m - 500 m sobre el nivel del mar);
  • Resolución: 0,03 hPa/0,25 m;
  • Temperatura de funcionamiento-40 a +85°C, precisión de medición de temperatura +-2°C;
  • Conexión vía i2c;
  • V1 en el módulo utiliza suministro de 3,3 V y energía lógica;
  • V2 en el módulo utiliza potencia lógica y de 3,3-5 V;

Después de reiniciar Arduino IDE, puede ejecutar el primer boceto de ejemplo, cuyo código se proporciona a continuación:

#incluir <Wire.h>

#incluir <Adafruit_Sensor.h>

#incluir <Adafruit_BMP085_U.h>

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

configuración nula (nulo)

Serie.begin(9600);

Serial.println("Prueba del sensor de presión"); Serial.println("");

/* Inicializa el sensor */

si(!bmp.begin())

/* Si aparece el mensaje: "Hubo un problema al detectar el BMP085...",

Compruebe que el sensor esté conectado correctamente */

Serial.print("Ups, no se detectó BMP085... ¡Compruebe su cableado o I2C ADDR!");

evento sensores_event_t;

bmp.getEvent(&event);

/* mostrar los resultados (la presión barométrica se mide en hPa) */

si (evento.presión)

/* Muestra la presión atmosférica en hPa */

Serial.print("Presión: "); Serial.print(evento.presión); Serial.println("hPa");

Abra la ventana del monitor en serie (velocidad en baudios - 9600). Nuestro boceto debería generar datos de presión en hPa (hectopascales). Puede comprobar el funcionamiento del sensor presionando con el dedo el sensor. La figura muestra los valores de presión después de presionar con un dedo.


Medición de la altitud sobre el nivel del mar

Probablemente sepas que la presión disminuye al aumentar la altitud. Es decir, podemos calcular la altura conociendo la presión y la temperatura. Una vez más, dejaremos las matemáticas detrás de escena. Si está interesado en los cálculos, puede consultarlos en esta página de Wikipedia.

En el siguiente ejemplo, adicional biblioteca arduino. Para calcular la altura utilizando el sensor BMP085, actualice la función "void loop()". Cambios necesarios Los bocetos se dan en el siguiente boceto. Como resultado, obtendrá el valor de temperatura según el nivel de presión y el valor de temperatura.

/* crea un nuevo evento para el sensor */

evento sensores_event_t;

bmp.getEvent(&event);

/* mostrar resultados (presión barométrica en hPa) */

si (evento.presión)

/* muestra la presión atmosférica en hPa */

Serial.print("Presión: ");

Serial.print(evento.presión);

Serial.println("hPa");

/* para calcular la altura con cierta precisión, necesitas saber *

* presión media y temperatura ambiente

*en grados Celsius en el momento en que se tomaron las lecturas*

*si no tienes estos datos, puedes utilizar el "valor predeterminado"

* que es igual a 1013,25 hPa (este valor se define como

*SENSORS_PRESSURE_SEALEVELHPA*

* en el archivo sensores.h). Pero los resultados no serán precisos*

* valores requeridos se puede encontrar en sitios web con pronósticos de temperatura*

* o en recursos centros de información en grandes aeropuertos*

*por ejemplo, para París, Francia, puede encontrar el valor de presión promedio actual*

*a través del sitio web: http://bit.ly/16Au8ol */

/* obtiene el valor de temperatura actual del sensor BMP085 */

temperatura de flotación;

bmp.getTemperature(&temperatura);

Serial.print("Temperatura: ");

Serial.print(temperatura);

Serial.println("C");

/* convierte los datos recibidos a altura */

/* actualizar siguiente línea, mostrando los valores actuales */

float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Serial.print("Altitud: ");

Serial.print(bmp.pressionToAltitude(seaLevelPressure,

Serial.println("m");

Serial.println("");

Serial.println("Error del sensor");

Ejecutamos el boceto y vemos la altitud calculada sobre el nivel del mar.

La precisión de las lecturas del BMP085 se puede aumentar significativamente especificando el valor de presión promedio, que varía según el clima. ¡Cada 1 hPa de presión que no hemos tenido en cuenta provoca un error de 8,5 metros!

La siguiente figura muestra los valores de presión de uno de recursos de información Aeropuerto europeo. Amarillo se resalta el valor de presión, que podemos utilizar para aclarar los resultados.


Cambiemos la siguiente línea de nuestro sketch, escribiendo en ella el valor actual (1009 hPa):

flotador seaLevelPressure = 1009;

Como resultado, obtendremos resultados ligeramente diferentes:

Consejo: cuando especifiques la presión, no olvides convertir los datos utilizados a hPa.

Usando BMP085 (API v1)

Repetimos una vez más: para conocer la presión y la altitud sobre el nivel del mar es necesario realizar algunos cálculos. Pero todos ellos ya están incluidos en la Biblioteca Arduino Adafruit_BMP085 (API v1), que se puede descargar desde el enlace.

Después de instalar las bibliotecas, debe reiniciar el IDE de Arduino.

Después del reinicio, puede ejecutar el primer boceto de ejemplo:

#incluir <Wire.h>

Adafruit_BMP085bmp;

Serie.begin(9600);

Serial.println(" *C");

Serial.print("Presión = ");

Serial.println("Pa");

Serie.println();

Después de flashear tu Arduino, abre el monitor serie. Establezca la velocidad en baudios en 9600. El boceto generará la temperatura en grados Celsius y la presión en pascales. Si coloca el dedo sobre el elemento sensor del sensor, la temperatura y la presión aumentarán:


Medición de altitud (API v1)

Para controlar la altitud sobre el nivel del mar, simplemente ejecute el siguiente esquema:

#incluir <Wire.h>

#incluir <Adafruit_BMP085.h>

Adafruit_BMP085bmp;

Serie.begin(9600);

Serial.print("Temperatura = ");

Serial.print(bmp.readTemperature());

Serial.println(" *C");

Serial.print("Presión = ");

Serial.print(bmp.readPressure());

Serial.println("Pa");

// calcula la altitud sobre el nivel del mar en función de los valores

//presión barométrica "estándar" igual a 1013,25 milibares = 101325 Pascal

Serial.print("Altitud = ");

Serial.print(bmp.readAltitude());

Serial.println("metros");

Serie.println();

Ejecute el boceto para mostrar los resultados:


A juzgar por las lecturas anteriores, nos encontramos a una altitud de -21,5 metros con respecto al nivel del mar. ¡Pero sabemos que estamos sobre el mar! Recordamos el mismo problema que con usando la API V2. ¡Debemos tener en cuenta el clima! DE ACUERDO. Digamos que encontramos un sitio web con buen tiempo y la presión es de 101,964 Pa. Abra el ejemplo Ejemplos->BMP085test en el IDE de Arduino y edite la línea resaltada en la siguiente figura:


En esta línea debe ingresar los datos de presión actuales. Después de un nuevo lanzamiento, encontrará que los datos han cambiado drásticamente y obtuvimos 29,58 metros con un signo más, que se parece mucho más a la verdad.


Deja tus comentarios, preguntas y comparte experiencia personal abajo. ¡A menudo surgen nuevas ideas y proyectos de las discusiones!

Saludos compañeros!
Porque En invierno, el clima no es propicio para volar, lo que significa que hay mucho tiempo libre, que sería bueno ocupar con algo para que el cerebro no se seque por la inactividad. Recientemente decidí dominar el tema de feroces holívares y acalorados debates, a saber: el microcontrolador Atmega328 en la implementación de Arduino.
Les pido encarecidamente que no inicien un debate sobre Arduina en sí; hay mucha información sobre todos sus pros y contras en Internet.
Entonces, teniendo en cuenta las características específicas del sitio, sobre " hogar inteligente“Creo que no es un tema que contar, así que construiremos un altímetro barométrico con una pantalla LED de siete segmentos y tres dígitos basado en Arduino.

¿Más detalles?


Debo decir de inmediato que no pretendo ser original ni innovador. proyectos similares en línea a granel. Pero no hay nada en este recurso. búsqueda similar No lo encontré, así que decidí publicarlo, por si a alguien le resulta útil.
Nuevamente, escribí el código yo mismo, así que si todo es material indio, no lo juzgues demasiado duramente =) Todavía estoy aprendiendo. Último tiempo Programé controladores en mi cuarto año en el instituto hace más de 10 años =) ¡Las críticas competentes y constructivas son bienvenidas!
Intentaré explicar claramente y en detalle cómo montar un dispositivo de este tipo; creo que una persona con casi cualquier nivel de formación puede manejarlo.

Ventaja principal de este dispositivo- su precio. Incluso en la vida actual y en los tipos de cambio, puedes gastar 350 rublos, lo que en general no es dinero. También necesitarás manos rectas y la capacidad de manejar un soldador.

Funciones del dispositivo:
- Medir la altura actual y mostrarla en pantalla led.
- Memorización valor máximo altitud que ha ocurrido desde que se encendió la energía.
- Visualización de altura máxima pulsando un botón.
- Grabar el valor de altura máxima en la memoria no volátil (EEPROM) del controlador (guardado después del apagado).
- Lectura de la altura máxima almacenada en la EEPROM y visualización en el display.

Para punto cero Se toma como referencia la altitud a la que se encendió el dispositivo.

Lo que necesitarás (entre paréntesis palabras clave para buscar en todo tipo de eBay, etc.)
- Microcontrolador Arduino, en principio, casi cualquiera servirá si se adapta el código, pero todo fue ensamblado y probado sobre la base (Arduino Nano).

- sensor de altitud barométrica con bus I2C (BMP085).

- Pantalla LED de siete segmentos y tres dígitos con ánodo común (7-Segment LED Display).
- cables para conectarlo todo en un solo conjunto, utilicé unos ya preparados con conectores, pero esto no es en absoluto necesario (Cable Dupont).

- botón, cualquiera sin fijar la posición servirá (botón pulsador del interruptor táctil). Por ejemplo este:
- resistencia de 1KOhm a 10KOhm.
- tres resistencias de 100 ohmios.
- un soldador con todos los gobules y la posibilidad de usarlo.
-Software Arduino.

Opcional:
- junta de desarrollo para cableado de pantalla.

Para aquellos que están completamente fuera de tema. Antes de intentar ensamblar el dispositivo y profundizar en el código, recomiendo encarecidamente visitar y leer varios recursos:
Introducción al tema, ejemplos sencillos.
Acerca de conectar una pantalla de siete segmentos con ejemplos.
Descripción del sensor, ejemplos, bibliotecas.
No te llevará mucho tiempo y aumentará enormemente tu comprensión =)

Primero, un poco sobre la pantalla.
Una pantalla LED de siete segmentos con un ánodo común es un conjunto de LED como este (encerrado en un círculo rojo en la imagen):
Si observa más de cerca el diagrama, quedará claro que solo una de las descargas puede encenderse a la vez, es decir, Para mostrar un número de tres dígitos, debe encender y apagar cada dígito por turno, y hacerlo muy rápidamente. Por lo tanto, los números parpadearán pase lo que pase, lo principal es que este parpadeo sea lo suficientemente frecuente y el ojo no lo perciba como un parpadeo. Esto significa que Arduino también funcionará como controlador para esta pantalla, esencialmente dibujando a su vez los números que componen el número igual a la altura actual.
Déjame hacer una reserva ahora mismo, puedes comprar. solución preparada, con un controlador incorporado, pero cuesta 5 veces más y no encontré una implementación adecuada mientras buscaba, porque Tenía muchas ganas de uno de 3 bits, pero cada vez hay más a la venta de 4 bits.
Por cierto, considerando que la pantalla es de tres dígitos, altura máxima, que puede mostrar = 999m. En principio, el dispositivo se puede adaptar fácilmente a una pantalla de 4 dígitos, pero habrá que modificar ligeramente el programa. Cualquiera que entienda el código de 3 dígitos puede adaptarlo fácilmente a 4 dígitos.
Como resultado, a pesar de los problemas que surgieron con este mismo parpadeo, logramos lograr resultados más o menos aceptables, más sobre eso a continuación, porque Los problemas surgieron debido al sensor de altura.
Más detalles sobre el sensor.
El sensor es barométrico, es decir. Determina los cambios de altitud en función de los cambios de presión atmosférica. De hecho, el sensor sólo mide la presión atmosférica; el código de biblioteca del sensor es responsable de calcular la altitud en función de la presión. En este caso, el sensor tiene un ADC incorporado y una interfaz I2C, es decir. Da el valor medido ya en formulario digital, lo que definitivamente es una ventaja. Hay una biblioteca preparada para trabajar con el sensor. Utilicé la primera versión, requiere menos recursos y es más fácil de integrar en el código. La funcionalidad de la biblioteca le permite ajustar la precisión de la medición en una escala desde 0, la menor precisión, hasta 3, la mayor precisión (ver código). Aunque, para ser honesto, no noté mucha diferencia entre niveles superiores a 0. El error de medición es de aproximadamente 1 metro, lo que en general es bastante aceptable. El resultado de la medición es la altitud absoluta sobre el nivel del mar a presión atmosférica normal. Pero esto es completamente carente de interés. Por otro lado, usando Arduino y el más simple operaciones matemáticas Puedes calcular fácilmente la altura relativa, lo cual se hizo.
Pero había una mosca en el ungüento: sondear el sensor usando función estándar ya está pasando suficiente mucho tiempo, y considerando que Arduino también es un controlador de pantalla de siete segmentos, obtuvimos algunos efectos especiales bastante divertidos, es decir. mientras sondeaba el sensor, la salida en la pantalla se detuvo por sí sola y por lo tanto el número que se mostraba en ese momento estuvo encendido un poco más que los demás. El resultado fue este tipo de guirnalda de tres elementos.
Al final, después de jugar con retrasos y seleccionar el período óptimo de sondeo del sensor, logramos lograr casi ausencia total parpadeo. Además, no es necesario sondear el sensor en cada ciclo del programa; la altura sigue cambiando a una velocidad limitada. Pero el parpadeo del primer dígito debido a un error y al sondeo demasiado frecuente del sensor no se ve bonito.
En principio, si tuviera más habilidad, podría reescribir la biblioteca de sensores, pero aún no estoy listo. Y en esta implementación cumple completamente sus funciones, el resto es letra.
La salida de números se cambió a interrupción, se eliminó el parpadeo y se actualizó el boceto.
En esto excursión corta Probablemente terminaré los elementos del dispositivo y pasaré al montaje.

Diagrama de conexión de elementos del dispositivo (en el que se puede hacer clic):


Anticipando las preguntas de la serie "¿Qué? ¡¿No pudiste dibujar un diagrama normal?!" Diré que podría, pero para los no iniciados creo que esta opción sería más fácil de entender, pero para los iniciados no importa, por lo que el diagrama se lee normalmente. Encontré el pinout de siete segmentos sólo para la versión de cuatro bits; la versión de tres bits se diferencia simplemente por la ausencia de la sexta pata.

En cuanto a la fuente de alimentación del dispositivo: el Arduino en su forma original normalmente puede sobrevivir de 7V a 16V, en casos extremos de 6V a 20V. Pero, teniendo en cuenta que tenía un clon chino, no intenté ningún experimento viles, pero la batería LiPo 3S funciona sin problemas.
Es aconsejable empaquetar el sensor de tal manera que haya libre acceso al aire, pero al mismo tiempo excluir el flujo de aire directo hacia el orificio del sensor, por ejemplo, cubrirlo con gomaespuma.
Recomiendo quitar los LED RX y TX de la placa Arduino, porque... están conectados en paralelo a los pines digitales 0 y 1, por lo que los segmentos conectados a estos pines brillarán con menos brillo.

Los sensores de presión atmosférica bmp180, bmp280, bme280 son invitados frecuentes en proyectos de ingeniería. Se pueden utilizar para predecir el clima o medir la altitud sobre el nivel del mar. Hoy en día, esta línea en particular se puede llamar los sensores más populares y económicos para Arduino. En este artículo describiremos el principio de funcionamiento de los sensores, el diagrama de conexión a varios tableros Arduino y dar ejemplos de bocetos de programación.

Un barómetro es un dispositivo que mide la presión atmosférica. Los barómetros electrónicos se utilizan en robótica y diversos dispositivos electronicos. Los sensores de presión más comunes y asequibles son los de BOSH: son BMP085, BMP180, BMP280 y otros. Los dos primeros son muy similares entre sí, el BMP280 es un sensor más nuevo y mejorado.

Los sensores de presión funcionan convirtiendo la presión en movimiento de una pieza mecánica. El sensor de presión consta de un transductor con un elemento sensor, una carcasa, elementos mecanicos(membranas, resortes) y circuito electrónico.

El sensor BMP280 está diseñado específicamente para aplicaciones donde se requiere un tamaño pequeño y un consumo de energía reducido. Tales aplicaciones incluyen sistemas de navegación, pronóstico del tiempo, indicación de velocidad vertical y otros. El sensor tiene alta precisión, buena estabilidad y linealidad. Presupuesto Sensor BMP280:

  • Dimensiones 2 x 2,5 x 0,95 mm.
  • Presión 300-1100 hPa;
  • Temperaturas de 0C a 65C;
  • Soporte para interfaces I2C y SPI;
  • Tensión de alimentación 1,7 V – 3,6 V;
  • Corriente media 2,7 µA;
  • 3 modos de funcionamiento: modo de suspensión, modo FORZADO (medición, lectura de valor, cambio al modo de suspensión), modo NORMAL(transferencia del sensor al funcionamiento cíclico, es decir, el dispositivo de forma independiente a través de establecer el tiempo se despierta del modo de suspensión, toma medidas, lee las lecturas, guarda los valores medidos y vuelve al modo de suspensión).

El sensor BMP180 es económico y fácil de usar sensor táctil, que mide la presión atmosférica y la temperatura. Suele utilizarse para determinar la altitud y en estaciones meteorológicas. El dispositivo consta de un sensor piezorresistivo, un sensor de temperatura, un ADC, memoria no volátil, RAM y microcontrolador.

Características técnicas del sensor BMP180:

  • Los límites de presión medida son 225-825 mm Hg. Arte.
  • Tensión de alimentación 3,3 – 5 V;
  • Corriente 0,5 mA;
  • soporte de interfaz I2C;
  • Tiempo de respuesta 4,5 ms;
  • Dimensiones 15 x 14 mm.

El sensor bme280 contiene 3 dispositivos: para medir presión, humedad y temperatura. Diseñado para un bajo consumo de corriente, alta confiabilidad y trabajo estable a largo plazo.

Características técnicas del sensor bme280:

  • Dimensiones 2,5 x 2,5 x 0,93 mm;
  • Caja metálica LGA equipada con 8 salidas;
  • Tensión de alimentación 1,7 – 3,6 V;
  • Disponibilidad de interfaces I2C y SPI;
  • Consumo de corriente en espera 0,1 µA.

Si comparas todos los dispositivos entre sí, los sensores son muy similares. En comparación con su predecesor, que incluye el BMP180, más nuevo sensor BMP280 es notablemente más pequeño. Su carcasa en miniatura de ocho pines requiere cuidado durante la instalación. El dispositivo también admite interfaces I2C y SPI, a diferencia de sus predecesores, que sólo admitían I2C. Prácticamente no hay cambios en la lógica de funcionamiento del sensor; solo se ha mejorado la estabilidad de la temperatura y se ha aumentado la resolución del ADC. El sensor BME280, que mide temperatura, humedad y presión, también es similar al BMP280. La diferencia entre ellos está en el tamaño de la carcasa, ya que el BME280 dispone de un sensor de humedad, que aumenta ligeramente las dimensiones. El número de contactos y su ubicación en el cuerpo son los mismos.

Opciones de conexión para Arduino

Conexión del sensor BMP180 a Arduino. Para conectarse necesitará el propio sensor BMP180, una placa Arduino UNO, cables de conexión. El diagrama de conexión se muestra en la siguiente figura.

La tierra del Arduino debe estar conectada a la tierra del sensor, el voltaje es de 3,3 V, SDA es al pin A4, SCL es al pin A5. Los pines A4 y A5 se seleccionan en función de su compatibilidad con la interfaz I2C. El sensor en sí funciona con un voltaje de 3,3 V y el Arduino funciona con 5 V, por lo que se instala un estabilizador de voltaje en el módulo con el sensor.

Conexión de BMP 280 a Arduino. En la figura se muestran la distribución de pines y la vista superior de la placa.

El módulo del sensor de presión en sí se ve así:

Para conectarse a Arduino, debe conectar las salidas de la siguiente manera: conecte tierra a Arduino y al sensor, VCC - a 3,3 V, SCL / SCK - al pin analógico A5, SDA / SDI - a A4.

Conexión del sensor BME280. La ubicación de los contactos y la distribución de pines del sensor BME280 es la misma que la del BMP280.

Dado que el sensor puede funcionar a través de I2C y SPI, la conexión se puede implementar mediante dos métodos.

Al conectarse a través de I2C, debe conectar los pines SDA y SCL.

Al conectarse a través de SPI, debe conectar SCL desde el módulo y SCK (pin 13 en Arduino), SDO desde el módulo al pin 12 de Arduino, SDA al pin 11, CSB (CS) a cualquier pin digital, en este caso al pin 10 del Arduino. En ambos casos, el voltaje está conectado a 3,3 V en el Arduino.

Descripción de la biblioteca para trabajar con el sensor. Ejemplo de boceto

Para trabajar con el sensor BMP180 existen varias bibliotecas, simplificando el trabajo. Estos incluyen SFE_BMP180, Adafruit_BMP085. Las mismas bibliotecas son adecuadas para trabajar con el sensor BMP080. El sensor bmp280 utiliza una biblioteca similar, Adafruit_BMP280.

El primer boceto de prueba hará que el sensor lea la presión y la temperatura. El código es adecuado para los sensores BMP180 y BMP280, solo necesita conectar la biblioteca correcta y especificar los contactos correctos a los que está conectado el módulo. En primer lugar, debe conectar todas las bibliotecas en el código e inicializar el funcionamiento del sensor. Para determinar la presión, primero debes conocer la temperatura. Para ello se utiliza el siguiente elemento de código.

Estado = presión.startTemperature();// Leyendo datos de temperatura del sensor if(status!=0)( retraso(status); // Estado de espera = presión.getTemperature(T); // Guardando datos de temperatura recibidos if( estado !=0)( Serial.print("Temperatura: "); // Muestra la palabra "Temperatura" Serial.print(T,2); // Muestra el valor de temperatura. Serial.println("deg C, "); //Imprime el símbolo Celsius.

Entonces necesitas obtener información sobre la presión atmosférica.

Estado = presión.startPressure(3); // se lee la presión if(status!=0)( delay(status); // Estado de espera = presión.getPressure(P,T); // se recibe la presión, se guarda if(status!=0)( Serial.print ( "Presión absoluta: "); // Muestra las palabras "Presión atmosférica" ​​Serial.print(P,2); // Muestra el valor de la variable mBar Serial.print(" mbar, "); print(P*0.7500637554192,2); // muestra el valor en mmHg (mmHg) Serial.println(" mmHg");) // muestra la unidad de presión "mmHg" " (mm.Hg).

Después de cargar el boceto, los datos sobre temperatura y presión atmosférica aparecerán en la ventana de monitoreo del puerto.

El sensor BME280 también muestra presión y temperatura, además puede leer lecturas de humedad, que está desactivado de forma predeterminada. Si es necesario, puede ajustar el sensor y comenzar a leer las lecturas de humedad. Rango de medición de 0 a 100%. La biblioteca necesaria para trabajar con el sensor se llama Adafruit_BME280.

El código es similar al descrito anteriormente, solo se le agregan líneas para determinar la humedad.

Void printValues() ( Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" C"); //determinando la temperatura, mostrándola en la pantalla en grados Celsius. Serial. print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa"); //determina la presión, muéstrala Serial.print("Humidity = ") ; Serial.print(bme.readHumidity()); Serial.println(" %"); //determinando la humedad como porcentaje, mostrando el valor medido Serial.println();

Posibles errores de conexión y su eliminación.

El error más común son los datos incorrectos sobre presión y temperatura, que difieren en varios órdenes de magnitud del valor real. La razón de esto más a menudo es conexión incorrecta– por ejemplo, la biblioteca indica que debe conectarse a través de I2C, pero el sensor está conectado a través de SPI.

Además, al utilizar sensores "chinos", es posible que encuentre direcciones I2C o SPI no estándar. En este caso, se recomienda escanear todos los dispositivos conectados utilizando uno de los bocetos populares y averiguar a qué dirección responde su sensor de presión.

Otro problema puede ser una discrepancia entre el voltaje de funcionamiento del módulo y el voltaje base del controlador que se utiliza. Por lo tanto, para trabajar con un sensor de 3,3 V, deberá crear un divisor de voltaje o utilizar uno de los módulos de adaptación de nivel ya preparados existentes. Por cierto, estos módulos son bastante económicos y se recomienda su uso a principiantes.

Pequeñas desviaciones del valor real pueden deberse a la calibración del sensor. Por ejemplo, para el sensor BMP180, todos los datos se calculan y se especifican en un boceto. para obtener más valor exacto altitud, es necesario conocer el valor actual de presión sobre el nivel del mar para estas coordenadas.

Conclusión

Los sensores de presión atmosférica bmp180, bmp280 no son los tipos de sensores más baratos, pero en muchos casos prácticamente no existe una alternativa a dichos sensores. En el proyecto de la estación meteorológica, el sensor registra parámetro importante– presión atmosférica, que permite predecir el tiempo. En proyectos relacionados con la creación de vehículos voladores, el barómetro se utiliza como sensor de altitud real sobre el nivel del mar.

La conexión de sensores no presenta ninguna dificultad, ya que Se utiliza una conexión estándar i2C o SPI. Para programar, puede utilizar uno de los ya preparados.

Nunca antes había sido tan fácil realizar la pasión por la ingeniería eléctrica, la robótica y los sistemas de respuesta y control automáticos.

Si antes existían constructores especializados con conjuntos limitados de funciones y estrictamente parámetros dados, entonces la variedad actual de kits de construcción es simplemente asombrosa: los sistemas de microprocesadores reales, ensamblados en la rodilla, tienen una funcionalidad casi ilimitada. Rica imaginación, amplia base del elemento, las grandes comunidades de fanáticos e ingenieros y el soporte del fabricante son las principales características distintivas kits de robótica que demanda el mercado.

Uno de ellos y el más popular, por supuesto, es arduino. Constructor para montaje electrónico instantáneo. dispositivos automáticos cualquier grado de dificultad: alta, media y baja. Esta plataforma también se denomina "computación física" por su estrecha interacción con ambiente. tarjeta de circuito impreso con microprocesador, abierto código de programa, interfaces estándar y conectar sensores a Arduino son los componentes de su popularidad.

El sistema es el tablero que reúne todo. componentes necesarios, proporcionando ciclo completo desarrollo. El corazón de este tablero es microcontrolador. Proporciona control de todos los periféricos. Los sensores conectados al sistema permiten que el sistema "se comunique" e interactúe con el entorno: analice, marque, cambie.

Conexión de un sensor digital de humedad y temperatura

Dos sensores populares, DHT11, DHT22, están diseñados para medir la humedad y la temperatura (hablaremos sobre cómo conectar un sensor de temperatura); solución económica, ideal para circuitos simples y formación. Termistor, sensor capacitivo: la base de DHT11 y DHT22. El chip interno realiza el ADC, dando a la salida un "dígito" que cualquier microcontrolador entenderá.

DHT11 se diferencia de DHT22 en el rango de medición y frecuencia de muestreo: humedad: 20-80% para DHT11 y 0-100% para DHT22; temperatura - 0°C a +50°C para DHT11 y -40°C a +125°C para DHT22; sondeo: cada segundo para DHT11 y una vez cada dos segundos para DHT22.

Ambos sensores DHT tienen 4 pines estándar:

  1. Fuente de alimentación para sensores.
  2. Autobús de datos.
  3. No involucrado.
  4. Tierra.

Los pines de datos y alimentación requieren una resistencia de 10k ohmios entre ellos.

Diseñado para sensores DHT biblioteca DHT.h(se puede ver en el enlace). Al cargar el boceto en el controlador, el monitor del puerto debe mostrar los valores actuales de humedad y temperatura. Es fácil comprobar su funcionamiento: basta con respirar sobre el sensor y levantarlo: la temperatura y la humedad deberían cambiar.

Es posible mostrar valores en la pantalla. LCD 1602 I2C, si lo incluyes en el sistema.

Usando estos sensores puedes construir sistema automatizado regar la tierra al aire libre, en un invernadero e incluso en el alféizar de una ventana. U organice un sistema para secar las bayas: estas últimas se soplan o se calientan según el contenido de humedad de las bayas.

Además, algunos acuaterrarios requieren condiciones especiales de humedad, que pueden controlarse fácilmente con DHT1 y DHT22.

A menudo, al predecir el tiempo o determinar la altitud sobre el nivel del mar, es necesario resolver el problema de medir la presión. Aquí es donde vienen al rescate los barómetros electrónicos basados ​​en tecnología MEMS: un medidor de tensión o método piezorresistivo asociado a la variabilidad de la resistencia del dispositivo cuando se aplican fuerzas que deforman el material.

Más Popular sensor BMP085; Además de la presión barométrica, también registra la temperatura. Fue reemplazada por la BMP180, que tiene las mismas características:

  • Sensibilidad en el rango: 300-1100 hPa (si está en metros - 9000 - 500 m sobre el nivel del mar);
  • Resolución: 0,03 hPa o 0,25 m;
  • Temperatura de funcionamiento del sensor -40 +85°C, precisión de medición en el rango especificado - ±2°C;
  • Conexión mediante estándar i2c;
  • V1 usa 3,3 V para alimentación y lógica;
  • V2 usa 3,3-5 V para alimentación y lógica.

La conexión de sensores a Arduino en este caso es estándar:

necesitará Controlador de sensor unificado- su versión actualizada ofrece más alta precisión indicaciones; Además, permite trabajar con varios sensores de presión diferentes conectados simultáneamente. También debes instalar la biblioteca Adafrut_Sensor.

Sin de este sensor ni uno solo serio sistema de seguridad. sensor de infrarrojos - elemento base detectar la presencia de animales de sangre caliente.

Además, utilizando sensores PIR, es muy conveniente controlar la iluminación en función de la presencia de una persona cerca. Los sensores infrarrojos o piroeléctricos son simples en estructura interna y económico. Son extremadamente fiables y rara vez fallan.

Base del sensor- un piroeléctrico o dieléctrico capaz de crear un campo cuando cambia la temperatura. Se instalan en pares y se cierran en la parte superior con una cúpula con segmentos en forma de lentes comunes o lentes de Fresnel. Esto permite enfocar los rayos desde diferentes puntos penetración.

En ausencia de cuerpos emisores de calor en la habitación, cada elemento tiene la misma dosis de radiación entrante y, en consecuencia, el mismo voltaje en las salidas. Cuando un animal vivo de sangre caliente entra en la zona de "visión" de los sensores, se altera el equilibrio y aparecen impulsos que se registran.

HC-SR501- el sensor más común y popular. Tiene dos recortadores variables de resistencia: uno es para ajustar la sensibilidad y el tamaño del objeto detectado, el segundo es para ajustar el tiempo de respuesta (el tiempo de generación del pulso después de la detección).

El diagrama de conexión es estándar y no causará ninguna dificultad.

Aunque muchos sensores incluyen una función de medición de temperatura, es mejor utilizar un sensor especializado independiente. Por ejemplo, DS18B20. Este es un sensor integrado con una interfaz serial digital.

Sus puntos fuertes:

  • calibración preliminar de fábrica;
  • error inferior a 0,5°C;
  • resolución definida por software de 0,0625°C a una resolución de 12 bits;
  • rango extremadamente amplio de temperaturas medidas: de -55°C a +125°C;
  • el sensor tiene un ADC incorporado;
  • Se pueden incluir varios sensores en una línea de comunicación.

Cuerpo TO-92- el más común para estos sensores. Existen dos esquemas principales para conectar el sensor de temperatura DS18B20 a un microprocesador o controlador:

Para trabajar con el sensor, es necesario inicializarlo. A esto le sigue escribir un byte y leer un byte.

Estas tres operaciones demuestran cómo funciona el sensor y la biblioteca OneWire las admite perfectamente. Instale la biblioteca OneWire. Después de eso, subimos el boceto y entorno de software listo.

Es posible conectar varios sensores DS18B20; en este caso deben conectarse en paralelo. La biblioteca OneWire le permitirá leer lecturas de todos ellos a la vez. Con simultáneo un gran número Al conectar sensores, debe agregar resistencias adicionales de 100 o 120 ohmios entre el pin de datos del sensor DS18B20 y el bus de datos del Arduino.

Conclusiones

Conectar sensores a Arduino es la transformación de un robot algorítmico controlado automáticamente o modo manual, V. entorno completo interacción de dispositivos y circuitos con el medio ambiente. No lo olvide: esta no es una panacea para todos los males. Y no el producto final de alta tecnología ni la aplicación final. Arduino es un complejo de hardware y soluciones de software que ayudará:

  • dominar los sistemas de algoritmización para ingenieros novatos;
  • dominar habilidades básicas de diseño;
  • aprender a programar.

Independientemente de tu nivel de formación, de tus conocimientos, siempre podrás elegir tareas dentro de tus capacidades. Puede crear una solución sencilla para automatizar cualquier tarea sencilla sin tener que soldarse con un escolar; O puede establecer una tarea global que requiera, además de conocimiento y lógica, la capacidad de soldar de manera eficiente y dibujar y leer dibujos correctamente. Y las comunidades activas, foros y bases de conocimientos sobre el sistema Arduino ayudarán a resolver casi cualquier problema.




Arriba