Incubadora

Hola a todos, estoy empezando en esto de arduino, y mi primer proyecto serio pretende ser una incubadora. Aquí voy a ir poniendo todos los pasos por si esto le interesase a alguien en un futuro, pero como todos los proyectos, empieza por las preguntas, y tengo algunas para vosotros.
Primero quiero hacer una lista de materiales:

  • 3 relés
  • 3 transistores
  • 3 diodos
  • 1 sensor de temperatura LM35
  • 1 sensor de humedad (aun por decidir)
  • 2 ventiladores PC 12V
  • Fuente de alimentación
  • LCD
    Si veis que me falta algo comentádmelo, toda ayuda en bienvenida.

Dado que la ocupacion de pines va a ser alta, he visto que para ahorrar pines se puede utilizar un protocolo para la LCD llamado I2C pero no encuentro donde comprar la placa que hay que soldarle al lcd (solo encuentro la placa + LCD)

Mi idea es hacer un shield con todo esto, para así tener algo a la vez permanente, pero que no me inutilice el arduino. Pero la verdad es que no tengo mucha idea de diseño de PBC, si me podéis echar una mano se agradece. ¿Hay alguna forma de añadir el RTC al shield?
Conforme me vayan surgiendo preguntas las iré haciendo.

Muchas gracias

Buenas:

No te compliques mucho con la temperatura y la humedad, con un solo sensor de temperatura te deberia de valer para medir esta, y la humedad no te sera facil de controlar aunque la midas, pon una resistencia de calefacion pequeña, es decir no pongas una de mas 100W por que la propia inercia te hara variar mucho la temperatura dentro de esta, 100W ya es mucho en mi opinion, para llegar a los 37,8 grados no necesitaras tanto, aunque tardes mas en llegar a esta temperatura al principio sera mas estable despues.

si tienes dudas preguntame ya que tengo una comprada y en su dia me hice yo una con control de humedad mediante un evaporizador de ultrasonidos.

Un saludo.

Editado por cambio de direccion en el proyecto

Hola a todos, ya tengo el esquematico bastante avanzado. Decir que esta basado en el Relay Shield de Seeeduino. Aqui os lo dejo para que me comenteis. Se os ocurre que tipo de conector puedo usar para los sensores y el servo?

Muchas Gracias

Relay shield.sch (364 KB)

Bueno, después de la época de exámenes que había tenido un poco aparcado esto, lo relanzo. Por el momento voy a pasar de fabricarme una placa profesional m, iré tirando con una string board. Aquí tengo el código a falta de implementar la parte de la pantalla. ¿Qué os parece? Decir que los pines están puestos a voleo, ya los pensare y los tiempo tampoco están calibrados del todo. Comentadme por favor, será de gran ayuda.

/************************************************************/
/******************* PROYECTO INCUBADORA ********************/
/******************************************** by F.Cornet ***/

float Temperatura()              //Declaracion
float Humedad()                 //     de
void Volteo(unsigned long &T)  //  Funciones

float temp, hum;                      //Valores Temperatura y Humedad
int PinTemp = 0, PinHum = 1;         //Pines Sensores
int PinT = 9, PinH = 10, PinV = 11; //Pines Actuadores
unsigned long Tiempo;              //Variable tiempo

void setup()
{
    // Abre puerto serial y lo configura a 9600 bps
    Serial.begin(9600);  //Esto no es definitivo si no solo para las pruebas
    
    pinMode(PinT, OUTPUT);
    pinMode(PinH, OUTPUT);
    pinMode(PinV, OUTPUT);
    
}

void loop()
{
    temp = Temperatura();
    hum = Humedad();   
    Volteo(Tiempo);
          
    delay(15000);
}

float Temperatura()
{
    float T;
    T = analogRead(PinT);                // Lee el valor de la Temperatura
    T = (5.0 * T * 100.0)/1024.0;       // Convierte el valor a temperatura
    if(T <= 37.4)                      // Enciendo o apaga la resistencia en funcion de la temperatura
    {
        digitalWrite(PinT, HIGH);
    }
      else if(T >= 37.6)
      {
          digitalWrite(PinT, LOW);
      }
      return T;
}

float Humedad()
{
    float H;
    H = analogRead(PinH);               // Lee el valor de la humedad
    H = (5.0 * H * 100.0)/1024.0;      // Convierte el valor a humedad
    if(H <= 50)                       // Enciendo o apaga el humidificador en funcion de la humedad
    {
        digitalWrite(PinH, HIGH);
    }
      else if(H >= 60)
      {
          digitalWrite(PinH, LOW);
      }
      return H;
}

void Volteo(unsigned long &T)
{
    if ((T+900000) < millis())
    {
        T = millis();
        digitalWrite(PinV, HIGH);
        delay(1500);   //AJUSTAR
        digitalWrite(PinV, LOW);
    }
    return;
}

Comentar también que aunque en principio iba a usar un servo, ahora usare un motor de bajas revoluciones de un microondas.

Gracias por todo, y ¡¡¡Comentad!!!

A ver si puedo mirar el esquemático, ando en un chisme móvil y...
Para el control de temperatura deberías usar un lazo cerrado con un PID. Puedes buscar en este foro, incluso en esta web hay un par de colegas que lo han usado y tienen un proyecto publicado. Si quieres usar transistores de potencia te darán un control sobre la corriente que pasa por la resistencia (y por tanto la temperatura) mucho mayor ya que no oscilara como con un rele (on off).

LCD por I2C es buena opción para ahorrar pines e incluso encadenar otros dispositivos I2C sobre el mismo bus (un sensor de temperatura auxiliar como un LM75, por ejemplo).

Muchas gracias, lo tendre en cuenta, no mires el esquematico, lo he dejado aparcado por ahora, cuando ya haya probado un par de incubaciones haré la pcb pero eso puede que sea el año que viene, si lo relanzo ya te pido ayuda. Muchas Gracias!