🛁 ¡Demasiado calor! ¡Demasiado frío! Sistema control de temperatura

¡Demasiado calor! ¡Demasiado frío! Con este tutorial podrás controlar la temperatura de tu ducha

Sistema de control de temperatura que puede usarse para la ducha o para mezclar dos líquidos diferentes sin contacto físico.

 

Componentes y suministros

ard nano
arduino nano r3
×1
12002 04
Protoboard (genérico)
×1
4767613
Controlador MOSFET, lado bajo
×2
Mfr 25frf52 10k sml
resistencia de 10k ohmios
×2
Fabricante 25frf52 100r pequeño
resistencia de 100 ohmios
×2
Kemet c320c104k5r5ta imagen
condensador de 100nF
×2
Sensor infrarrojo de proximidad
×2
Bomba de agua
×2

Aplicaciones y servicios en línea

idea web
IDE de Arduino

Acerca de este proyecto

El concurso “The COVID-19 Detect & Protect Challenge” es una oportunidad muy importante para hacer algo útil en esta terrible situación.

Introducción

Lo que quería crear era un sistema que pudiera mezclar dos fluidos diferentes variando la cantidad relativa de uno a otro simplemente acercándose a un sensor de proximidad infrarrojo, sin tener que tocar físicamente ningún botón o interruptor.

Sabemos que el COVID 19 puede permanecer en las superficies unas horas. Si utilizamos dispositivos que se puedan controlar sin ningún contacto físico, podemos evitar la probabilidad de infectarnos.

 

Este circuito se puede adaptar fácilmente a cualquier situación en la que se necesite un botón de control, por ejemplo, en ascensores, máquinas herramienta, teclados de cajeros automáticos, etc.

Como docente, aproveché para utilizar una tecnología muy útil, la modulación PWM, para regular la velocidad de dos motores eléctricos, en este caso, dos pequeñas bombas hidráulicas utilizadas en acuarios.

El circuito que hice aplica tecnología sin contacto para controlar la distribución de dos fluidos. Podría usarse para controlar la temperatura de una ducha sin tener que tocar una palanca o un botón.

El circuito

Para lograr este proyecto utilicé muy pocos componentes electrónicos y unas cuantas decenas de líneas de código.

El cerebro consta de un Arduino Nano que gestiona los sensores de entrada y acciona un zumbador y dos bombas.

Como sensor de proximidad utilicé un sensor de proximidad IR muy fácil de usar. Se compone de un par de LED, un transmisor y un receptor que pueden detectar obstáculos a unos pocos centímetros de distancia. Está equipado con 3 terminales, Vcc, GND y 0UTPUT.

 

El LED del transmisor se ilumina con luz infrarroja, invisible para el ojo humano, y cuando hay un obstáculo cerca del sensor, refleja parcialmente la luz infrarroja, que es detectada por el sensor infrarrojo y activa un comparador, llevando la salida a «ALTO». estado.

El Arduino Nano realiza la tarea de verificar el estado de los sensores (CALIENTE y FRÍO) cada ciclo de ejecución y realiza estas operaciones:

  • Si hay un obstáculo cerca del sensor HOT, por ejemplo un dedo, aumenta el ancho de la onda cuadrada de salida, aumentando así el caudal de la bomba de agua caliente;
  • Si hay un obstáculo cerca del sensor de FRÍO, por ejemplo un dedo, el ancho de la onda cuadrada en la salida disminuye, por lo que disminuye el caudal de la bomba de agua caliente; La bomba que gestiona el agua fría tiene un comportamiento complementario al del agua caliente: tendrá el máximo caudal de agua cuando el agua caliente esté al mínimo y viceversa. De esta forma, la cantidad total de agua permanece casi constante en la salida.
  • Cuando los dos sensores detectan un obstáculo, el caudal de agua de las dos bombas se reinicia, «cerrando el grifo».

 

PWM (modulación de ancho de pulso)

La modulación por ancho de pulso es una modulación digital en la que el ancho de una onda cuadrada de salida (señal modulada por PWM) es proporcional a la amplitud de la señal de entrada (señal de modulación).

 

En la práctica, la señal digital de salida siempre tendrá el mismo período pero un ciclo de trabajo que depende de la amplitud de la señal de entrada. Esta modulación es muy sencilla de conseguir con un circuito electrónico y Arduino simplemente la consigue con una línea de código.

Es una modulación utilizada para variar la potencia disipada por cargas resistivas o la velocidad de motores eléctricos.

El modulador Arduino Nano PWM tiene una resolución de 256 niveles, pero solo puede entregar unos pocos mA y, por lo tanto, solo puede usarse para dispositivos que absorben intensidades de corriente bajas, por ejemplo, para variar el brillo de un LED.

Por esta razón, como necesitamos manejar una carga con mayor consumo de corriente y además una carga inductiva, utilizamos una pequeña etapa de controlador alimentada por una fuente de alimentación externa de 5V, para evitar sobrecargar el Arduino Nano, y que utiliza un MOSFET de potencia como el dispositivo activo.

 

codificado

codificadoarduino
#define HOT 2         // HOT SENSOR PIN
#define COLD 3        // COLD SENSOR PIN
#define HOT_pin 6    //HOT WATER MOTOR PIN
#define COLD_pin 5   //COLD WATER MOTOR PIN
#define BUZZER_pin 9  // BUZZER PIN

int WATER = LOW;
int detectionHOT = HIGH;    // NO USER
int detectionCOLD = HIGH;    // NO USER
int TEMPERATURE = 0;    //TEMPERATURE BETWEEN HOT AND COLD

void off(){
    analogWrite(HOT_pin, 0);       //PWM HOT MOTOR
    analogWrite(COLD_pin,0);   //PWM COLD MOTOR
    delay(1500); 
}

void setup() {
  Serial.begin(9600);   
  pinMode(HOT, INPUT); 
  pinMode(COLD, INPUT);
  pinMode(HOT_pin, OUTPUT);
  pinMode(COLD_pin, OUTPUT);
  pinMode(BUZZER_pin, OUTPUT);
  }
  
void loop() {  
  digitalWrite(BUZZER_pin, LOW);
  detectionHOT = digitalRead(HOT);
  detectionCOLD = digitalRead(COLD);

  if(detectionHOT == LOW and detectionCOLD == LOW){
    off();   //no water 
  }
  else {
    if(detectionHOT == HIGH and detectionCOLD == HIGH){
      return; 
    }
  if(detectionHOT == LOW){
    Serial.print("HOT WATER!\n");
    if(TEMPERATURE < 255){
      if (TEMPERATURE + 32 > 255) {
        TEMPERATURE = 255;
      }
      else{
        TEMPERATURE = TEMPERATURE + 32;
      }
    }
  }
    if(detectionCOLD == LOW){
    Serial.print("COLD WATER!\n");  
    if(TEMPERATURE > 0){
      if (TEMPERATURE - 32 < 0){
        TEMPERATURE = 0;
      }
      else {
        TEMPERATURE = TEMPERATURE - 32;
      }
    }
  }
  if(TEMPERATURE == 0 or TEMPERATURE == 255){
    analogWrite(BUZZER_pin, 100);
    Serial.print("\nBUZZER");
  }
  Serial.print("\nTemperature = ");
  Serial.print(TEMPERATURE);
  analogWrite(HOT_pin,TEMPERATURE);       //PWM HOT MOTOR
  analogWrite(COLD_pin,255-TEMPERATURE);   //PWM COLD MOTOR
  delay(1000);    // in ms
  }
}

diagramas

Circuito
Descargar
Ejemplo de implementación con un modelo
Fzz bb ynyotankct
Conductor
Descargar
Cómo conducir una bomba eléctrica
controlador de motor dc fwclfcodri

comentarios

Fuente Arduino.cc