[아두이노] 릴레이 모듈+온도센서+DC모터 응용

IOT/아두이노|2019. 3. 28. 09:00

[아두이노] 릴레이 모듈+온도센서+DC모터 응용 



다른 주제로 포스팅을 끝냈는데 @ellenalee 님이 릴레이 모듈로 선풍기를 제어 해보셨다고 하셔서 이걸 한번 비슷하게 구현해보면 릴레이 모듈의 응용으로 괜찮을 것 같아서 가상시뮬레이터에서 느낌만 비슷하게 한번 구현해 보도록 하겠습니다.

1. 회로도 구성


  • 준비물 : relay DPDT 1개, DC Motor 1개, Temperature Sensor[TmP36] 1개, Power Supply, 아두이노우노
  • 내용 : 온도센서의 값에 의해서 모터가 회전할 수 있게 회로도를 구성해 보자.


대충 DC Motor가 선풍기라고 생각해 봅시다. 느낌은 그런데로 비슷해가 표현 했네요.

3. 코딩


  • 사용함수 : analogRead(), map()
  • 내용 : LED 깜박이는 소스를 이용해서 그 값을 제어값으로 해서 Light bulb 깜박이게 해보자.
  • 참고소스 : [아두이노] 온도센서(TMP36) 제어

복습

  • analogRead(아날로그핀) : 아날로그신호값을 읽음
  • map(입력값,입력최소값,입력최대값,출력최소값,출력최대값) : 입력값이 입력범위에 기준에 맞게 출력범위의 해당값을 출력.

변형함수(만든함수)

  • fmap(입력값,입력최소값,입력최대값,출력최소값,출력최대값) : map()함수와 동일하지만 자료형 타입을 float형으로만 변경했습니다. 계산값이 실수형 값이라서 map()함수를 사용하기가 애매해서 인자들을 전부 float형으로 변경했네요.

[ 온도센서 측정 소스 ]

[아두이노] 릴레이 모듈+온도센서+DC모터 응용
void loop(){
  float V =fmap(analogRead(A0),0,1023,0,5); //map함수 원리를 이용한 다이렉트 Voltage계산
   //공식
  //float V = analogRead(A0)*5.0/1023;
 
  float C = (V-0.5)*100;  //섭씨 C = (F-32)*1.8;
  float F = C*9.0/5.0+32; //화씨 F = C*1.8+32;
 
}

float fmap(long x, long in_min, long in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) /(float) (in_max - in_min) + out_min;
}

여기서 대충 온도 C변수 값에 따라서 릴레이모듈를 제어하면 되겠죠

[아두이노] 릴레이 모듈+온도센서+DC모터 응용
   if(C>35){    //35도 이상이면 참
     digitalWrite(2, HIGH); //스위치 켜라
  }
  else{
     digitalWrite(2, LOW);  //스위치 꺼라
  }  

끝! 간단하게 느낌만 살렸습니다.

전체적인 코드를 살펴보면,

[아두이노] 릴레이 모듈+온도센서+DC모터 응용
void setup()
{
  Serial.begin(9600);
  pinMode(7, INPUT_PULLUP);
  pinMode(2, OUTPUT);
}
void loop()
{
  
  float V =fmap(analogRead(A0),0,1023,0,5); //map함수 원리를 이용한 다이렉트 Voltage계산
  float C = (V-0.5)*100;  //섭씨 C = (F-32)*1.8;
  
  if(C>35){    
     digitalWrite(2, HIGH); 
  }
  else{
     digitalWrite(2, LOW);   
  }   
}

float fmap(long x, long in_min, long in_max, float out_min, float out_max)
{
  return (x - in_min) * (out_max - out_min) /(float) (in_max - in_min) + out_min;
}

4. 결과


[ 35도 이하일때 ] : 그림에서는 25도 위치



[ 35도 이상일때 ] : 그림에서는 57도 위치


동영상을 찍어야 했지만 그냥 이미지로 간단히 차이점을 화살표로 표시 해 놨습니다. 25도일때는 0.00A로 전류가 흐르지 않는 상태이고 57도 위치에서는 79.9mA로 전류가 흐르는 상태입니다. 그 차이점으로 확인해주시기 바랍니다.

코딩에서는 35도 이상이면 모터가 회전되게 되어 있습니다. 실제 시뮬레이터로 돌아가는 장면을 보고 싶으면 공개되 회로도에서 바로 시뮬레이터를 실행 시켜서 그 결과를 확인 할 수 있습니다.


링크된 곳으로 가면 위 그림과 같은 창이 뜹니다. 거기서 1번 눌러주셔서 2번의 시뮬레이터 실행버턴의 창이 뜹니다. 그리고 2번을 누르시면 실행을 시킬 수 있습니다. 한번 온도조절을 해보시고 결과를 확인해 보세요.

마무리


상상이 어렵지만 표현은 그렇게 어렵지 않습니다. 매번 상상의 나래를 펼치라는 멘트를 날리는 이유가 바로 그 이유입니다. 온도에 따라서 선풍기를 자동을 켜볼까라는 상상력이 뭔가를 만들어 냅니다.

여러분들도 어떤 원리를 배우게 되면 그 원리에서만 멈추지 말고 상상력을 더해서 새로운 뭔가를 창조할 수 있는 능력을 키우시면 엄청난 결과를 얻을 수 있을 거에요.

언제나 그럴듯이 상상의 나래를 펼쳐 보세요.

댓글()