Si ponéis un tubo de macarrón termo retráctil un poco más grueso que la sonda y unos centímetros más largo, lo rellenáis con silicona y lo calentáis para contraerlo todo arreglado y aislado y funcionando.
Salu2 Jose
Salu2 Jose
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: Es posible que esta función no esté disponible en algunos navegadores.
Buenas tardes.....
Bueno hoy vamos a tratar de ener el control de la temperatura en nuestro acuario.
La manera de funcionar va a ser igual que lo hace un termostato, es decir, vamos a leer la temperatura y dependiendo de esta encenderemos ventiladores, calentadores, etc etc. mediante unos reles.
Yo particularmente en mi acuario durante el invierno se encarga un calentador con termostato integrado de toda la vida (aunque sigo monitorizando la temperatura).
Lo interesante es en verano (yo no tengo un enfriador) asi que lo que hago es tomar 2 temperaturas, 1º-agua del acuario, 2º-pantalla de led's.
Cuando el agua sube de 28º, el ventilador se enciende hasta que baja a 27,5º
Cuando la pantalla de led's sube de 50º, el ventilador salta hasta que baja a 35º.
Componentes:
Arduino (22,5€)
Reloj (16€)
Pantalla LCD SERIAL (20€)
Sensores temperatura DS1820 (5,5€/unidad)
Conexion de sensores de temperatura:
![]()
Código
Código:#include <OneWire.h>//temperatura #include <DallasTemperature.h>//temperatura #define ONE_WIRE_BUS 7//temperatura, pin de entrada OneWire oneWire(ONE_WIRE_BUS);//temperatura DallasTemperature sensors(&oneWire); #include <Wire.h> #define DS1307_I2C_ADDRESS 0x68 #include <SLCD.h> //LCD #define numRows 2 //LCD #define numCols 16 //LCD SLCD lcd = SLCD(numRows, numCols); //LCD byte decToBcd(byte val)//RELOJ { return ( (val/10*16) + (val%10) ); } byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); } byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;//RELOJ ///////// //SETUP// ///////// void setup() { Wire.begin(); //RELOJ lcd.init(); //LCD Serial.begin(9600); //LCD sensors.begin();//Temperatura } ///////////////////////// //FUNCIONES SECUNDARIAS// ///////////////////////// //Iniciar LCD void Lcdini () { lcd.brightness(99); lcd.displayOn(); lcd.clear(); } //Apagar LCD void lcdoff() { lcd.displayOff(); lcd.brightness(0); } // Pausa 3 segundos void p () { delay (3000); } /////////////////// //BUCLE PRINCIPAL// /////////////////// void loop () { lcdoff(); getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // LEEMOS LA HORA InfoLcd(); } ////////////////////////// // FUNCIONES PRINCIPALES// ////////////////////////// // Establece la fecha y el tiempo del ds1307 void getDateDs1307(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { // Resetea el registro puntero Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.send(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // Alguno de estos necesitan enmascarar porque ciertos bits son bits de control *second = bcdToDec(Wire.receive() & 0x7f); *minute = bcdToDec(Wire.receive()); *hour = bcdToDec(Wire.receive() & 0x3f); // Need to change this if 12 hour am/pm *dayOfWeek = bcdToDec(Wire.receive()); *dayOfMonth = bcdToDec(Wire.receive()); *month = bcdToDec(Wire.receive()); *year = bcdToDec(Wire.receive()); } // INOFORMACION EN PANTALLA LCD void InfoLcd () { //Nombre proyecto Lcdini(); lcd.print("L&S NANO-REEF", 0, 2); lcd.print("VER. 2.0", 1, 4); p(); //FadeLcd(); // borra pantalla con fade // ahora para mostrar fecha y hora p(); Lcdini(); lcd.print("Hora:",0,1); if (hour < 10) Serial.print("0"); Serial.print(hour, DEC); Serial.print(":"); if (minute < 10) Serial.print("0"); Serial.print(minute, DEC); Serial.print(":"); if (second < 10) Serial.print("0"); Serial.print(second, DEC); switch (dayOfWeek) { case 1: lcd.print("Lun , ",1,0); break; case 2: lcd.print("Mar , ",1,0); break; case 3: lcd.print("Mie , ",1,0); break; case 4: lcd.print("Jue , ",1,0); break; case 5: lcd.print("Vie , ",1,0); break; case 6: lcd.print("Sab , ",1,0); break; case 7: lcd.print("Dom , ",1,0); break; } Serial.print(dayOfMonth, DEC); Serial.print("/"); if (month < 10) Serial.print("0"); Serial.print(month, DEC); Serial.print("/"); Serial.print("20"); if (year < 10) Serial.print("0"); Serial.print(year, DEC); p(); Lcdini(); //FadeLcd(); // borra pantalla con fade sensors.requestTemperatures(); lcd.print("Temp. Acuario: ",0,1); Serial.print(sensors.getTempCByIndex(0)); //Index 0 , es el primer sensor p(); //FadeLcd(); Lcdini(); lcd.print("Temp.Iluminacion ",0,0);//0,0 es el sensor 1 Serial.print(sensors.getTempCByIndex(1)); // Index 1, es el 2º sensor del cable p(); lcdoff(); }
Pues y tendríamos la información de la temperatura. Ahora os doy algunos detalles más....
Los sensores son unos pequeños integrados, no son sumergibles....para poder medir la temperatura del agua yo lo he solucionado de la siguiente manera, un tubito de plastico y silicona. Luego comprobamos si hubiera que hacer algún ajuste de temperatura (sumando o restando grados a nuestra lectura, aunque a mi no me hizo falta!!)
Esto es una foto de hace tiempo cuando estaba aprendiendo todo esto jejeje
![]()
Y aquí un video maaaaaaaalo pero bueno se puede ver lo que ocurre...
[video]https://s543.photobucket.com/albums/gg456/jmcadsl/Xcube%20Marino/Arduino/?action=view¤t=Vdeo0017.flv[/video]
Salu2!!
bueno ya lo tengo todo de momento,
me acaba de llegar la placa con los 4 relés,
tambien el lcd serial
y las sondas y reloj ya las tenia montadas y conectadas y marchando.
me falta conseguirme algún tipo de caja donde poner los 4 enchufes que controlaran los relés, y la cajita donde meteré el arduino y demás.