본문 바로가기
로보틱스/아두이노

#3 온도센서

by J-Build 2020. 11. 13.

온도 센서를 사용해서 피부의 온도를 측정하고 LED를 통해서 표현해보도록 해볼께요. 

 

회로 구성에 필요한 준비물은 아래와 같아요. 

- LED

- 220 OHM 레지스터

- 온도센서

- 아두이노

- 빵판

- 점퍼선

 

자 그럼 시작해 볼까요. 먼저 아래와 같이 아두이노와 빵판에 회로를 구성합니다. 

LED는 아두이노의 디지털핀에 연결을 하고 온도센서는 아날로그핀에 연결을 합니다. 이유는 LED는 0과 1로 제어가 가능하지만 온도 센서는 그 값이 범위를 가진 숫자로 나오기 때문입니다. 

 

그리고 위의 회로에 따라서 실제 회로를 구성해 볼께요. 

짠 아래처럼 회로가 구성되었습니다. 

 

그럼 센서 제어를 위한 코드를 한번 볼까요. 

전체적인 구성은 어렵지 않습니다. 온도센서에서 값을 읽어서 그 값에 맞춰서 적절히 LED를 켜주거나 꺼주면 되죠. 또 온도센서에서 읽은 값을 시리얼 연결을 통해서 컴퓨터 화면에서 읽도록 해줄께요. 그래야 센서값 변화를 쉽게 확인할 수 있으니까요. 

// 현재 온도에 맞춰서 설정해주세요.
float base_temp = 22.0;

void setup() {
  // put your setup code here, to run once:
  // 아두이노에서 보내는 메세지를 컴퓨터에서 받기 위해서 
  // 시리얼통신을 시작해줍니다. 
  Serial.begin(9600);
  
  // LED 제어를 위해서 디지털핀을 출력모드로 설정합니다. 
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  
  // 그리고 핀들의 초기상태를 모두 LOW로 줘어서,
  // LED가 off상태가 되도록 합니다. 
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  // 온도센서는 아날로그 핀에 연결되어있습니다. 
  // 아날로그 핀에서 센서값을 읽어옵니다. 
  int sensor_value = analogRead(A1);
  
  // 시리얼통신을 통해서 메세지를 출력합니다. 
  // 해당 메세지는 시리얼모니터를 통해서 확인이 가능합니다. 
  Serial.print("Sensor Value: ");
  Serial.print(sensor_value);

  // 센서값을 통해서 볼트값을 계산합니다. 
  float voltage = (sensor_value / 1024.0) * 5.0;

  Serial.print(", Volts: ");
  Serial.print(voltage);

  Serial.print(", degree C: ");

  // 그리고 볼트 값을 통해서 온도를 계산합니다. 
  float temperature = (voltage - .5) * 100;
  Serial.println(temperature);

  // 조건문에서 센서의 온도가 올라갈수록 
  // LED가 하나씩 켜지도록 설정합니다. 
  if(temperature < base_temp) {
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  } else if(temperature >= base_temp+2 && temperature < base_temp+4) {
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  } else if(temperature >= base_temp+4 && temperature < base_temp+6) {
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, LOW);
  } else {
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
  }

  delay(1);
}

 

그리고 프로그램을 아두이노 보드에 업로드 해볼께요. 어떤 값들이 읽히는지는 아래처럼 아두이노 툴의 시리얼 모니터를 실행해보면 확인할 수 있습니다. 손으로 온도센서를 만지면 온도가 올라가는것을 시리얼모니터에서 확인할 수 있습니다. 또한 LED를 통해서 확인할 수 도 있겠죠. 

 

이번 포스팅에서는 온도 센서값을 읽어오는것에 대해서 알아봤습니다. 기억해야 할 것은 아래 두 가지로 요약할 수 있겠습니다. 

  1. 온도센서는 아날로그핀을 통해서 읽어온다. 
  2. 아두이노에서 출력하는 메세지를 보기 위해서는 시리얼통신을 사용한다. 

그럼 빠이~!! 

 

댓글