lunes, 17 de junio de 2024

 SOFTWARE UTILIZADO ARDUINO IDE 2.3.2 | LENGUAJE C++



SENSOR MQ 135


El MQ135 es un sensor de calidad del aire que permite detectar algunos gases peligrosos como Amoniaco, Dióxido de Nitrógeno, Alcohol, Benzeno, Dióxido y Monóxido de carbono. El sensor puede detectar concentraciones de gas entre 10 y 1000 ppm y es de utilidad para detección de gases nocivos para la salud. Partes por millón (ppm) es una unidad de medida con la que se mide la concentración. Determina un rango de tolerancia. Se refiere a la cantidad de unidades de una determinada sustancia (agente, etc.) que hay por cada millón de unidades del conjunto.

Conexiones:

  1. Pin VCC del sensor: Conectarlo a los 5V de la placa Arduino.

  2. Pin GND del sensor: Conectarlo a la tierra (GND) de la placa Arduino.

  3. Pin A0 del sensor: Conectarlo al pin analógico A0 de la placa Arduino.

  4. Pin D0 del sensor: Este pin no se utiliza en la configuración básica. Se puede conectar a un pin digital de la placa Arduino si se desea utilizar la funcionalidad de salida digital del sensor.

Código:

#include <Arduino.h>


const int sensorPin = A0; // Pin analógico al que se conecta el sensor MQ135


void setup() {

  Serial.begin(9600);

}


void loop() {

  int sensorValue = analogRead(sensorPin); // Leer el valor analógico del sensor

  float voltage = sensorValue * (5.0 / 1023.0); // Convertir el valor analógico a voltaje

  float ppm = 232.9 * pow(voltage, -2.327); // Calcular la concentración de gas en ppm


  Serial.print("Valor sensor: ");

  Serial.print(sensorValue);

  Serial.print(" Voltaje: ");

  Serial.print(voltage);

  Serial.print(" ppm: ");

  Serial.println(ppm);


  delay(2000); // Retardo de 2 segundos

}


Explicación del código:

  • La variable sensorPin se define para almacenar el pin analógico al que se conecta el sensor MQ135.

  • En la función setup(), se inicializa la comunicación serial a 9600 baudios.

  • En la función loop(), se lee el valor analógico del sensor MQ135 utilizando la función analogRead().

  • El valor analógico se convierte a voltaje utilizando la fórmula voltage = sensorValue * (5.0 / 1023.0).

  • La concentración de gas en ppm se calcula utilizando la ecuación ppm = 232.9 * pow(voltage, -2.327).

  • Los valores del sensor, el voltaje y la concentración de gas en ppm se imprimen en la consola serial.

  • La función delay(2000) introduce un retardo de 2 segundos entre cada lectura del sensor.

Aclaraciones:

  • Este código es un ejemplo básico y puede modificarse para adaptarse a las necesidades específicas de su proyecto.

  • La ecuación utilizada para calcular la concentración de gas en ppm es una aproximación y puede variar según el sensor específico y las condiciones ambientales.

  • El sensor MQ135 requiere un tiempo de calentamiento de aproximadamente 2 minutos antes de poder proporcionar lecturas precisas.

  • El sensor MQ135 es sensible a la humedad y la temperatura, por lo que no se recomienda su uso en entornos hostiles.

  • Fuentes:


Interpretación de la lectura del sensor MQ135:

 

Valor sensor: 177

Este valor representa la lectura analógica bruta obtenida del sensor MQ135. Por sí solo, este valor no tiene un significado específico y debe ser convertido a voltaje o a concentración de gas para poder interpretarlo.

Voltaje: 0.87 V

Este valor representa el voltaje medido en el pin A0 de la placa Arduino. Se obtiene al convertir el valor analógico bruto a voltaje utilizando la siguiente fórmula:

Voltaje = Valor sensor * (5.0 V / 1023.0)

En este caso, la conversión da como resultado 0.87 V.

ppm: 326.30

Este valor representa la concentración estimada de gas en partes por millón (ppm) calculada a partir del voltaje medido. La ecuación utilizada para calcular la concentración de gas es una aproximación y puede variar según el sensor específico y las condiciones ambientales. En este caso, la ecuación utilizada ha dado como resultado una concentración de 326.30 ppm.

Interpretación general:

Basándonos en los valores proporcionados, podemos concluir que el sensor MQ135 ha detectado una concentración moderada de gas. El valor exacto de la concentración dependerá del tipo de gas que se esté midiendo y de la calibración del sensor.

Recomendaciones:

  • Es importante tener en cuenta que la lectura del sensor MQ135 es solo una estimación y que la precisión puede verse afectada por diversos factores, como la humedad, la temperatura y la interferencia de otros gases.

  • Para obtener una medición más precisa, se recomienda calibrar el sensor MQ135 con un gas de referencia conocido.

  • Si se desea utilizar el sensor MQ135 para la detección de gases peligrosos, es importante implementar un sistema de alarma o control adecuado.






SENSOR BMP 180 


ACLARACIÓN: Por alguna razón que no logré identificar este sensor mide mal la temperatura, pero mide bien la presión atmosférica. Aunque es un sensor de presión barométrica, también la temperatura. La lectura de la presión se realiza en hectopascales hPa en este caso, pero con un barómetro se realiza en milibares. La presión atmosférica y la presión barométrica se utilizan como sinónimos pero no representan lo mismo. Los hectopascales (hPa) son una unidad de medida de presión utilizada comúnmente en meteorología y otras disciplinas científicas. Un hectopascal es igual a 100 pascales (Pa). La presión atmosférica estándar al nivel del mar es de aproximadamente 1013.25 hPa o 1013.25 milibares (mb). Tanto los milibares como los hectopascales se utilizan para medir la presión barométrica o atmosférica.


Conexiones:

  1. Pin VIN del sensor: Conectarlo a los 3.3V de la placa Arduino.

  2. Pin GND del sensor: Conectarlo a la tierra (GND) de la placa Arduino.

  3. Pin SCL del sensor: Conectarlo al pin A5 (SCL) de la placa Arduino.

  4. Pin SDA del sensor: Conectarlo al pin A4 (SDA) de la placa Arduino.



Código:


#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BMP085_U.h>


Adafruit_BMP085_Unified bmp;


void setup() {

  Serial.begin(9600);

  if (!bmp.begin()) {

    Serial.println(F("Error al inicializar el sensor BMP180."));

    while (1);

  }

}


void loop() {

  sensors_event_t event;

  bmp.getEvent(&event);


  float temperature = event.temperature;

  float pressure = event.pressure / 100.0; // Convertir a hPa


  Serial.print(F("Temperatura: "));

  Serial.print(temperature);

  Serial.print(F(" °C, Presión: "));

  Serial.print(pressure);

  Serial.println(F(" hPa"));


  delay(2000);

}


Explicación del código:

  • La sección #include incluye las librerías necesarias para trabajar con el sensor BMP180.

  • La sección #define define las constantes SDA y SCL para los pines I2C de la placa Arduino.

  • La sección setup() se ejecuta una vez al iniciar el programa. En esta sección, se inicializa la comunicación serial y se configura el sensor BMP180.

  • La sección loop() se ejecuta repetidamente en un bucle infinito. En esta sección, se leen los valores de temperatura, presión, humedad y altitud del sensor BMP180 y se imprimen en la consola serial.

  • Las funciones bme280.readTemperature(), bme280.readPressure(), bme280.readHumidity() y bme280.readAltitude() leen los valores correspondientes del sensor.

  • La función Serial.print() imprime los valores leídos en la consola serial.

  • La función delay(2000) introduce un retardo de 2 segundos entre cada lectura del sensor.

Aclaraciones:

  • Este código es un ejemplo básico y puede modificarse para adaptarse a las necesidades específicas de su proyecto.

  • Asegúrese de conectar el sensor BMP180 correctamente a la placa Arduino:

    • Pin VIN (alimentación) a 3.3V

    • Pin GND (tierra) a GND

    • Pin SCL (reloj I2C) al pin A5 (SCL)

    • Pin SDA (datos I2C) al pin A4 (SDA)

  • El sensor BMP180 requiere un tiempo de calentamiento de aproximadamente 2 minutos antes de poder proporcionar lecturas precisas.

  • El sensor BMP180 es sensible a la humedad y la temperatura extremas, por lo que no se recomienda su uso en entornos hostiles.




SENSOR DHT 11

Es un sensor que mide temperatura y humedad. Es ideal para sistemas de medición climatológicos o para controles de temperatura y humedad. Este sensor, además, incluye un transductor interno de temperatura del tipo NTC y tiene una gran relación señal a ruido ante la interferencia. El NTC es un Coeficiente de Temperatura Negativo: puede referirse a los termistores con coeficiente de temperatura negativo. Estos dispositivos tienen una resistencia que disminuye al aumentar la temperatura. Se utilizan como sensores de temperatura y limitadores de corriente.

Conexiones:

  1. VCC del sensor: Conecte el pin VCC del sensor DHT11 al pin 5V de la placa Arduino Uno.

  2. DATA del sensor: Conecte el pin DATA del sensor DHT11 al pin de datos digital 2 de la placa Arduino Uno.

  3. GND del sensor: Conecte el pin GND del sensor DHT11 al pin GND de la placa Arduino Uno.


Resistencia pull-up (opcional): en este caso no la utilizamos

Se recomienda utilizar una resistencia pull-up de 4.7kΩ entre el pin DATA del sensor y el pin VCC del sensor para mejorar la estabilidad de la señal. Para conectar la resistencia:

  1. Conecte un extremo de la resistencia al pin VCC del sensor.

  2. Conecte el otro extremo de la resistencia al pin DATA del sensor.

Código:

#include <DHT.h>


#define DHTPIN 2 // Pin al que está conectado el sensor DHT11

#define DHTTYPE DHT11 // Tipo de sensor DHT11


DHT dht(DHTPIN, DHTTYPE);


void setup() {

  Serial.begin(9600);

  dht.begin();

}


void loop() {

  // Lectura de la humedad y temperatura

  float humidity = dht.readHumidity();

  float temperature = dht.readTemperature();


  // Verificación de errores en la lectura

  if (isnan(humidity) || isnan(temperature)) {

    Serial.println("Error al leer el sensor DHT11!");

    return;

  }


  // Impresión de los valores

  Serial.print("Humedad: ");

  Serial.print(humidity, 1);

  Serial.print("% ");

  Serial.print("Temperatura: ");

  Serial.print(temperature, 1);

  Serial.println(" °C");


  delay(2000); // Tiempo de espera entre lecturas

}


Explicación del código:

  • La biblioteca DHT.h se incluye para trabajar con el sensor DHT11.

  • Se definen constantes para el pin al que está conectado el sensor (DHTPIN) y el tipo de sensor (DHTTYPE).

  • Se crea una instancia del objeto DHT para manejar el sensor.

  • En setup(), se inicializa la comunicación serial y se inicializa el sensor DHT11.

  • En loop(), se leen la humedad y la temperatura del sensor.

  • Se verifica si hubo un error en la lectura.

  • Si no hay errores, se imprimen los valores de humedad y temperatura en la consola serial.

  • Se espera un tiempo de 2 segundos antes de realizar la siguiente lectura.

Aclaraciones:

  • Asegúrate de que la placa Arduino Uno esté alimentada con un voltaje adecuado (5V) y que la conexión a tierra esté correcta.

  • Si estás utilizando una resistencia pull-up, asegúrate de que esté conectada correctamente entre el pin DATA del sensor y el pin VCC del sensor.

  • Puedes modificar el código para mostrar la humedad y la temperatura con más decimales si lo deseas.

  • Puedes usar este código como base para crear proyectos más complejos que involucren el sensor DHT11 para medir la humedad y la temperatura del ambiente.

Fuentes:


Suscribíte

https://www.youtube.com/@jonatanmontesgobelet