Thinking Different




온도 유지에 필요한 전구 또는 히터 등의 컨트롤에 필요한 소스코드를 알아보도록 하겠습니다.

 

전구를 사용해도 되고, 스페이스히터 같은 종류를 사용해도 무방합니다. 아니면 실리콘 열선으로 만드셔도 됩니다. 쉽게 말하면 전기장판에 깔려있는 열선 같은겁니다. 실리콘 열선 같은 경우 저항치를 측정해서 약 30 ~ 40W 정도로 만들면 됩니다. 종류만 다르지 어차피 온도에 따른 온 오프 제어이므로 사용 소스 코드는 같습니다.

 

 

 

 

 

아래는 소스코드 입니다.

 

Incubator_main.ino

...

#define LIGHT           9  // 전등   (220v 릴레이)
#define FAN             11  // Fan

long mode = 0;   // 0 = 부화기, 1 = 육추기 모드

...

void setup()
{  
  ...

  pinMode(FAN, OUTPUT);         // 팬
  pinMode(LIGHT, OUTPUT);       // 전구
    
  ...
}

void loop() 
{
  ...

  if(millis()-beforeTime>=1000)
  {
    ...

    // 온도 습도 읽기
    GetTempHumi();

    // 온도 체크 및 전구 온 오프
    CheckLight();

    ...
  }
  ...
}

 

 

 

_light.ino

// 온도 체크 및 전구 온 오프
void CheckLight()
{
  if(mode == 0) // 부화기모드
  {
    if(day >=0 && day <= 20)       // (37.5도 +- 0.5)
    {
      if(NTC <= 37)   // 온도가 37도 미만이면 히터를 켜고
      {
        digitalWrite(LIGHT, HIGH);  // 히터 켜기
        digitalWrite(FAN, HIGH);    // 히터 온도를 내부 전체에 고르게 퍼지게 하기 위함
      }
      else if(NTC >= 38)  // 38도가 넘으면 히터를 끕니다.
      {
        digitalWrite(LIGHT, LOW);  // 히터 끔
        digitalWrite(FAN, LOW);    // 팬 끔
      }
    }
    else  // 아무것도 하지 않음
    {
      digitalWrite(LIGHT, LOW);
      digitalWrite(FAN, LOW);
    }
  }
  else  // 육추기 모드
  {
    if(day >=0 && day <= 2)       // 1주 3일까지 (36도)
    {
      if(NTC <= 35.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 36.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    else if(day > 2 && day <= 6)      // 1주 4~7일 (33도)
    {
      if(NTC <= 32.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 33.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    else if(day > 6 && day <= 13) // 2주 (30도)
    {
      if(NTC <= 29.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 30.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    else if(day > 13 && day <= 20) // 3주 (28도)
    {
      if(NTC <= 27.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 28.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    else if(day > 20 && day <= 27) // 4주 (26도)
    {
      if(NTC <= 25.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 26.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    else if(day > 27 && day <= 34) // 5주 (23도)
    {
      if(NTC <= 22.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 23.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    else // 5주 이상 (21도)
    {
      if(NTC <= 20.5)
      {
        digitalWrite(LIGHT, HIGH);
      }      
      else if(NTC >= 21.5)
      {
        digitalWrite(LIGHT, LOW);
      }
    }
  }
}

 

 

 

모드에 따라서 (부화기, 육추기) 온도 습도 관리가 다르며, 부화기 모드일 경우 19일까지 37.5도 온도와 65% 습도를 유지하고 그 후 부화시 이틀은 습도를 75%로 올려주게 됩니다.

 

육추기 모드의 경우 설정된 온도부터 주차 별로 온도를 서서히 자연 온도와 가깝게 2도 정도씩 내려주게 됩니다. 5주 이상 되면 히팅을 하지 않아도 되며, 가장 중요한 것은 육추기 모드 1 ~ 2주 정도까지는 습도 조절을 잘 해줘야 된다는 점입니다. 너무 습도가 낮아도 안되고 높아도 안됩니다.