Ok, lo primero es hacerte un diagrama con las cosas que quieras controlar y pintar las grades líneas de contol.
Por ejemplo, como, o mejor dicho, con qué vas a controlar la temperatura, la humedad, la ventilacion. Por ejemplo, la temperatura se controla con una resistencia que se alimenta con la red electrica, la humedad con un evaporador enchufado a la red y el ventilador a 12 voltios... Sensores: temperatura, humedad, oxigeno, ...
Asi, con todos los perifericos y sensores. Una vez que tengas esto, como se comunican y como se controlan, empezamos a pensar en que quieres y como lo quieres controlar. Finalmente nos planteamos cómo hacer el código para controlarlo.
hace tiempo hice muchas pruebas para incubar huevos de gallina. Fue un tema que me apasionó. Algunas ideas que recuerdo:
el punto más crítico es la distribución uniforme de la temperatura. Tendrás que usar uno o mejor varios focos de calor con resistencias, y ventiladores para distribuirlo, evitando la irradiación directa sobre los huevos. Calentarlos con bombillas de filamento fue catastrófico. Tendrías que medir la temperatura en varios puntos, y conseguir que no haya más de una o dos décimas de diferencia. Yo solía usar ventiladores de PC.
la humedad baja mucho cuando se calienta el aire a 37.5 ºC en un ambiente cerrado. Se puede controlar haciendo pasar con unventilador una corriente de aire sobre a una superficie con agua, para que la humedad relativa sea de un 60% (No tengo experiencia con evaporadores)
los huevos respiran, son seres vivos que están en un cascarón poroso, que toman oxígeno y desprenden CO2; continuamente hay que renovar el aire interior de la incubadora, en una cantidad que depende del número de huevos. Sería interesante medir la concentración de CO2.
hay que mover (voltear) los huevos de posición ( 12-24 veces al día), para que el embrión se forme bien, y tome la posición adecuada para nacer. Dicen que la gallina lo hace instintivamente para refrescarse la barriga... Se colocan los huevos sobre una rejilla que al desplazarse horizontalmente, los hace inclinar 56 grados a la derecha, 56 grados a la izquierda. Es un movimiento de unos centímetros.
Un aviso: si no controlas todos los parámteros muy bien, prepárate a unos resultados catastróficos: pollos que están formados, pero no nacen. Pollos que nacen con el ombligo sangrante y mueren. Pollos que nacen con malformaciones... Si consigues un 80% de nacimientos normales, serás un genio.
hace tiempo hice muchas pruebas para incubar huevos de gallina. Fue un tema que me apasionó. Algunas ideas que recuerdo:
el punto más crítico es la distribución uniforme de la temperatura. Tendrás que usar uno o mejor varios focos de calor con resistencias, y ventiladores para distribuirlo, evitando la irradiación directa sobre los huevos. Calentarlos con bombillas de filamento fue catastrófico. Tendrías que medir la temperatura en varios puntos, y conseguir que no haya más de una o dos décimas de diferencia. Yo solía usar ventiladores de PC.
la humedad baja mucho cuando se calienta el aire a 37.5 ºC en un ambiente cerrado. Se puede controlar haciendo pasar con unventilador una corriente de aire sobre a una superficie con agua, para que la humedad relativa sea de un 60% (No tengo experiencia con evaporadores)
los huevos respiran, son seres vivos que están en un cascarón poroso, que toman oxígeno y desprenden CO2; continuamente hay que renovar el aire interior de la incubadora, en una cantidad que depende del número de huevos. Sería interesante medir la concentración de CO2.
hay que mover (voltear) los huevos de posición ( 12-24 veces al día), para que el embrión se forme bien, y tome la posición adecuada para nacer. Dicen que la gallina lo hace instintivamente para refrescarse la barriga... Se colocan los huevos sobre una rejilla que al desplazarse horizontalmente, los hace inclinar 56 grados a la derecha, 56 grados a la izquierda. Es un movimiento de unos centímetros.
Un aviso: si no controlas todos los parámteros muy bien, prepárate a unos resultados catastróficos: pollos que están formados, pero no nacen. Pollos que nacen con el ombligo sangrante y mueren. Pollos que nacen con malformaciones... Si consigues un 80% de nacimientos normales, serás un genio.
Me voy a documentar bien de las necesidades de los huevos, según lo vaya haciendo lo iré publicando.
Hola,
La precisión de este termómetro es de ± 2°C, no es adecuado para incubadora; el margen es estrecho, no debe salir de 37.2 -37.8
Por lo menos necesitas un DHT22 que tiene precisión de ±0.5ºC
Yo creo que este me vale, insisto, me bajaría 0.75 ºC por encima y por debajo de 37,5 ºC...
Teneis todas las especificaciones en la url que os he dejado... vale 8 €
1 Servor motor, cual me recomendais? es para hacer el sistema de volteo, es decir debo de controlar los angulos de giro.
a9965:
El servomotor depende del peso que vayas a mover.
Pues un 1,5 kg como maximo. Pero hay que tener en cuenta que lo que voy a mover va a ser 4 filas de 5 huevos y cada una tendrá un eje con un rodamiento por lo tanto no levantará 1,5 sino que solo va a girarlo además con un rodamiento que irá bastante suave.
Pues entonces ahora es cuestión de meterte en tu tienda preferida, no quiero poner ninguna por no hacer publi.
Mires donde mires habrán de diferente marca y peso. Yo siempre compro futaba y van bastante bien.
Ahí te lo dejo ya nos dices algo.
Tengo la misma inquietud que a9965 ya que yo también tengo 2 servos iguales a esos y dudo mucho de esos "2Kg de torque", por otro lado ¿ese sensor de temp/hum no es un DHT11?
Tengo la misma inquietud que a9965 ya que yo también tengo 2 servos iguales a esos y dudo mucho de esos "2Kg de torque", por otro lado ¿ese sensor de temp/hum no es un DHT11?
Estoy desarrollando el diagrama de flujo para el programa que debo de hacer y me encuentro con varios muros.
He comprado un RELOJ DS1307 y quiero que se comunique con el Arduino UNO en I2C.
Esto lo hago por si algún día se me apaga el Arduino que no me empieze el ciclo de incubación desde el día 0 y lo haga desde el momento en el que se quedó sin energía.
Está claro que el RELOJ DS1307 se integra en una placa con una pila para ser autónomo.
Mi problema es que se muy poco de I2C, mas o menos se que tienes que cargar la librería .wire y empezar la transmisión, y tienes que ir al datasheet para ver como se comunica. Pero vamos por partes, en el diagrama de flujo lo primero que haga el programa es comprobar si antes ha dejado un ciclo por la mitad y si ha sido así que inicie desde ese momento.
Yo no se como conseguir que el arduino reconozca si se ha quedado a medias antes o no. Lo único que se me ocurre es que el programa sea especifico para una fecha de inicio y si no es esa fecha que reste los días que le manda el reloj y empieze desde ese día.
Es decir si lo pongo a funcionar el 11 de junio del 2012 y cuando inicia no es ese día sino el 15 de junio del 2012 pues que se vaya directamente a ese día.
Me ha llegado el reloj DS1307 en cuestión de 4 días desde china, madre mia, la mala noticia que me ha costado dios y ayuda comunicarme con él, me daba fallo al compilarlo porque las librerías de wire.h no son compatibles con Arduino 1.0 y si bajo de versión no me comunica el la placa con el PC. Así que al final encontré un código que si lograba comunicarse con el reloj. Que es el siguiente:
//Arduino 1.0+ Only
//Arduino 1.0+ Only
#include "Wire.h"
#define DS1307_ADDRESS 0x68
void setup(){
Wire.begin();
Serial.begin(9600);
}
void loop(){
printDate();
delay(1000);
}
byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}
void printDate(){
// Reset the register pointer
Wire.beginTransmission(DS1307_ADDRESS);
byte zero = 0x00;
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
//print the date EG 3/1/11 23:59:59
Serial.print(month);
Serial.print("/");
Serial.print(monthDay);
Serial.print("/");
Serial.print(year);
Serial.print(" ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);
}
Ahora mi siguiente problema es que tengo poca idea de programar y mas o menos puedo aprender por analogías pero no se si debo hacerlo así.
Entonces que mejor manera es comentaros cada linea que es lo que hace y si lo digo mal pues me lo decís.