Hola, no sé si es de interés que escriba en este post, por el tiempo que ha pasado inactivo, pero lo he estado leyendo y me ha resultado muy interesante de cara al proyecto que estoy elaborando.
Por eso en principio trataré de ser lo más breve posible, aunque es un proyecto bastante ambicioso, por lo menos para mí ahora mismo que soy poco más que un principiante en estos temas de electrónica
Tengo un acuario de 500 litros, es fundamentalmente un acuario plantado, el tema es que está casi totalmente automatizado en base a relojes programadores.
En resumen:
Circuito A:A las 10 de la mañana se encienden las luces, leds de alta potencia controlados por un cacharrito electrónico (TC420) que hace el efecto amanecer - anochecer. Son dos circuitos, uno de leds blancos y otro de colores.
Circuito B: A esa misma hora se enciende una fuente de alimentación que controla un termostato electrónico y cuatro ventiladores de PC. que mantienen la temperatura de los leds por debajo de 40 grados.
Circuito C: De 10 a 20 hs se enciende un solenoide que abre la válvula de la bombona de CO2.
Circuito D: Cada 6 horas se enciende una electro válvula (5 minutos) que permite la entrada de unos 25 a 30 litros de agua filtrada al acuario. El acuario lleva un rebosadero que mantiene siempre el mismo nivel. Ese mismo reloj programador enciende un agitador magnético casero que agita el fertilizante contenido en un "Tuper" de 2 litros.
Circuito E: Inmediatamente después de entrar el agua de recambio se enciende una pequeña bomba peristáltica (también un brico propio) que administra el fertilizante, también cuatro veces al día.
Circuito F: Dos veces al día se enciende una lámpara UV germicida.
Circuito G: A las 10 de la noche se enciende una tira de leds azules para hacer el efecto luz de luna.
Circuito H: Termostato que enciende un cable calentador instalado por debajo del suelo y que lo mantiene un par de grados por encima de la temperatura del agua.
Bueno, les pongo el programita que he hecho en
Arduino, lo he probado y funciona todo (ahora mismo son 7 circuitos). Todavía no he escrito tres circuitos para tomar la temperatura del suelo, la temperatura del agua y la de los leds de alta potencia, además de algunas otras cosas que se me irán ocurriendo pues esto del
Arduino da para mucho
El hardware es un
Arduino Mega, un reloj DS3231 y 8 relés:
Código:
#include <DS3231.h>
#include <Wire.h>
DS3231 Clock;
byte year, month, date, DoW, hour, minute, second;
void setup() {
// Se inicial la interfaz I2c
Wire.begin();
// Se inicia la Comunicación Serial
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop() {
delay(500);
//Se rescata la información
Clock.getTime(year, month, date, DoW, hour, minute, second);
//Se muestra solo hora, minutos y segundos:
Serial.print(hour, DEC);
Serial.print(":");
if (minute<10)
Serial.print(0); // agrega un cero para el formato de minutos de 2 dígitos
Serial.print(minute, DEC);
Serial.print(":");
if (second<10)
Serial.print(0); // agrega un cero para el formato de segundos de 2 dígitos
Serial.println(second, DEC);
/* Relay que enciende el circuito de Leds de 3 watts de colores cuatro veces al día
* durante media hora a las 12:00, 13:00, 14:00 y 15:00 Hs. Funciona con el pin 7*/
{
if ((hour==12||hour==13||hour==14||hour==15) && (minute<30))
{digitalWrite(7, HIGH);
Serial.println("PIN-7-ON----> Leds de 3 Watts de Colores (12/13/14/15 Hs durante 30 min)");}
else
{digitalWrite(7, LOW);
Serial.println("PIN-7-OFF---> Leds de 3 Watts de Colores (12/13/14/15 Hs durante 30 min)");}
}
/* Relay que enciende la Fuente de Alimentación de 12 voltios y 30 Amperios de
* la iluminación de Leds del Acuario durante 12 horas desde las 10 de la mañana
* hasta las 10 de la noche. Está conectado al pin 8*/
{
if (hour>=10 && hour<22)
{digitalWrite(8, HIGH);
Serial.println("PIN-8-ON----> Fuente de 12 voltios Leds con efecto Amanecer-Anochecer (de 10 a 22 Hs)");}
else
{digitalWrite(8, LOW);
Serial.println("PIN-8-OFF---> Fuente de 12 voltios Leds con efecto Amanecer-Anochecer (de 10 a 22 Hs)");}
}
/*Relay que enciende el Solenoide de CO2 durante 10 horas, desde las 10 de la mañana
* hasta las 8 de la noche, funciona con el pin 9*/
if (hour>=10 && hour<20)
{digitalWrite(9, HIGH);
Serial.println("PIN-9-ON----> Solenoide de CO2 (de 10 a 20 Hs)");}
else
{digitalWrite(9, LOW);
Serial.println("PIN-9-OFF---> Solenoide de CO2 (de 10 a 20 Hs)");}
/*Relay que enciende la Electrobomba y un agitador de líquidos (depósito del
*antialgas) durante 5 minutos cuatro veces al día:
*A las 12 de la noche, las 6 de la mañana, las 12 del mediodía y las 6 de la
*tarde. Está conectado al pin 10*/
{
if ((hour==0|hour==6||hour==12||hour==18) && (minute<5))
{digitalWrite(10, HIGH);
Serial.println("PIN-10-ON----> Electrobomba de Agua y Agitador (00/06/12/18 Hs durante 5 min)");}
else
{digitalWrite(10, LOW);
Serial.println("PIN-10-OFF---> Electrobomba de Agua y Agitador (00/06/12/18 Hs durante 5 min)");}
}
/*Relay que enciende las bombas de administración de fertilizante y antialgas
* durante 15 segundos cuatro veces al día, exactamente en el momento en que el
* Relay de la Electrobomba se apaga, Se activa con el pin 11*/
{
if ((hour==0||hour==6||hour==12||hour==18) && (minute==5) && (second<15))
{digitalWrite(11, HIGH);
Serial.println("PIN-11-ON----> Bombas de Fertilizante y Antialgas (00/06/12/18 Hs y 5 min durante 15 seg)");}
else
{digitalWrite(11, LOW);
Serial.println("PIN-11-OFF---> Bombas de Fertilizante y Antialgas (00/06/12/18 Hs y 5 min durante 15 seg)");}
}
/* Relay que enciende la Lámpara Germicida de 9 wats durante 4 horas 2 veces al día
* Se enciende a las 8 de la mañana y a las 8 de la noche y se activa con el pin 12*/
{
if (hour>=8 && hour<12 || hour>=20 && hour<24)
{digitalWrite(12, HIGH);
Serial.println("PIN-12-ON----> Lampara Germicida UV de 9 watt (8 a 12 y 20 a 24 Hs)");}
else
{digitalWrite(12, LOW);
Serial.println("PIN-12-OFF---> Lampara Germicida UV de 9 watt (8 a 12 y 20 a 24 Hs)");}
}
/*Relay que enciende los Leds azules (luz de luna) desde las 10 de la noche hasta las
* 10 de la mañana. Funciona con el Pin 13 */
if (hour>=22 || hour<10)
{digitalWrite(13, HIGH);
Serial.println("PIN-13-ON----> Luz de Luna (de 22 a 10 Hs)");}
else
{digitalWrite(13, LOW);
Serial.println("PIN-13-OFF---> Luz de Luna (de 22 a 10 Hs)");}
}
Todavía no he diseñado todo el montaje físico, en principio se me ocuure montar todo (la electrónica, los cables, enchufes, etc) sobre una placa de metacrilato con orificios para sujetar los componentes, pero por ahora lo que me interesa es tener todo el tema del
Arduino bien estudiado, para no cometer errores.
En el foro de
Arduino en español me recomendaron que en lugar de los "if" utilice la librería TimeAlarm, que tiene funciones que controlan la hora de encendedido, la hora de apagado, el pin correspondiente, pero me lío y no logro que compile sin errores.
Pues lo mismo me he extendido demasiado, sorry.
Bueno, espero vuestros comentarios, y más que nada sugerencias para mejorarlo.