Un
invernadero está controlado por tres sensores de temperatura (T1,T2 y
T3). Los valores máximos son tales que T1< 25º, T2 < 30º y T3
< 35º, tener en cuenta siempre se cumple que T1
➢ Por debajo de T1= 25º, no se activa ningún ventilador.
➢ Para T1 > 25º y T2 < 30º, se activa el ventilador pequeño (V1)
➢ Para T2 > 30º y T3 < 35º, se activa el ventilador grande (V2)
➢ Para T3 > 35º, se activan los dos ventiladores.
- Dibujar el circuito correspondiente.
- Realizar el algoritmo.
- Realizar el programa para Arduino.
/*
MODO DE CONEXIÓN DEL SENSOR
Conectamos el pin 1 que corresponde a la alimentación del sensor con los 5V del Arduino
Conectamos el pin 2 que corresponde al pin de datos del sensor con cualquier pin analógico del Arduino
Conectamos el pin 3 que corresponde al pin de masa (GND) del sensor con el pin GND del Arduino
*/
# define sensor1 5 //Pin analógico A5 del Arduino donde conectaremos el pin de datos del sensor TMP36
# define sensor2 4
# define sensor3 3
# define pinInterruptor 2
# define motor1 13
#define motor2 12
int estadoInterruptor;
float T1, T2,T3;
void setup()
{
Serial.begin(9600); //Iniciamos comunicación serie con el Arduino para ver los resultados del sensor
//a través de la consola serie del IDE de Arduino
}
void loop()
{
estadoInterruptor=digitalRead(pinInterruptor);
if(estadoInterruptor == 1)
{
T1=leerSensorDeTemperatura(sensor1);
T2=leerSensorDeTemperatura(sensor2);
T3=leerSensorDeTemperatura(sensor3);
if (T1<25 br=""> {
T1=leerSensorDeTemperatura(sensor1);
T2=leerSensorDeTemperatura(sensor2);
T3=leerSensorDeTemperatura(sensor3);
}
else if (T1>25 && T2<30 br=""> {
digitalWrite(motor1,HIGH);
digitalWrite(motor2,LOW);
}
else if (T2>30 && T3<35 br=""> {
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH);
}
else if (T3>35)
{
digitalWrite(motor1,HIGH);
digitalWrite(motor2,HIGH);
}
else
{
digitalWrite(motor1,LOW);
digitalWrite(motor2,LOW);
}
//Mostramos mensaje con valores actuales de temperatura
Serial.print("Medidas actuales\n");
Serial.print("Sensor 1: ");
Serial.print(T1);
Serial.print("\n\n");
Serial.print("Sensor 2: ");
Serial.print(T2);
Serial.print("\n\n");
Serial.print("Sensor 3: ");
Serial.print(T3);
Serial.print("\n\n");
Serial.print("\n\n");
delay(1000); //Usamos un retardo de 2 segundos entre lectura y lectura
}
else
{
Serial.print("Interruptor sin activar ");
Serial.print("\n\n");
}
}
float leerSensorDeTemperatura(int sensor)
{
float voltaje, gradosC; //Declaramos estas variables tipo float para guardar los valores de lectura
//del sensor, así como las conversiones a realizar para convertir a grados
voltaje = analogRead(sensor) * 0.004882814; //centígrados y a grados Fahrenheit
gradosC = (voltaje - 0.5) * 100.0; //Gracias a esta fórmula que viene en el datasheet del sensor podemos convertir
//el valor del voltaje a grados centigrados
return(gradosC);
}35>30>25>
MODO DE CONEXIÓN DEL SENSOR
Conectamos el pin 1 que corresponde a la alimentación del sensor con los 5V del Arduino
Conectamos el pin 2 que corresponde al pin de datos del sensor con cualquier pin analógico del Arduino
Conectamos el pin 3 que corresponde al pin de masa (GND) del sensor con el pin GND del Arduino
*/
# define sensor1 5 //Pin analógico A5 del Arduino donde conectaremos el pin de datos del sensor TMP36
# define sensor2 4
# define sensor3 3
# define pinInterruptor 2
# define motor1 13
#define motor2 12
int estadoInterruptor;
float T1, T2,T3;
void setup()
{
Serial.begin(9600); //Iniciamos comunicación serie con el Arduino para ver los resultados del sensor
//a través de la consola serie del IDE de Arduino
}
void loop()
{
estadoInterruptor=digitalRead(pinInterruptor);
if(estadoInterruptor == 1)
{
T1=leerSensorDeTemperatura(sensor1);
T2=leerSensorDeTemperatura(sensor2);
T3=leerSensorDeTemperatura(sensor3);
if (T1<25 br=""> {
T1=leerSensorDeTemperatura(sensor1);
T2=leerSensorDeTemperatura(sensor2);
T3=leerSensorDeTemperatura(sensor3);
}
else if (T1>25 && T2<30 br=""> {
digitalWrite(motor1,HIGH);
digitalWrite(motor2,LOW);
}
else if (T2>30 && T3<35 br=""> {
digitalWrite(motor1,LOW);
digitalWrite(motor2,HIGH);
}
else if (T3>35)
{
digitalWrite(motor1,HIGH);
digitalWrite(motor2,HIGH);
}
else
{
digitalWrite(motor1,LOW);
digitalWrite(motor2,LOW);
}
//Mostramos mensaje con valores actuales de temperatura
Serial.print("Medidas actuales\n");
Serial.print("Sensor 1: ");
Serial.print(T1);
Serial.print("\n\n");
Serial.print("Sensor 2: ");
Serial.print(T2);
Serial.print("\n\n");
Serial.print("Sensor 3: ");
Serial.print(T3);
Serial.print("\n\n");
Serial.print("\n\n");
delay(1000); //Usamos un retardo de 2 segundos entre lectura y lectura
}
else
{
Serial.print("Interruptor sin activar ");
Serial.print("\n\n");
}
}
float leerSensorDeTemperatura(int sensor)
{
float voltaje, gradosC; //Declaramos estas variables tipo float para guardar los valores de lectura
//del sensor, así como las conversiones a realizar para convertir a grados
voltaje = analogRead(sensor) * 0.004882814; //centígrados y a grados Fahrenheit
gradosC = (voltaje - 0.5) * 100.0; //Gracias a esta fórmula que viene en el datasheet del sensor podemos convertir
//el valor del voltaje a grados centigrados
return(gradosC);
}35>30>25>
No hay comentarios:
Publicar un comentario