본문 바로가기
-----ETC-----/C++ 임베디드 시스템 프로그래밍 시리즈

[C++ 임베디드 시스템 프로그래밍 시리즈] Day 10: 온도 센서 제어

by cogito21_cpp 2024. 8. 1.
반응형

온도 센서의 개요

온도 센서는 주변 환경의 온도를 측정하여 아날로그 또는 디지털 신호로 출력하는 장치입니다. 임베디드 시스템에서는 다양한 온도 센서를 사용하여 온도를 모니터링하고 제어할 수 있습니다. 오늘은 온도 센서를 사용하는 방법을 학습하겠습니다.

1. 온도 센서 종류

온도 센서는 출력 신호 형태에 따라 아날로그 센서와 디지털 센서로 나눌 수 있습니다.

  • 아날로그 온도 센서: TMP36, LM35 등. 아날로그 전압을 출력하며, 이를 ADC를 통해 읽습니다.
  • 디지털 온도 센서: DS18B20, DHT11, DHT22 등. 디지털 데이터를 출력하며, I2C, SPI, 1-Wire 등의 인터페이스를 사용합니다.

2. 아날로그 온도 센서 사용

TMP36 온도 센서를 사용하여 아날로그 온도를 측정하는 방법을 살펴보겠습니다.

 

TMP36 온도 센서

TMP36은 저전압 온도 센서로, 섭씨 온도에 비례하는 아날로그 전압을 출력합니다.

 

하드웨어 연결

  1. TMP36 연결:
    • VCC: 5V 또는 3.3V
    • GND: GND
    • OUT: 아날로그 입력 핀 (예: A0)

 

예제: TMP36 온도 센서 사용

다음 예제는 TMP36 온도 센서를 사용하여 온도를 측정하고, 시리얼 모니터에 출력하는 방법을 보여줍니다.

const int tempPin = A0; // 온도 센서 핀

void setup() {
    Serial.begin(9600); // 시리얼 통신 시작
}

void loop() {
    int analogValue = analogRead(tempPin); // 아날로그 값 읽기
    float voltage = analogValue * (5.0 / 1023.0); // 전압으로 변환
    float temperatureC = (voltage - 0.5) * 100.0; // 온도로 변환 (섭씨)
    Serial.print("Temperature: ");
    Serial.print(temperatureC);
    Serial.println(" C");
    delay(1000); // 1초 대기
}

 

3. 디지털 온도 센서 사용

DS18B20 디지털 온도 센서를 사용하여 디지털 온도를 측정하는 방법을 살펴보겠습니다.

 

DS18B20 온도 센서

DS18B20은 1-Wire 인터페이스를 사용하는 디지털 온도 센서로, 높은 정확도를 제공합니다.

 

하드웨어 연결

  1. DS18B20 연결:
    • VCC: 5V 또는 3.3V
    • GND: GND
    • DQ: 디지털 핀 (예: 2)
    • 4.7kΩ 풀업 저항을 DQ와 VCC 사이에 연결

 

DS18B20 라이브러리 설치

DS18B20 라이브러리를 설치하여 아두이노에서 쉽게 사용할 수 있습니다.

  1. Arduino IDE 라이브러리 매니저 열기:
    • Sketch -> Include Library -> Manage Libraries...
  2. 라이브러리 검색 및 설치:
    • DallasTemperature를 검색하고, DallasTemperature 라이브러리를 설치합니다.
    • OneWire 라이브러리도 설치합니다.

 

예제: DS18B20 온도 센서 사용

다음 예제는 DS18B20 온도 센서를 사용하여 온도를 측정하고, 시리얼 모니터에 출력하는 방법을 보여줍니다.

#include <OneWire.h>
#include <DallasTemperature.h>

const int oneWireBus = 2; // DS18B20 데이터 핀

OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);

void setup() {
    Serial.begin(9600); // 시리얼 통신 시작
    sensors.begin(); // DS18B20 센서 시작
}

void loop() {
    sensors.requestTemperatures(); // 온도 측정 요청
    float temperatureC = sensors.getTempCByIndex(0); // 첫 번째 센서의 온도 읽기
    Serial.print("Temperature: ");
    Serial.print(temperatureC);
    Serial.println(" C");
    delay(1000); // 1초 대기
}

 

마무리

오늘은 아날로그 및 디지털 온도 센서를 사용하여 온도를 측정하는 방법을 학습했습니다. TMP36 아날로그 온도 센서와 DS18B20 디지털 온도 센서를 사용하여 온도를 측정하고, 측정된 값을 처리하는 방법을 익혔습니다. 다음 날에는 조도 센서와 제어에 대해 더 깊이 알아보겠습니다.

질문이나 추가적인 피드백이 있으면 언제든지 댓글로 남겨 주세요.

Day 11 예고

다음 날은 "조도 센서와 제어"에 대해 다룰 것입니다. 조도 센서를 사용하여 주변의 밝기를 측정하고, 이를 제어하는 방법을 학습하고, 실습 예제를 통해 이해를 돕겠습니다.

반응형