초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

서보모터 x 온도센서-온도 측정계 만들기

2015-01-23 10:36:28

개요

 

집 안의 온도를 알고 싶은데 집에 온도계가 없으신가요?
아두이노와 아날로그 온도센서만 있다면 온도계가 없어도 집 안의 온도를 잴 수 있습니다.




물론 단순하게 컴퓨터에 온도값을 출력해 주는 모습이 아닌 서보모터를 사용하여 자동차 계기판처럼 온도 측정계를 만들 수 있습니다.
아날로그 온도센서가 측정한 값을 서보모터의 각도값으로 변환시켜 서보모터의 움직임을 통해 우리는 현재의 온도를 눈으로 볼 수 있습니다.


출처 : http://www.samsamstory.com/1268

아두이노를 사용하여 컴퓨터 모니터 위에 온도 측정계를 달아보는건 어떨까요?


 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지보드 1  
2 서보모터 1 서보모터 mini
6 아날로그 온도 센서 1 TMP36
9 브레드 보드 1  
10 점퍼 케이블 8  

 

부품명 오렌지보드 서보모터 아날로그 온도 센서 브레드보드 점퍼 케이블
부품 사진  

 

하드웨어 making

브레드 보드

 

전자 회로도




계기판은 반원으로 0부터 30도까지의 온도를 표현할 수 있습니다.




계기판의 바늘은 뒤쪽에 달린 서보모터를 통해 제어하게 됩니다.

 

소프트웨어 coding

// 서보모터를 쉽게 제어하기 위하여 라이브러리를 추가합니다.
#include <Servo.h>
//변수 선언
float voltage = 0;
float sensor = 0;
float celsius = 0;
int angle = 0;

Servo myservo; //서보모터 객체 선언

void setup() {
  myservo.attach(4);  //서보모터를 디지털 핀4번으로 설정합니다.
  Serial.begin(9600); //시리얼 통신을 초기화하고 통신속도를 9600bps로 설정합니다.
}

void loop() {
  sensor = analogRead(0); //아날로그 0번핀에 연결된 아날로그 온도센서로 부터 값을 읽어들입니다.
  //정해진 과정을 통해 센서에서 읽어들인 값을 섭씨온도로 변환합니다.
  voltage = (sensor*5000)/1024;
  voltage = voltage-500;
  celsius = voltage/10;
  
  //시리얼모니터에 온도값을 출력합니다.
  Serial.print(celsius);
  Serial.println((char)176);

  //map함수를 통해 측정된 온도값을 서보모터가 움직일 각도로 변환시킵니다.
  //celsius값은 0부터 30까지의 값만을 유효값으로 읽습니다.
  //유효값으로 읽은 0부터 30사의 값을 180부터 0사이의 값으로 변환시킵니다.
  int angle = map(celsius,0,30,180,0);
  //서보모터의 각도를 시리얼모니터에 출력합니다.
  Serial.print(angle);
  Serial.println(" degree");
 
  //서보모터에 주어진 각도값이 0부터 180사이의 유효한 값일 경우 서보모터를 제어합니다.
  if(angle >=0 && angle <=180) {
    myservo.write(angle);
    delay(1000); //1초마다 반복하게 됩니다.
  }
}

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

서보모터, 아두이노, 오렌지보드