Cómo hacer una rejilla motorizada con control de temperatura

26

En este post vamos a explicar cómo hacer una rejilla motorizada con control de temperatura de forma económica (20€), así podrás independizar zonas en sistemas centralizados de climatización por aire. Para el control de la temperatura utilizaremos el popular Arduino Uno y la parte mecánica la haremos con una impresora 3D (si no tienes una puedes encargar la impresión en cualquier sitio que tengan este servicio). Como era de esperar hemos bautizado a este engendro como NergiZone.

Nergizone, rejilla motorizada

El sistema sería similar al los controles comerciales de los que hemos hablado aquí, con la ventaja de que el NergiZone es mucho más económico, configurable y además 100% autónomo ya que se alimenta con baterías de litio y no necesita cableado externo.

¿Cómo funciona Nergizone?

El sistema de compone de dos partes, la rejilla motorizada y la central de control, ambas interconectadas pero sin necesidad de alimentación exterior ni cableado externo.

La sonda de temperatura que veis en las imágenes tiene varias opciones de colocación:

Factura luz
  • Orificio en el frontal de la rejilla: es el lugar más sencillo pero la lectura de temperatura se verá algo afectada por el caudal de aire caliente/frío que sale de la rejilla, aunque con el sistema de control proporcional que lleva incorporado no debería de ser muy problemático.
  • Conducto de retorno: si el sistema tiene un conducto/rejilla de retorno y podemos meter ahí la sonda sería ideal, ya que tendríamos una medida real de la temperatura ambiente.
  • Ambiente: otra opción es buscarse la vida posicionando la sonda directamente en el ambiente en una zona que no se vea afectada por el chorro de aire de la rejilla.

Nergizone 2

Una vez posicionada la sonda y sustituida la rejilla de impulsión de tu sistema de climatización por la NergiZone tendrás el siguiente control en base a la temperatura leída por la sonda:

  • Tª ambiente > consigna+0,5ºC: Compuerta cerrada completamente
  • Consigna – 0,5ºC < Tª ambiente < consigna+0,5ºC: Compuerta abierta parcialmente (ver línea 33 del código) en función de la diferencia entre la temperatura ambiente y la de consigna, de esta forma el sistema buscará un punto de equilibrio donde la potencia térmica que aporte el caudal de aire se iguale con las pérdidas de la zona.
  • Tª ambiente < consigna+0,5ºC: Compuerta abierta completamente

Este es el funcionamiento para calefacción, para refrigeración habría que darle la vuelta a los “mayor que” y “menor que” del código. También es posible implementar un interruptor que haga este cambio, o hacerlo en base a la temperatura del aire impulsado (con otra sonda), pero esto lo dejo para los Nergizos de la primera fila.

Ejemplo (calefacción): Ponemos una consigna de 22ºC (en el código) y el sistema detecta 19ºC en el ambiente, por lo tanto abre completamente la compuerta y la temperatura ambiente empieza a subir, cuando alcanzamos los 21,5ºC la compuerta empieza a cerrar parcialmente y al llegar al entorno de los 22ºC habría un punto donde se equilibraría el sistema con cierto porcentaje de compuerta abierta. Si Fulgencio abre una ventana y entra aire frío, el sistema vuelve a abrir completamente la compuerta hasta equilibrarse de nuevo con la consigna configurada.

 

Vídeo NergiZone

Aquí os dejo un pequeño vídeo de la rejilla en funcionamiento para que os hagáis una idea de como queda el montaje.

Si nos sigues en YouTube o le das al “dedito arriba” nos ayudas bastante 🙂

Montaje de la Nergizone

El primer paso es imprimir rejilla y compuerta en una impresora 3D, si no tienes una puedes usar un servicio de impresión 3D online o buscar por ejemplo en Wallapop/Milanuncios que siempre encontrarás gente de tu ciudad que te imprimirá lo que necesites por un módico precio, aunque si eres un Nergizo “de verdad” deberías montarte una impresora 3D como hemos hecho en este post.

No es imprescindible imprimir la caja donde va el Arduino y las baterías, puede hacerse perfectamente con una caja de empalmes o similar.

Aquí os dejo los archivos .stl para imprimir la rejilla y la caja:

Nergizone en FreeCad

Ahora solo queda unir los componentes como se muestra en este esquema:

Esquema Nergizone

La alimentación eléctrica la hemos hecho con dos baterías 18650 en serie, encontrarás el soporte para las baterías en la lista de ingredientes del final. Si no quieres usar baterías y prefieres enchufar el sistema a la red eléctrica puedes usar una fuente de alimentación, pero no lo hagas con una pila de 9V ya que no dan corriente suficiente para mover el servo correctamente.

Cargas termicas

 

Código NergiZone

Este sería el código para implementar en el Arduino Uno:

// Nergizone, la rejilla motorizada de Nergiza.com
 
#include <Servo.h>
#include <OneWire.h>
 
int servoPin = 6;
const int chipSelect = 10;
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
OneWire ds(DS18S20_Pin); // on digital pin 2
 
Servo servo;  
 
int servoAngle = 0;   // servo position in degrees
float consigna=22;    // consigna de temperatura
float apertura;
 
 
 
void setup()
{
  Serial.begin(9600);  
  servo.attach(servoPin);
}
 
 
void loop()
 
 
{
 
float temperature = getTemp();
 
apertura = (90*(temperature(consigna+0.5)))+180; // calcula el grado de apertura
 
 
if (temperature>(consigna+0.5)) {
servo.write(180);      // cierra
  delay(1000); // tiempo entre lecturas
 
}
 
   if (temperature<(consigna0.5)) {
    servo.write(90);   // abre
    delay(1000); // tiempo entre lecturas
     }
        
if ((temperature>(consigna0.5)) && (temperature<(consigna+0.5)))
 
          {
           servo.write(apertura);   // abre en punto intermedio
           delay(1000); // tiempo entre lecturas
            }
 
}
 
 
 
float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius
 
byte data[12];
byte addr[8];
 
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
   ds.reset_search();
return 1000;
}
 
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.print(“CRC no valido!\n”);
return 1000;
}
 
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print(“Dispositivo no reconocido”);
return 1000;
}
 
ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end
 
byte present = ds.reset();
ds.select(addr);  
ds.write(0xBE); // Read Scratchpad
 
 
for (int i = 0; i < 9; i++) { // we need 9 bytes
  data[i] = ds.read();
}
 
ds.reset_search();
 
byte MSB = data[1];
byte LSB = data[0];
float CONT_REMAIN = data[6];
float CONT_PER_C = data[7];
 
float tempRead = ((MSB << 8) | LSB); //using two’s compliment
 
float TemperatureSum = tempRead/16;
 
return TemperatureSum;
 
}

 

¿Cuánto cuesta hacer la Nergizone?

Estos son los pesos de las piezas impresas en 3D y el coste total del plástico:

  • Rejilla – 89g
  • Compuerta – 28g
  • Caja – 29g
  • Tapa caja – 69g

Total: 215g / 4,3€ (0,02€/g)

El consumo eléctrico para imprimir todo esto ha sido de 450Wh, lo que serían unos 0,07€ con una tarifa 2.0A normal.

NergiZone

Los principales materiales necesarios para el montaje son:

26 Comentarios

  1. El código seria muchísimo mas sencillo y fácil de entender usando la librería DallasTemperature, y para ir a por nota está la librería PID que citando la Wikipedia:

    “Un PID (Proporcional Integral Derivativo) es un mecanismo de control por realimentación que calcula la desviación o error entre un valor medido y el valor que se quiere obtener, para aplicar una acción correctora que ajuste el proceso.”

    Thumb up 0 Thumb down 0

    • Tienes razón, es lo que tiene reciclar código de otros proyectos XDD.

      Lo del PID lo consideré pero me pareció liar demasiado el tema ya que luego hay que sintonizar parámetros y no es sencillo, además el margen de temperatura donde regula es muy pequeño (1K) y no creo que haya mucha diferencia entre un control lineal y un control PID.

      Gracias por las recomendaciones!!

      Thumb up 0 Thumb down 0

  2. Buen invento.
    Lo que me ha impresionado ha sido el precio del arduino, no sabia que eran tan baratos, yo cuando le compre me costo 20€.

    De todas formas me parece un poco complejo.
    Impresora 3d, arduino, cables sensor, escribir codigo, recargar las baterias…

    Yo soy mas analogico. seguro que hay un sistema termostato-piston. que se use para eso

    Thumb up 0 Thumb down 0

    • No es que sea mas analogico, suelo usar el arduino para cosas mas complejas, pero mi lema es, hazlo lo mas sencillo posible, hay menos posibilidades de que falle.

      Thumb up 0 Thumb down 0

      • Es curioso, tu comentas que sería mejor simplificarlo y hacerlo más “analógico” e Iván propone que el control se haga con un regulador PID integrado en el Arduino XDDD

        Thumb up 1 Thumb down 0

    • Sí, claro que se puede hacer de otra forma, la manera “tradicional” sería:
      -Rejilla de aluminio
      -Compuerta de regulación
      -Servomotor (proporcional si quieres que el funcionamiento sea el mismo que el de este post)
      -Termostato con salida proporcional 0-10v
      -Fuente de alimentación 24Vdc
      El tema es que todo esto puede llegar a los 200€ fácilmente 🙁

      Thumb up 1 Thumb down 0

        • Buen DIY, yo estoy con un proyecto similar pero que accionará un deshumidificador, en vez de display le he puesto un sistema para que vuelque la información en thingspeak, incluyendo la temperatura de rocío que me parece muy interesante.

          Si en el futuro te apetece hacer algún DIY de este tipo en nergiza escríbeme 😉

          Thumb up 0 Thumb down 0

          • Sí, tiene el doble de precisión, pero me valía con el +-5% que tiene en humedad el DHT11 en mi caso (con diferencias tan grandes). En verano se apaga de vez en cuando, pero en invierno casi nunca.
            Gracias por el ofrecimiento :), un saludo!

            Thumb up 0 Thumb down 0

  3. Buenas,

    Muy buen invento y me vendria de perlas para poner en la habitacion del “enano” y asi regular la temperatura con el A/A de conductos que tengo puesto en casa.

    Pero por desgracia para mi ni tengo los conocimientos, ni las habilidades para llevarlo a cabo.

    Y solo por curiosidad una duda …..

    Se pueden modificar las dimensiones de la rejilla, porque yo creo que la rejilla de mis conductos es mas ancha y menos alta ……

    Gracias por el aporte y el trabajo.

    Saludos.

    Thumb up 0 Thumb down 0

    • Hola Teo.

      Este brico puede resultar complicado hacerlo desde cero como lo he hecho yo, pero con el programa arduino aquí, los archivos para imprimir las piezas y el esquema de conexionado no es tan complicado.

      La rejilla se puede hacer de las dimensiones que se quiera, yo me he limitado a este tamaño porque el area que imprime mi impresora es de 20x20cm máximo.

      Un saludo

      Thumb up 1 Thumb down 0

  4. Hola Carlos seguramente me disponga a hacer el proyecto me parece una magnifica idea, actualmente estoy estudiando instalaciones frigorificas y climatización y me encanta este mundillo solo queria preguntarte si los codigos que has dejadoo para el arduino son para calefaccion o refrigeracion, gracias de antemano

    Thumb up 0 Thumb down 0

  5. Buen brico, pero seria más efectivo si los alabes fueran los que giraran y no una tapa tan grande. Además el coste de las pieza impresas no lo has sumado al total.

    Thumb up 0 Thumb down 0

    • En lo primero tienes razón, podría plantearse así y quizás sería más funcional. En lo segundo no tienes razón, sí que están dentro de los 20€

      Thumb up 0 Thumb down 0

      • Tienes toda la razón no había leído desde el principio.
        También puedes usar un ATMEGA328 Pro Mini 5V/16MHz que vale la mitad en aliexpress y ocupa menos espacio.

        Thumb up 0 Thumb down 0

  6. buen dia, me podrias sacar de duda? el sensor de temperatura que utilizas no lo consegui en donde vivo, ni en internet, podria sustituirlo por un lm35? si es asi, que habria que modificar en el codigo?

    Thumb up 0 Thumb down 0

  7. Hola. Y como se podría hacer una rejilla con temporizador que simplemente se abra una hora al día, por ejemplo, ya que el aire normalmente se puede programar a la hora que tú quieras. En mi caso hablo de un extractor con temporizador.
    Gracias

    Thumb up 0 Thumb down 0

    • Fácil, modificando el código para que haga eso que tu quieres. De todas formas no entiendo porqué lo quieres hacer así si el extractor ya tiene temporizador.

      Thumb up 1 Thumb down 0

      • Bueno, hay un extractor y dos entradas de aire, una de ella más ancha que otra. quiero abrir las dos durante 1 hora, y luego dejar tan solo abierta la estrecha durante otra hora.

        Thumb up 0 Thumb down 0

      • En realidad sólo necesito una rejilla o puertecita muy pequeña, 15 por 15 cm con un temporizador para abrirse y cerrarse y buscando in internet he visto este post, que es muy interesante pero soy novato en estas cosas. Un saludo

        Thumb up 0 Thumb down 0

        • Puedes hacerlo de la forma tradicional, comprar una compuerta, motorizarla y poner un programador, aunque será más caro que hacer algo como lo del post, el problema es que para modificar lo del post a tus medidas y programación necesitarás echarle horas 🙁

          Un saludo

          Thumb up 0 Thumb down 0

  8. que tal amigo, buen aporte, una duda, si quiero controlar mas rejillas, como tendria que modificar el codigo??
    cuantas podria soportar??

    Thumb up 0 Thumb down 0

    • No lo se, no hacemos customizaciones del código personalizadas, tendrás que investigar tu mismo o contratar a alguien para que te lo haga, supongo que habrá que declarar variables para todas las rejillas y sondas y luego duplicar la parte del código que controla la rejilla.

      Thumb up 1 Thumb down 0

Dejar respuesta

Please enter your comment!
Please enter your name here