lunes, 23 de enero de 2023

SISTEMA DE CONTROL DE TEMPERATURA DE UN INVERNADERO

Vídeo demostrativo



 


Descripción del Proyecto

El objetivo del presente proyecto es el de controlar a través de un sensor de temperatura y humedad, las condiciones ambientales del interior de un invernadero que se mostrarán en un display y mediante un motor de corriente continúa (un ventilador) y una alarma que nos dará el aviso, se mantendrá la temperatura dentro de los límites determinados previamente.

Como entradas tenemos un sensor de temperatura y humedad, que en el esquema de Tinkerdad lo represento con un sensor de temperatura, ya que el programa no da la opción de seleccionar un único dispositivo que contenga las dos variables, que si lo contiene el paquete físico de Elegoo y como salidas, se mostrarán los valores de temperatura y humedad en la pantalla LCD, en la que se regulará la intensidad a través de un potenciómetro, se regulará la temperatura del interior del invernadero mediante un ventilador y se dará aviso del exceso de la misma con una alarma (buzzer). Como complementos se añadirán un módulo de suministro extra de energía para el tablero de circuitos y una pila de 9V.

Este proyecto podría encuadrarse dentro de la asignatura de tecnología para alumnos de 3º o 4º de la ESO.

 


Esquema de conexiones con Tinkerdad





Esquema del circuito con Tinkerdad




 

Código de Programación

 

#include <LiquidCrystal.h>

#include <dht_nonblocking.h>

#define DHT_SENSOR_TYPE DHT_TYPE_11

#define ENABLE 5

#define DIRA 3

#define DIRB 4

 

int i;

 

static const int DHT_SENSOR_PIN = 2;

DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );

 

// room temperature in Celsius

const float baselineTemp = 24.0;

 

int tempPin = 0;

 

//                BS  E  D4 D5  D6 D7

LiquidCrystal lcd(789101112);

 

void setup() {

  lcd.begin(162);

 

  //---set pin direction

  pinMode(ENABLE,OUTPUT);

  pinMode(DIRA,OUTPUT);

  pinMode(DIRB,OUTPUT);

 

}

 

 /* Poll for a measurement, keeping the state machine alive.  Returns

 true if a measurement is available */

static bool measure_environment( float *temperaturefloat *humidity )

{

  static unsigned long measurement_timestamp = millis( );

 

  /* Measure once every three seconds. */

  if( millis( ) - measurement_timestamp > 3000ul )

  {

    if( dht_sensor.measure( temperature, humidity ) == true )

    {

      measurement_timestamp = millis( );

      return( true );

    }

  }

 

  return( false );

}

 

void loop() {

  float temperature;

  float humidity;

 

  /* Measure temperature and humidity.  If the functions returns

     true, then a measurement is available. */

  if( measure_environment( &temperature, &humidity ) == true )

  {

    lcd.print( "T = " );

    lcd.print( temperature, 1 );

    lcd.print( " deg. C " );

    lcd.setCursor(01);

    lcd.print( "H = " );

    lcd.print( humidity, 1 );

    lcd.print( " % " );

    

  } // if the temperature exceeds the set temperature

  if (temperature >= baselineTemp) {

    tone(62000500);

    delay(500);

    tone(65000500);

    delay(500);

    tone(67000500);

    delay(500);

    tone(69000500);

    delay(1000);

    tone(67000500);

    delay(500);

    tone(65000500);

    delay(500);

    tone(62000500);

    delay(500);

    digitalWrite(ENABLE,HIGH);// Encender motor-ventilador si Tª>Temperatura base

    digitalWrite(DIRA,HIGH);//one way

    digitalWrite(DIRB,LOW);    

    delay(3000);  

 

  }

  // if the temperature not exceeds the set temperature

  if (temperature < baselineTemp ) {

    digitalWrite(ENABLE, LOW);// Apagar motor-ventilador

   

  }

 

}

 


 

Datos


Alumno: Aitor Ondarra Vega

Asignatura: Innovación Docente de la Especialidad de Tecnología.

Master: Máster Universitario en Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas. 

Centro: Universidad de Salamanca.

Curso: 2022/2023.

 





















 

No hay comentarios:

Publicar un comentario