Proyecto incubadora huevos gallina

Hola a todos,

Me presento ya que es el primer post que pongo, soy un recien iniciado, desde hace unos días poseo un arduino UNO.

Todo esto es debido a que debo de fabricar una incubadora de huevos de gallina por lo tanto voy al grano.

Con el arduino necesito controlar temp + humedad y mover un motor cuando yo quiera.

Lo tengo todo pensado pero mi defecto es que no se programar, me estoy estudiando el manual para ver que cosas puedo hacer...

Lo que necesito es controlar en cada momento temperatura + humedad + ventilación + un motor, durante 21 días que es lo que tarda

en nacer un pollito.

Supongo que para los que sepan programar es facil pero para mí aún no.

Si podeis darme código que pudiera valer para hacerme ideas os lo agradecería.

De momento iré publicando en este hilo todo lo que iré desarrollando.

Bueno pues nada, muchas gracias a todos y un saludo. :smiley:

control PID didactico realizado en la virtual camp del año pasado (Igor R., fariceos, LeoBot)

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.

Para medir la temperatura puedes usar un termistor o directamente usar un SHT75 que mide humedad y temperatura.

http://www.sensirion.com/en/01_humidity_sensors/06_humidity_sensor_sht75.htm

http://www.arduino.cc/playground/ComponentLib/Thermistor2

Hola,

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.

Muchas gracias por contestarme, a todos.

Respecto a Flico

flico:
Para medir la temperatura puedes usar un termistor o directamente usar un SHT75 que mide humedad y temperatura.

http://www.sensirion.com/en/01_humidity_sensors/06_humidity_sensor_sht75.htm

Arduino Playground - Thermistor2

El SHT75 se sube un poco de precio, yo vi éste:

http://www.electan.com/modulo-sensor-temperatura-humedad-conectar-listo-p-3035.html

Respecto a Curro92

curro92:
Hola,

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.

Gracias por vuestra colaboración XD

barkalez:
Muchas gracias por contestarme, a todos.

Respecto a Flico

flico:
Para medir la temperatura puedes usar un termistor o directamente usar un SHT75 que mide humedad y temperatura.

http://www.sensirion.com/en/01_humidity_sensors/06_humidity_sensor_sht75.htm

Arduino Playground - Thermistor2

El SHT75 se sube un poco de precio, yo vi éste:

101020011 Seeedstudio Módulo Sensor de Temperatura y Humedad Conectar y Listo

compralo por ebay.

Este DHT11 creo que es compatible con arduino por ± 1,5 €

Un saludo!

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

Hola a todos,

He elaborado un diagrama de flujo para el sketch, cuando pueda lo subo y lo echais un vistazo.

Quiero ir por partes, lo primero que quiero tener claro es que materiales necesito.

1 sensor de temp + humedad : http://seeedstudio.com/wiki/Grove-_Temperature_and_Humidity_Sensor

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.

El resto del material no tengo dudas.

Gracias....

El servomotor depende del peso que vayas a mover.

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.

Buenas, pues ya he comprado el material necesario para empezar a realizar mi programa.

Un miniservo

http://www.dealextreme.com/p/sg90-mini-servo-with-gears-and-parts-2kg-torque-35764

Un sensor de Temp + Humd

http://www.dealextreme.com/p/arduino-digital-temperature-humidity-sensor-module-121350?item=7

Un relor DS1307 con una EPROM AT24C32

http://www.ebay.es/itm/New-Arduino-I2C-RTC-DS1307-AT24C32-Real-Time-Clock-Module-For-AVR-ARM-PIC-/290644556197?pt=LH_DefaultDomain_0&hash=item43abc3f9a5#ht_5063wt_1185

Cuando me llegue expondré como lo voy haciendo, por si algúno se anima y por si necesito ayuda.

Oye no te imgainas lo pequeño que es el servo, yo tengo de esos, ¿te servirá?

a9965:
Oye no te imgainas lo pequeño que es el servo, yo tengo de esos, ¿te servirá?

Mientras me haga girar 1,5 kg entorno a unos rodamientos.... por cierto sabes donde venden rodamientos?

Saludos Amigos....

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?

ajtorres:
Saludos Amigos....

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?

Tiene toda la pinta

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.

Si se os ocurre algo mas facil me lo decís.

Hola a todos,

Tengo buenas y malas noticias:

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.