13 jul 2014

VENTILADOR AUTOMÁTICO CON SENSOR DE TEMPERATURA

Con esta práctica vamos a implementar un sistema de ventilación automático donde activaremos el motor de un supuesto ventilador cuando la temperatura medida por un sensor (en este caso el TMP36) supere una determinada temperatura, y todo ello lo monitorizaremos a través del "Monitor Serial".
Vamos a trabajar cuatro bloques que son muy importantes y típicos en un sistema de control automático, como son:
1. Un sensor o transductor con la circuitería necesaria, que será la entrada del sistema.
2. Un actuador o dispositivo de salida, con la circuitería necesaria.
3. El procesamiento o lógica de control que ejecutará la placa ARDUINO.
4. La monitorización de la información.


MATERIAL NECESARIO

1 – Tarjeta ARDUINO UNO
1 – Cable USB para Arduino
1 – Placa Protoboard
1 – Sensor de temperatura TMP36 (ver datasheet)
1 – Transistor MOSFET IRF520 (ver datasheet)
1 – Diodo 1N4007
1 – Motor DC

Para conectar los dispositivos de entrada o salida  a la placa existen unas configuraciones típicas según el dispositivo y la placa. En nuestro caso hemos utilizado para el sensor la propuesta por el fabricante:


y para el actuador:



CONEXIONADO EN PLACA PROTOBOARD


ESQUEMA ELÉCTRICO


CÓDIGO

/*
  En esta práctica vamos a implementar un sistema automático de
  ventilación que active un motor (ventilador) cuando lleguemos 
  a una determinada temperatura (ésta la mediremos con un sensor
  de temperatura, en este caso el TMP36
 */


const int sensorPin = A0; //conectamos el sensor a la entrada analógica A0
const int motorPin = 9; //conectamos el motor a la salida PWM 9

void setup()
  {
  // abre la comunicación serial para mostrarla por el monitor
  Serial.begin(9600);
  pinMode(motorPin,OUTPUT); //definimos el pin 9 como SALIDA
  digitalWrite(motorPin,LOW); //hacemos que el motor este apagado por defecto
  }

void loop(){
  // leemos el valor del sensor en la entrada analógica A0 
  // y lo almacenamos en la variable sensorVal
  int sensorVal = analogRead(sensorPin);

  // Muestra el valor del sensor por el monitor
  Serial.print("Valor sensor: ");
  Serial.print(sensorVal); 

  // convertimos la señal del sensor con el DAC interno de cada entrada analógica
  float voltage = (sensorVal/1024.0) * 5.0;
  // 1024 porque es la resolución de la entrada del DAC
  // 5 porque es la tensión a la que está alimentado el sensor
  // Muestra la medida en voltios por el monitor
  Serial.print(", Voltios: ");
  Serial.print(voltage);

  // convierte el voltaje a temperatura en ºC
  // el sensor da 10 mV por grado
  // el datasheet dice que hay 500 mV de offset en la lectura (a corregir)
  // Muestra la medida en ºC
  Serial.print(", grados C: "); 
  float temperature = (voltage - .5) * 100;
  Serial.println(temperature);
  if(temperature>30)//comparamos la Tª con la de referencia
  {
    digitalWrite(motorPin,HIGH);//enciende ventilador
  }
  else
  {
    digitalWrite(motorPin,LOW);//apaga ventilador
  }
  delay(1000);//hace una lectura del sensor cada segundo
}

VÍDEOS DEMOSTRATIVOS

En el siguiente vídeo se puede observar cómo funciona el sistema Al tocar el sensor de temperatura con fuerza, su temperatura se eleva con nuestra temperatura corporal, y el motor (ventilador) se activa. Éste se desactiva al retirar los dedos y empezar a enfriarse el sensor.



Por otra parte, a través del "Monitor Serial" podemos ir visualizando en tiempo real el valor del sensor, los voltios correspondientes y la temperatura (como se aprecia en la siguiente figura):


En el siguiente vídeo se aprecia como van variando los parámetros que se visualizan en el "Monitor Serial" cuando tocamos el sensor con los dedos, y cómo vuelve a estabilizarse al dejar de tocarlo.













No hay comentarios:

Publicar un comentario