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