Está en la página 1de 17

Manual Técnico

Mecanismo medidor de
iluminación, radiación y
CO2

Integrantes:
- Pérez Contreras Carlos Giovanni
- Reyes Avelino Uzzyel Samael
- Reyes Tablas Matsuri Romario
- Salgado Morales Aldo
- Bello Estrada Oscar Daniel
- Vara Espinoza Cristopher Aleksei

Mecatrónica 4-E
Introducción y Objetivo
El proyecto a desarrollar se basa en un dispositivo portátil y maniobrable que sea
capaz de medir y mostrar información acerca de la iluminación, el CO2 del
ambiente, y que mida la radiación, utilizando múltiples sensores programados por
medio de Arduino, todo aquello se desea reunir en un aparato que contengan una
pantalla LCD donde se despliegue la información de las variables que requieran
medir, contando también con un menú selector el cual, el usuario pueda elegir
entre los tipos de variables que se integren al mecanismo y poder almacenar estos
datos por medio de una memoria SD. Se implementan sensores específicos que
detecten y manden la medición de dichas variables, y la fuente de alimentación
para los módulos y el programador. El propósito del desarrollo del proyecto es
tener un mejor control en el ambiente o de un determinado lugar, en este caso,
sobre un invernadero, donde el dispositivo actuará sobre el ambiente de este,
captando la iluminación, la calidad del aire a la que las plantas se exponen y la
radiación expuesta a estas. De esta manera se obtendrá conocimiento acerca de
la medición de ciertas variables utilizando lenguaje de programación y conocer las
especificaciones para cada medidor de variable.

Este documento dará a conocer al usuario los diferentes componentes que este
mecanismo contiene, así como las conexiones de cada uno en la tarjeta
programable Arduino, los costos de cada material y la programación llevada a
cabo para la captación y registro de datos.

Planeación

El desarrollo del proyecto comienza por el análisis de las variables a medir


solicitadas para su uso en el invernadero, las cuales eran la calidad del aire, la
cantidad de la iluminación del entorno y la radiación a la que las plantas son
expuestas. Seguido de ello, se buscan los sensores capaces de realizar estas
mediciones para desplegar los resultados en un display 16x2. Una vez
encontrados, por medio del programa Arduino, se realizan los códigos para activar
cada sensor, El de iluminación debe medir en LUX, la calidad del aire en PPM y la
radiación se mide en la longitud de onda en nm, estos datos desplegados deben
ser capaces de guardarlos en una tarjeta de memoria SD cada que el usuario
deseé guardarlos. Finalmente, todo el sistema armado debe almacenarse en una
base creada a partir de algún material accesible, permitiendo que se tenga acceso
a cada componente para efectuar su propósito. Teniendo la planeación, se
procede a conseguir los materiales adecuados para comenzar el proyecto.

Materiales y costos.

A continuación, se muestra la tabla 1.1 dando a conocer todos los materiales


conseguidos para el mecanismo, así como el precio de cada uno.

Material Costo
Modulo BH1750 $63.00 pesos

MQ135 $77.50 pesos

ML8511 $139.00 pesos

Módulo Micro SD card adaptar $64.00 Pesos

Pantalla liquida de 16x2 con adaptador $125.00 pesos


de control I2C

Push Button $1 pesos cada uno

Arduino Mega $500 pesos

Tabla 1.1 Materiales utilizados y su precio

Datos sobres los módulos empleados

La división temática en este manual de funcionamiento está hecha con el único


objetivo de tener un fácil acceso a la información y el funcionamiento del
dispositivo, por lo mismo se realizaron investigaciones sobre el funcionamiento no
solo de los sensores sino de los invernaderos para poder estandarizar una media
de valores en los cuales se podrá interpretar cada una de las medidas.
sensor BH1750 - Sensor para luz.

El módulo BH1750 es un sensor de iluminación digital para medición de flujo


luminoso (iluminancia) de la empresa Rohm Semiconductor. Posee un conversor
interno de 16-bit, por lo que entrega una salida digital en formato I2C. El BH1750
entrega la intensidad luminosa directamente en unidades Lux (Lx). El lux es la
unidad derivada del S.I. de Unidades para la iluminación o nivel de iluminación.
Equivale a un lumen /m².

- Voltaje de operación: 2.4 VDC – 3.6 VDC.

- Consumo promedio: 140uA - 199uA.

- Interfaz Digital: I2C.

- Rango y Resolución: 1 - 65535 Lux (16 bits).

- Respuesta espectral similar a la del ojo humano.

- Temperatura de operación: Desde -40 ° C hasta 85 ° C.

- Frecuencia máxima de transmisión: 400KHz.

- Rohm Semiconductor.

Sensor MQ-135 - Sensor para determinar el CO2

El Módulo MQ-135 es ideal para detectar la calidad de aire pues permite la


detección de gases nocivos en un rango máximo de 10-1000 ppm (partes por
millón). Se utiliza en equipos de control de calidad de aire en casas, edificios,
oficinas y en las industrias que manejan este tipo de gases. El sensor propiamente
se encuentra encerrado en dos capas de malla de acero inoxidable que asegura
que el elemento calentador interno no cause una explosión dado que en su
ambiente de trabajo puede haber presencia de gases inflamables, además filtra
las partículas suspendidas para que solo gases accedan a la cámara.

- Voltaje de operación: 5 V
- Corriente de operación: 150mA
- Detección de: Amoníaco (NH3), Óxidos de nitrógeno (NOx), Alcohol, Sulfuros,
Benceno (C6H6), Monóxido de carbono (CO) y humo.
- Sensibilidad:
- 10 – 300 ppm Amoníaco (NH3) y Alcohol.
- 10 – 1000 ppm Benceno.
- Consumo de potencia calorífica ≤ 800mW
- Temperatura de operación: -20°C~70°C
- Humedad de operación: <95%RH
- Tamaño: 32mm x 22mm x 24mm.
- Peso: 8 g

Sensor ML8511 - Sensor UV.

El módulo ML8511 es un sensor de luz ultravioleta (UV), entrega una señal de


voltaje analógica que depende de la cantidad de luz UV que detecta. Sensor ideal
para proyectos de monitoreo de condiciones ambientales como el índice UV,
Aplicaciones Meteorológicas, cuidado de la piel, medición industrial de nivel UV.
Debido a que detecta en el rango de longitud de onda entre 280 y 390 nm de luz, en
donde es clasificado como parte del espectro UVB (rayos ardientes) y la mayor parte
del espectro UVA (rayos bronceadores). Emite una tensión analógica que está
relacionada linealmente con la intensidad de UV medida (mW / cm2). Compatible con
cualquier microcontrolador con entradas de conversión analógica, como Arduino y
Raspberry.

Especificaciones técnicas:

● Voltaje de alimentación: 3.3V-5V DC


● Salida de voltaje analógica lineal (de 1V a 3V)
● Longitud de onda: 280-390nm
● Longitud de onda pico: 365nm
● Consumo ultrabajo de energía
● Dimensiones: 12*12 mm
Módulo Micro SD card adaptar

Módulo lector de memoria Micro SD Card diseñado para acceder a la memoria


microSD en modo SPI, por lo que las señales de control se etiquetan claramente
con los nombres de las señales en dicho bus de comunicaciones. Soporta tarjetas
microSD y micro SDHC. Incluye el chip MC74VHCT125A como circuito de
conversión de voltaje lógico para comunicarse a 3.3V o 5V. Puede ser alimentado
hasta con 5V gracias a su regulador de voltaje incluido en placa. Compatible con
Arduino y en general con cualquier microcontrolador y tarjeta de desarrollo

 Voltaje de Operación: 3.3V-5V


 Interfaz: SPI
 Cuenta con todos los pines SPI de la tarjeta SD: MOSI, MISO, SCK, CS
 Chip conversor lógico: MC74VHCT125A
 Dimensiones: 42*24 mm

Información sobre la medición de variable

Luminosidad.
El sensor de luminosidad a utilizar se trata del BH1750, su ventaja está en que
por su propia cuenta nos entrega una, medida fija en lux, gracias a esto podemos
realizar una rápida interpretación de los datos arrojados por el dispositivo.

Para obtener un correcto valor de la medida de luminosidad es necesario entender


que para el cálculo de la fotosíntesis la radiación luminosa se mide en un valor
diferente a los Lux, sino que se mide en µmol m-2 s-1 con esto se nos permitirá
realizar la conversión entre valores, la siguiente tabla ejemplifica la conversión:
Esta tabla nos permite reconocer la
conversión de lux a PPFD(µmol m-2 s-1),
siendo que para cada PPFD le
corresponden 54 lux.

El funcionamiento de este dispositivo nos permite conocer la cantidad de flujo he


intensidad luminosa que se encuentra en la zona, esto ayuda en el cálculo total de
la luz diaria integral (DLI), cuya fórmula es:

PPFD∗HORAS∗3 ´ 600
x=
1 ´ 000 ´ 000

En la siguiente tabla se muestra un ejemplo de los valores mínimos y óptimos en


algunos cultivos.

CULTIVO DLI MINIMO DLI OPTIMO


LECHUGA 12 17
COTILEDONES 12 12
FRESA 17 20
PIMIENTO 20 30
PEPINO 15 30
TOMATE 20 30

Radiación UV.
La radiación UV es la medida de radiación fuera del espectro visible, esta es una
parte importante para los procesos energéticos y morfogénicos en las plantas.
La correcta cantidad de radiación UV es importante ya que en cantidades mínimas
o excedidas esta puede matar a las plantas, por suerte su interpretación es
bastante sencilla pues contamos con tablas y valores que nos indica la media de
valores de la escala típica de la radiación UV y, gracias a estas, podremos
interpretarlas en el sensor, a esto se le conoce como factor UV y para calcularlo es
necesario conocer la altura al nivel del mar del sitio donde te encuentras y la
cantidad de nubes del cielo.

Para su cálculo se utilizará la siguiente formula:

(Valor UV ∗1.418∗PORCENTAJE DE NUBOCIDAD)


x=
25

Lo ideal es mantener la radiación UV entre moderada y alta, aunque existen


cultivos que puedan requerir baja. Una vez explicada la radiación para el
funcionamiento del dispositivo se tendrá de colocar en el modo Radiación, el cual
nos dará acceso a ambas lecturas al mismo tiempo.

Calidad del aire

El sensor propiamente se encuentra encerrado en dos capas de malla de acero


inoxidable. Dentro, se encuentra una bobina de níquel-cromo para formar el
sistema de calefacción y un revestimiento de dióxido de estaño (que es sensible a
gases combustibles) forma el sistema de detección. Una vez se calienta el dióxido
de estaño absorbe el oxígeno (del aire limpio) en su superficie, a su vez el oxígeno
atrae electrones del dióxido de estaño dificultando el flujo de corriente a través de
este. En presencia de gases la densidad de oxígeno absorbido por el sensor
disminuye liberando a los electrones permitiendo que la corriente fluya con mayor
libertad por el sensor.

Conexiones de cada componente a la tarjeta Arduino

Parte del proceso, fue establecer los pines para cada modulo utilizado y el material
externo para maniobrar dentro del sistema a implementar para la selección de la
variable a medir, a continuación, se muestra una serie de tablas mostrando cada
componente con su pin asignado del Arduino.

Pines del módulo BH1750 Pin correspondiente al Arduino

PIN VCC 5V

PIN GND GND

PIN SCL IC2 SCL

PIN SDA IC2 SDA

PIN ADDR NO SE UTILIZA

Tabla 1.2 Conexiones del sensor de intensidad luminosa al Arduino

Pines del MQ135 Pin correspondiente al Arduino

PIN DOUT NO SE UTILIZA

PIN AOUT A14

PIN VCC 5V

PIN GND GND


Tabla 1.3 conexiones del sensor de calidad del aire al Arduino

Pines del ML8511 Pin correspondiente al Arduino


PIN VIN NO SE UTILIZA
PIN 3V3 3.3V
PIN GND GND
PIN OUT A15
PIN EN EN PUENTE CON PIN 3V3
Tabla 1.4 Conexiones del sensor de radiación al Arduino

Pines del Módulo Micro SD card Pin correspondiente al Arduino


adaptar
PIN CS PIN D53
PIN SCK PIN D52
PIN MOSI PIN D51
PIN MISO PIN D50
PIN VCC 5V
PIN GND GND
Tabla 1.5 conexiones del módulo SD al Arduino

Pines del l2C y botones Pin correspondiente al Arduino


PIN GND GND
PIN VCC 5V
PIN SDA IC2 SDC
PIN SCL IC2 SCL
BOTON SELECT A0
BOTON UP A1
BOTON DOWN A2
Tabla 1.6 Conexión del adaptador del display y los botones.

Código de programación

A continuación, se adjunta el código correspondiente a todo el sistema mínimo


armado, al compilar y subir el programa al Arduino mega, el sistema planificado
funcionara pese a la propuesta de planeación inicial:

// Bibliotecas de control
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f, 16, 2);
#include <BH1750.h>
#include <SD.h>
#include <SPI.h>
#include <Wire.h>
// Declaramos componentes
BH1750 sensor;
File file;
String texto = "*";

int interfas;
int menu = 0;
int save = 0;
int saveA = 0;
int Up = A1;
int Dwn = A2;
int Select = A0;
int UV = 0;
int indice_uv = 0;
int chip = 0;
int sensorValue;
//Retorno
void(*resetSoftware)(void) = 0;
//inicia el setup
void setup() {
  // control basico del dispositivo
  lcd.init();
  lcd.backlight();
  SD.begin();
  Wire.begin();
  sensor.begin();
// presentación
  lcd.setCursor(0, 0);{
  lcd.print("Selecciona el");
  }
  lcd.setCursor(0, 1);
  lcd.print("tipo de lectura");
// inicio del modulo SD
while(!Serial){
;
}
lcd.setCursor(0, 0);
if(!SD.begin()){
lcd.setCursor(0, 1);
lcd.print("Fallo");
return;
}
lcd.setCursor(0, 1);
lcd.print("Listo");
File dataFile = SD.open("datalog.txt", FILE_WRITE); //nombre del archivo SD
dataFile.print("Datos del dispositivo:\n");
dataFile.close();
SD.remove("Analog.txt");
  lcd.clear();
  //////////////////////////////////
   
  delay(2000);
  lcd.clear();

}
//inicio dle loop
void loop() {
interfas:
while(true){
//control del menu
    if(digitalRead(Up)){
      menu++;
      if(menu >= 4){
        menu = 4;
      }
      delay(300);
   
    }
   
    if(digitalRead(Dwn)){
      menu--;
      if(menu <= 0){
        menu = 0;
      }
      delay(300);
   
    }
   
    if(digitalRead(Select)){
      lcd.clear();
      delay(300);
      break;
    }

  switch (menu){
    // interfas del menu
      case 0:
        lcd.setCursor(0,0);
        lcd.print("1 - Luz <       ");
        lcd.setCursor(0,1);
        lcd.print("2 - Rad. UV     ");
      break;
     
      case 1:
        lcd.setCursor(0,0);
        lcd.print("1 - Luz         ");
        lcd.setCursor(0,1);
        lcd.print("2 - Rad. UV <   ");
      break;
     
      case 2:
        lcd.setCursor(0,0);
        lcd.print("3 - CO2 <       ");
        lcd.setCursor(0,1);
        lcd.print("4 - Save        ");
      break;

      case 3:
        lcd.setCursor(0,0);
        lcd.print("3 - CO2        ");
        lcd.setCursor(0,1);
        lcd.print("4 - Save <     ");
     
      break;        
    }
    }
 
  switch (menu){

    case 0:
    while(true){
      //control del modulo de lux
      unsigned int lux = sensor.readLightLevel();
      lcd.setCursor(0,0);
        lcd.print("Luz:");
      lcd.setCursor(4,0);
        lcd.print(lux);
      lcd.setCursor(13,0);
        lcd.print(" lx");
        delay(500);
 if(digitalRead(Select)){
        resetSoftware();
      break;
      }
      }
        break;

    case 1:
    while(true){
      //control del modulo UV
      UV = analogRead(A15);
        delay(700);
     lcd.setCursor(0,0);
     lcd.print("Indice UV:");
     lcd.setCursor(10,0);
     lcd.print(indice_uv);
          lcd.setCursor(13,0);
     lcd.print("nm");
 if(digitalRead(Select)){
        resetSoftware();
      break;
      }
      }
        break;

        case 2:
    while(true){
      //control del modulo CO2
      lcd.clear();
      sensorValue = analogRead(14);
      lcd.setCursor(0,0);
      lcd.print("CO2:");
      lcd.setCursor(4,0);
      lcd.print(sensorValue, DEC);
      lcd.setCursor(13,0);              
      lcd.print("ppM");
      delay(1000);
 if(digitalRead(Select)){
        resetSoftware();
      break;
      }
      }
        break;
//GUARDAR
        case 3:
    while(true){
      //control del modulo SD para  este reproducimos todas las lecturas al
mismo tiempo
lcd.clear();
lcd.setCursor(0,0);
      lcd.print("Saving Data...");
lcd.setCursor(0,1);
      lcd.print("2.Seg = 1.Dato");

String dataString = "";


String dataStringB = "";
String dataStringC = "";
File dataFile = SD.open("datalog.txt", FILE_WRITE);
//////////////////////////////////////
unsigned int lux = sensor.readLightLevel();

sensorValue = digitalRead(lux);      
Serial.print("Luxes: ");
Serial.print(lux);              
Serial.print(" lx");
dataString += String(lux);

//////////////////////////////////
UV = analogRead(A15);
     Serial.print("Indice UV:");
     Serial.print(indice_uv);
     Serial.print("nm");
     dataStringC += String(indice_uv);
///////////////////////////////////

sensorValue = analogRead(14);      
Serial.print("CO2:");
Serial.print(sensorValue, DEC);              
Serial.print(" ppM");  
//codigo del guardado, solo se activa si tienes la SD conectada
dataStringB += String(sensorValue, DEC);
                   
if(dataFile){

dataFile.print("\nLux:" + dataString + " Lx\n" + "\nCO2:" + dataStringB + "


ppM\n"+ "\nUV:" + dataStringC + " nm\n");
dataFile.close();
Serial.print("\nLux:" + dataString + " Lx\n" + "CO2:" + dataStringB + " ppM\
n"+ "\nUV:" + dataStringC + " nm\n");

}
else{
Serial.print("Error");
}
delay(2000);
///////////////////////////////////////////////
 if(digitalRead(Select)){
        resetSoftware();
      break;
      }
      }
        break;
  }
  }

También podría gustarte