Emular el funcionamiento de un sistema de climatización con Arduino UNO

Queremos emular el funcionamiento de un sistema de climatización sencillo con un microprocesador Arduino UNO en el que cuando la temperatura medida en un termistor o sensor de temperatura (entre 0 y 1024) supera un valor establecido como máximo, se activa el sistema de refrigeración.

Por otro lado, si la temperatura medida está por debajo de un valor establecido como mínimo, se activa el sistema de calefacción. Si el valor de la temperatura se encuentra entre el valor máximo y mínimo establecidos, se considerará una temperatura de confort, permaneciendo ambos sistemas desactivados.

Solamente en el caso de que ambos sistemas (calefacción y aire acond.) permanezcan desactivados, se activará un sistema de ventilación. Además, se establecerá una comunicación serie (Arduino-PC), para visualizar en el Monitor Serie (consola del ordenador) el valor convertido de la entrada analógica (entre 0 y 1024), así como el valor equivalente en voltaje en dicha entrada analógica (entre 0 y 5 V).

Nota: Dos diodos LED representarán la activación encendido y apagado desactivado, de los sistemas de calefacción y aire acondicionado. Mientras que un motor eléctrico emulara el sistema de ventilación.

Solución:

El código sería el siguiente:

  float   Vmin = 0.5; // Tensión por debajo de la cual se activa la calefacción
  float   Vmax = 4.5; // Tensión por encima de la cual se activa el aire acondicionado

void setup() {

  pinMode(9, OUTPUT);  // Pin 9 salida calefacción 
  pinMode(10, OUTPUT);  // Pin 10 salida ventilación
  pinMode(11, OUTPUT);  // Pin 11 salida aire acondicionado
  pinMode(A0, INPUT);  // Pin A0 entrada sensor temperatura

Serial.begin(9600);  // Comenzamos la comunicaci�n serie a9600 bps

}

void loop() {

long ent = analogRead(A0);   // Inicializamos A0 como valor de 16bits
  Serial.print("La lectura de la entrada analógica es ");
  Serial.println(ent);    // Mostramos el valor por pantalla

float tension = ent*5/1023 ;  // escalamos la entrada analogica a 0-5 V
  Serial.print("La lectura en valor de Tensión es ");
  Serial.print(tension);
  Serial.println("V");

//Casos

  if(tension < Vmin){
    digitalWrite(9, HIGH);  // Endendemos la calefacción
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
  }

    if(tension > Vmin && tension < Vmax){
    digitalWrite(9, LOW);  
    digitalWrite(10, HIGH);  // Endendemos la ventilación
    digitalWrite(11, LOW);
  }

  if(tension > Vmax){
    digitalWrite(9, LOW);  
    digitalWrite(10, LOW);  
    digitalWrite(11, HIGH); // Endendemos el aire acondicionado
  }

delay (500);  // retraso de x milisegundos

}

📊 Create a modern CV
Create a modern CV

Create a modern CV to impress recruiters