본문 바로가기
아두이노 러닝보드/아두이노 러닝보드 프로그그램설계

아두이노 학습 키트를 이용한 디지털 온도계 만들기

by 모빌리티키즈 2024. 12. 18.
728x90
반응형

개요

이 레슨에서는 아두이노 학습 키트를 사용하여 LM35 온도 센서와 LCD 디스플레이를 이용한 간단한 디지털 온도계를 만드는 방법을 배웁니다. LM35 센서와 LCD는 아두이노 학습 키트에 내장되어 있습니다. 학생들은 몇 개의 점퍼 와이어를 사용하여 센서와 디스플레이를 아두이노에 연결한 후, 코드를 작성하고 아두이노에 업로드합니다.

학습 목표

이 레슨을 완료한 후 학생들은 다음을 배웁니다:

  • 아날로그 센서와 LCD 디스플레이를 이용한 회로 설계 방법.
  • 간단한 스케치를 활용하여 센서 데이터를 읽고, 계산하고, LCD 디스플레이에 시각화하는 방법.
  • 아두이노에서 아날로그-디지털 변환 과정을 이해.
  • 아두이노 아날로그 읽기에서 반환된 데이터로부터 전압을 계산하는 방법.

중요한 질문

  • 아날로그와 디지털의 차이점은 무엇인가요?
  • 디지털 변환이 필요한 이유는 무엇인가요?
  • 해상도란 무엇이며 왜 중요한가요?
  • 센서란 무엇인가요?

필요한 재료

  • 아두이노 학습 키트 및 USB 케이블
  • 6개의 수-수 점퍼 와이어
  • 1개의 수-암 점퍼 와이어
  • PC 접속

기본 지식

LM35 온도 센서

LM35는 온도에 따라 출력 핀에서 변하는 가변 전압을 생성하는 정밀 집적 회로 온도 센서입니다. 이 소형의 저렴한 IC는 -55°C에서 150°C 사이의 온도를 측정할 수 있으며, ADC 기능이 있는 아두이노와 쉽게 인터페이스할 수 있습니다. LM35의 주요 장점은 선형성으로, 온도가 1°C 상승할 때마다 출력 전압이 10mV씩 상승합니다.

핀 구성 및 연결

LM35는 세 개의 핀(VCC, Vout, GND)만 있습니다. 아두이노 학습 키트에서는 VCC와 GND 연결이 이미 되어 있어 사용이 간편합니다. Vout 핀을 아두이노의 아날로그 핀에 연결하기만 하면 됩니다.

LM35 핀아두이노 연결
VCC 5V
Vout 아날로그 핀(예: A0)
GND GND

절차

  1. 온도 센서 연결: LM35의 Vout 핀을 남성-여성 점퍼 와이어를 사용하여 아두이노의 아날로그 핀(A0)에 연결합니다.
  2. LCD 핀 연결: 남성-남성 점퍼 와이어를 사용하여 LCD 핀을 아두이노 핀에 연결합니다.
  3. 코드 작성: 아두이노 IDE를 열고 제공된 코드를 새로운 스케치에 복사한 후 저장합니다.
  4. 업로드: USB 케이블을 사용하여 키트를 PC에 연결하고 제공된 스케치를 키트에 업로드합니다.
  5. 온도 표시: 디스플레이에 온도가 표시됩니다.

라이브러리 설치

DS1307 RTC 모듈을 위한 서드파티 라이브러리를 사용해야 합니다. 이를 위해 라이브러리를 다운로드하고 아두이노 환경에 추가해야 합니다. 다음 링크에서 라이브러리를 다운로드합니다: RTClib GitHub. ZIP 파일을 다운로드한 후, 파일 이름에 공백이나 하이픈이 포함되어 있다면 이름을 변경합니다. 아두이노 IDE에서 Sketch 메뉴로 이동하여 "Include Library"를 선택한 다음 "Add .ZIP Library"를 선택합니다. 다운로드한 .zip 파일을 찾아 추가합니다. 이제 라이브러리를 사용할 준비가 되었습니다.

LCD 디스플레이

LCD(Liquid Crystal Display)는 전자 프로젝트에서 매우 인기가 있으며, 센서 데이터와 같은 정보를 표시하는 데 유용하고 매우 저렴합니다. 키트에 사용된 LCD는 16개의 핀이 있으며, 왼쪽에서 첫 번째 핀은 그라운드(GND) 핀입니다. 두 번째 핀은 VCC로 아두이노 보드의 5V 핀에 연결됩니다. Vo 핀에는 디스플레이의 대비를 조절할 수 있는 포텐셔미터를 연결할 수 있습니다.

  • RS 핀: 명령 또는 데이터를 LCD에 전송할지 선택합니다. RS 핀이 낮은 상태(0V)에 있을 때는 명령을, 높은 상태(5V)에 있을 때는 데이터를 전송합니다.
  • E 핀: 레지스터에 쓰기를 활성화합니다.
  • D0-D7 핀: 데이터 핀입니다.
  • A와 K 핀: LED 백라이트용입니다.

LCD는 4비트 모드와 8비트 모드에서 모두 작동할 수 있습니다. 4비트 모드에서는 D4-D7만 아두이노에 연결되며, D0-D3는 연결하지 않아도 됩니다. 키트에서는 GND, VCC, Vo, A, K가 이미 적절한 소스에 연결되어 있습니다.

LCD와 아두이노 연결 표

LCD 핀아두이노 핀
RS 9
E 8
D4 4
D5 5
D6 6
D7 7

아날로그-디지털 변환

마이크로컨트롤러는 이진(디지털) 신호를 감지할 수 있습니다: 버튼이 눌렸는가 아닌가? 이러한 신호는 디지털 신호입니다. 마이크로컨트롤러가 5V로 전원을 공급받으면 0V를 이진 0으로, 5V를 이진 1로 이해합니다. 그러나 세상은 그렇게 간단하지 않습니다. 신호가 2.75V이면 그것은 0일까요 1일까요? 우리는 종종 온도, 소리, 빛과 같은 변하는 신호(아날로그 신호)를 측정해야 합니다.

대부분의 마이크로컨트롤러에는 이러한 전압을 프로그램에서 사용할 수 있는 값으로 변환할 수 있는 장치가 내장되어 있습니다. 모든 핀이 아날로그-디지털 변환을 할 수 있는 것은 아닙니다. 아두이노 보드에서는 이러한 핀이 A0부터 A5까지 아날로그 핀으로 표시됩니다. 아두이노의 ADC는 10비트로, 이는 1,024(2^10)개의 이산 아날로그 레벨을 감지할 수 있음을 의미합니다.

일부 수학

ADC는 비례 값을 제공합니다. 이는 ADC가 5V를 1023으로 가정하고, 5V 이하의 값은 1023과의 비율로 감지됨을 의미합니다. 이를 통해 실제 전압을 다음과 같은 관계식으로 계산할 수 있습니다: 

연습 문제

  1. 아날로그 전압이 2.72V일 때, ADC는 어떤 값을 보고할까요?
    • 해결 방법: 



  2. 아날로그 핀에서 420을 읽었다면, 실제 아날로그 전압은 얼마일까요? (직접 시도해 보세요)

추천 절차

  1. 온도 센서 연결: LM35의 Vout 핀을 남성-여성 점퍼 와이어를 사용하여 아두이노의 아날로그 핀(A0)에 연결합니다. Vout 핀은 키트에서 LCD 오른쪽 아래에 있는 T_CONN으로 표시됩니다.
  2. LCD 핀 연결: 남성-남성 점퍼 와이어를 사용하여 표 2에 따라 LCD 핀을 아두이노 핀에 연결합니다.
  3. 코드 작성: PC에서 아두이노 IDE를 실행하고, 다음 스케치를 새 파일에 복사합니다.
  4. 저장: 파일에 이름을 지정하여 저장합니다.
  5. 업로드: USB 케이블을 사용하여 키트를 PC에 연결하고 스케치를 키트에 업로드합니다.
  6. 온도 관찰: 디스플레이에서 실내 온도를 관찰합니다.
  7. 온도 변화 확인: 손가락으로 센서를 잡고 온도 변화를 관찰합니다.

 

 

// include the library code: 
#include <LiquidCrystal.h> 
 
// initialize the library by associating any needed LCD 
//interface pin 
// with the arduino pin number it is connected to 
const int rs = 9, en = 8, d4 = 4, d5 = 5, d6 = 6, d7 = 7; 
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); 
 
void setup() { 
  // set up the LCD's number of columns and rows: 
  //it a 16 character 2 line lcd 
  //following line is required to initilized the lcd 
  lcd.begin(16, 2); 
  
} 
 
void loop() { 
  //read the temperature sensor 
  int sensorValue = analogRead(A0); 
  //convert the adc value to analog voltage 
  float voltage = (sensorValue * 5.0)/1023.0; 
  //convert the voltage into milivolts 
  float voltageInMV = voltage * 1000; 
  //according to datasheet 10mV for 1 degree Celsius 
  float temperature = voltageInMV/10.0; 
  //print the result as : Temp: 23.57 C 
  lcd.print("Temp: "); 
  lcd.print(temperature); 
  lcd.print("C"); 
}

 

 

추가 질문이나 도움이 필요하시면 언제든지 말씀해 주세요! 📚🔧🚀

 

이번 레슨에서는 아두이노 학습 키트를 활용하여 디지털 온도계를 만드는 방법을 배웠습니다. LM35 온도 센서와 LCD 디스플레이를 사용하여 온도를 측정하고 시각화하는 과정을 통해, 아날로그 신호의 디지털 변환 과정을 이해하고, 실시간 데이터를 읽고 처리하는 방법을 익혔습니다.

학생들은 아두이노를 통해 아날로그 센서 데이터를 읽고, 이를 LCD에 표시하는 방법을 배움으로써 실용적인 전자공학과 프로그래밍 기술을 습득했습니다. 특히, I2C 통신 프로토콜을 이해하고, 외부 라이브러리를 사용하는 방법을 학습하여 다양한 전자 프로젝트에 적용할 수 있는 기초 지식을 쌓았습니다.

이 프로젝트를 통해 아날로그-디지털 변환의 중요성을 이해하고, 실시간 데이터의 정확한 측정과 표시 방법을 경험함으로써, 전자 공학과 프로그래밍의 기본 원리를 실습해 볼 수 있었습니다. 앞으로도 이러한 기초 지식을 바탕으로 더 복잡하고 응용 가능한 프로젝트를 진행하며, 전자 및 프로그래밍 기술을 더욱 심화시켜 나갈 수 있기를 바랍니다.

추가 질문이나 도움이 필요하면 언제든지 말씀해 주세요! 📚🔧🚀

728x90
반응형