당신은 주제를 찾고 있습니까 “아두 이노 온도 센서 – [10강] 아두이노 온도센서 TMP36 / 온도 측정 / 온도센서 led 제어 / analogRead() / 회로도, 소스코드 공유“? 다음 카테고리의 웹사이트 ppa.fordvinhnghean.com 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.fordvinhnghean.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 코사임당 이(가) 작성한 기사에는 조회수 8,768회 및 좋아요 132개 개의 좋아요가 있습니다.
Table of Contents
아두 이노 온도 센서 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 [10강] 아두이노 온도센서 TMP36 / 온도 측정 / 온도센서 led 제어 / analogRead() / 회로도, 소스코드 공유 – 아두 이노 온도 센서 주제에 대한 세부정보를 참조하세요
#아두이노 #온도센서 #온도센서LED제어
[코사임당의 아두이노 강의] 10강입니다.
아두이노 온도센서 analogRead()
– 온도센서 (TMP36)
– 온도센서의 실생활 사용 예시
– 섭씨온도, 화씨온도 변환
– 온도센서로 온도 측정하여 시리얼 모니터로 출력하기
– 온도센서 led 제어
▶ 강의내용의 회로도와 소스코드를 아래 블로그에 공유합니다.
다운받으신 후 사용하실 수 있어요.
https://blog.naver.com/jokjjs7726/222077614331
__________________________________________________
▶ 이 강의 듣기 전에 먼저 공부해야하는 강좌
[1강] 아두이노란 / 아두이노 우노 / 아두이노 종류 / 아두이노 구조
https://youtu.be/zyM53Bq-1ck
[2강] 아두이노 IDE 설치 및 실행 / 아두이노를 컴퓨터에 연결하기 / println() 함수 실행하기
https://youtu.be/zUqAlf5FoZY
[3강] 아두이노 시리얼통신 println / print / begin 함수 사용하기
https://youtu.be/f6XnZizIxFg
[4강] 아두이노 LED 제어 / digitalWrite() / analogWrite() / 브레드보드 설명
https://youtu.be/6TEaXPfJS40
[9강] 아두이노 조도센서 빛센서 포토레지스터 / 조도센서 LED 제어
https://youtu.be/86KqRRzmnO4
▶ 격주 화요일에 강의 업로드됩니다.
▶ 아두이노에 대한 질문은 유튜브 댓글로만 받습니다.
__________________________________________________
▶ 강연 및 강의 문의
[email protected]
▶ 코사임당 인스타그램
https://instagram.com/cosaimdang?igshid=1wsq75zxztqpo
아두 이노 온도 센서 주제에 대한 자세한 내용은 여기를 참조하세요.
[아두이노 강좌] 온도센서 TMP36을 이용한 온도값 출력하기
온도 센서(Temperature Sensor)란 온도의 변화에 응답하는 센서입니다. 온도센서는 열을 감지하여 전기신호를 내는 센서로, 접촉식과 비접촉식으로
Source: m.blog.naver.com
Date Published: 7/13/2021
View: 6094
06-3 온도센서(TMP36) 사용하기 – 아두이노 시뮬레이터
온도센서는 온도를 감지해 전기신호로 바꿔주는 센서를 의미합니다. 아두이노 시뮬레이터는 TMP36이라는 온도센서를 지원하며 아래와 같이 세 개의 단자로 구성됩니다.
Source: wikidocs.net
Date Published: 9/27/2021
View: 5552
[간단한 아두이노 코딩] 5. 온도 센서 사용하기(DS18B20, LM35)
아날로그 센서는 아두이노의 아날로그 핀으로 0~1023까지 값에 해당하는 결과를 반환한다. 이 값은 각 센서 제조사에서 제공하는 공식을 통하여 실제 온도 …
Source: jcdgods.tistory.com
Date Published: 4/3/2021
View: 2385
[Arduino] 아두이노 온도센서(LM35) 쉽게 사용하기 – 코딩아트
온도센서는 열전도를 통해서 받은 에너지값을 전기신호로 바꾸어서 결과값을 나타내는 센서다. 온도에 따라 전위차가 변하므로써 대략 218K~423k까지 측정 …
Source: artsung410.tistory.com
Date Published: 9/4/2022
View: 4432
[Arduino|아두이노] 온도센서 (LM35) 사용방법
아두이노 온도센서(LM35) 사용방법 아날로그 온도센서 LM35를 사용하여 온도를 측정하는 방법을 알아보자. LM35는 0도~100도까지 측정가능 하고 빠른 …
Source: gent.tistory.com
Date Published: 2/11/2022
View: 2288
Arduino Uno 로 DS18B20 온도센서를 사용해서 실내온도 및 …
DALLAS 의 DS18B20 IC 기반의 디지털 타입의 온도센서 모듈로 위 이미지 처럽 다양한 타입의 제품이 있습니다 아두이노 등의 마이크로 컨트롤 보드와 …
Source: rockjjy.tistory.com
Date Published: 8/4/2021
View: 2606
아두이노로 온도(LM35D)를 측정하기
아두이노 보드의 아날로그 입력은 0~5V까지의 전압을 1024단계로 읽어 … 이번 예제는 온도 센서의 값을 읽어 들여, 섭씨로 변환하는 것을 LCD에 …
Source: kogun.tistory.com
Date Published: 1/20/2021
View: 8528
주제와 관련된 이미지 아두 이노 온도 센서
주제와 관련된 더 많은 사진을 참조하십시오 [10강] 아두이노 온도센서 TMP36 / 온도 측정 / 온도센서 led 제어 / analogRead() / 회로도, 소스코드 공유. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
![[10강] 아두이노 온도센서 TMP36 / 온도 측정 / 온도센서 led 제어 / analogRead() / 회로도, 소스코드 공유](https://i.ytimg.com/vi/xRG6w78Ii1c/maxresdefault.jpg)
주제에 대한 기사 평가 아두 이노 온도 센서
- Author: 코사임당
- Views: 조회수 8,768회
- Likes: 좋아요 132개
- Date Published: 2020. 9. 1.
- Video Url link: https://www.youtube.com/watch?v=xRG6w78Ii1c
[아두이노 강좌] 온도센서 TMP36을 이용한 온도값 출력하기
▶ TMP36 온도센서를 이용하여 현재 기온을 측정해 보겠습니다.
LCD에 표시되는 온도는 주위의 온도에 따라 변하게 됩니다.
현재 기온보다 따듯한 손을 tmp36온도 센서에 가져다 대었을 때 LCD에
표시된 온도가 올라가게 됩니다.
만약 손을 뗀다면 주위의 온도를 감지하여 tmp36온도센서가 감지한 온도값이
서서히 내려가게 됩니다.
3.1 준비물
▶ 실습에 앞서 준비물이 필요합니다.
(링크를 클릭하면 해당 제품 페이지로 이동합니다.)
아두이노 우노 보드(DIP) : 링크 클릭
브레드보드 400홀(불투명) : 링크 클릭
점퍼 케이블 : 링크 클릭
온도센서 TMP 36 : 링크 클릭
5파이(5mm) LED : 링크 클릭
LCD 1602(I2C) 디스플레이 모듈 : 링크 클릭
3.2 실습하기
1) 아두이노와 연결하기
▶ 아래 결선도와 같이 온도 센서 TMP 36, LCD를 아두이노와 연결합니다.
06-3 온도센서(TMP36) 사용하기
온도센서(TMP36) 소개
온도센서는 온도를 감지해 전기신호로 바꿔주는 센서를 의미합니다. 아두이노 시뮬레이터는 TMP36이라는 온도센서를 지원하며 아래와 같이 세 개의 단자로 구성됩니다. 첫번째 단자는 Vs라고하며 전원선에 배선하고 Vout은 온도 값에 해당하는 전압을 출력합니다. 그리고 GND는 그라운드에 연결하는 단자입니다.
온도센서(TMP36)에 관한 정보는 데이터시트(Datasheet)를 통해 확인할 수 있으며, 데이터시트는 전자부품, 전원공급장치, 소프트웨어 등의 성능과 특성을 설명하는 문서입니다. 인터넷 검색을 통해 TMP36에 관한 데이터시트를 찾아보면 동작전압과 각 단자를 어디에 연결해야 하고, Vout으로 출력되는 전압을 온도로 바꾸기 위해 어떤 공식을 적용해야 할지 참고할 수 있습니다.
온도센서 값 측정하기
온도센서를 아두이노에 연결해 온도 값을 측정하는 프로그램을 작성해보겠습니다. 아두이노 시뮬레이터의 작업판 우측 기본 구성요소 항목에서 온도센서(TMP36)를 드래그 앤 드랍으로 작업판에 가져옵니다.
온도센서 값 측정하기 회로구성
아두이노와 브레드보드를 작업판에 배치한 뒤 온도센서를 브레드보드에 연결합니다. 작업판 좌측 상단의 회전(Rotate) 버튼을 활용해 온도센서의 단자가 아두이노를 향하도록 방향을 변경하고 위에서부터 그라운드(GND), 출력(Vout), 전원(Vs)에 맞게 브레드보드에 배선합니다.
온도센서 값 측정하기 스케치 코드
스케치 코드에서 8번째 줄은 온도센서의 출력(Vout)을 아두이노의 아날로그 A0핀에 연결해 측정한 값을 readValue에 저장합니다. 9번, 10번째 줄에서 전압과 온도로 변환하는 공식이 적용되는데 변환공식을 이해하기 위해 온도센서(TMP36)의 데이터시트를 참고하면 됩니다. 아래 그림은 온도센서(TMP36)의 데이터시트 중 온도와 전압의 관계도를 보여줍니다.
전압이 1V일 때 온도는 섭씨 50°C이며 전압이 0.5V일 때 온도는 섭씨 0°C 입니다. 이를 일차 방정식으로 표현하면 아래 표와 같습니다. 스케치 코드의 9번째 줄은 디지털 값으로 변환된 값을 다시 아날로그 값인 전압으로 변환하는 과정입니다. 즉, readValue에 5를 곱한 것은 동작전압이 5V이기 때문이며 동작전압이 3.3V나 다른 전압일 경우 이 값을 수정해야 합니다. 1024로 나누는 이유는 10비트의 ADC를 사용하기 때문입니다. 그리고 마지막에는 온도 값을 출력해야 하기 때문에 전압에 관한 식을 온도에 관한 식으로 변환하고 이 수식을 스케치 코드에 적용하여 10번째 줄과 같이 적용합니다.
스케치 코드의 12번, 13번째 줄은 시리얼 모니터에 온도 값을 출력하기 위한 목적입니다. 시뮬레이터를 실행시켜 동작 결과를 살펴보겠습니다. 시뮬레이터 실행 중 온도센서를 마우스 왼쪽버튼으로 클릭하면 좌측에 슬라이드바가 생성되며 동그란 버튼을 위아래로 조절해 온도 값을 변경할 수 있습니다. 마우스 스크롤을 이용해 작업판을 확대하면 변경한 온도를 확인 가능합니다. 또한 시리얼 모니터를 통해 일차 방정식을 적용한 결과가 온도센서에서 변경한 온도 값과 동일한지 확인할 수 있습니다.
[간단한 아두이노 코딩] 5. 온도 센서 사용하기(DS18B20, LM35)
728×90
온도 센서 사용하기(DS18B20, LM35)
1. 온도 센서 (DS18B20, LM35)
가장 흔하게 볼 수 있는 온도 센서는 아날로그 LM35와 디지털 DS18B20이다. 아날로그 센서는 아두이노의 아날로그 핀으로 0~1023까지 값에 해당하는 결과를 반환한다. 이 값은 각 센서 제조사에서 제공하는 공식을 통하여 실제 온도 값을 구할 수 있다. 반면 디지털 센서는 직접 그 값을 반환하기 때문에 별도로 계산할 필요는 없지만 일부 센서의 경우 해당 업체의 라이브러리가 필요한 경우가 있다.
이번 포스팅에서는 아날로그 온도 센서인 LM35와 디지털 온도 센서인 DS18B20을 이용하여 온도를 구해보고, 두 개의 온도 센서의 평균 값이 30이 넘는 경우 LED를 동작하는 간단한 코드를 작성한다.
2. LM35 온도 읽기
LM35는 아날로그 센서로 섭씨 2도에서 150도까지 측정할 수 있다. 또한 0도(0v)부터 1도 상승시 마다 0.01V(10mV)가 증가한다. 입력 핀은 5v, GND 그리고 데이터 라인이며, 데이터 라인은 아날로그 값이므로 아두이노의 ANALOG IN 핀에 입력해야 한다.
아두이노 아날로그 값(X)은 0~1023으로 리턴되며, 이는 GND부터 기준 전압 Vref 값을 매핑한 것과 같다. 따라서 기준전압이 5V라면, 5*X/1024로 계산하면 0~5V 값을 얻을 수 있다.
이때 LM35 센서는 0.01V마다 1도를 표현하므로, 5*X/1024/0.01으로 계산하게 되면 실제 온도 값을 알 수 있다. 여기서 0.01을 나누는 것은 100을 곱하는것과 같으므로 다시금 아래와 같이 쓸 수 있다.
측정 온도 = 5 * X * 100 / 1024
3. LM35 소스코드
아날로그 값을 1024로 다시 나누었기 때문에 값은 [0,1)이다. 따라서 항상 소수점으로 계산되어야 정상적인 온도를 구할 수 있다. 이를 위하여 5를 5.0으로 표현하여 소수임을 컴파일러에게 알려준다. 이후에는 항상 큰 방향으로 타입 캐스팅이 일어나므로 신경쓰지 않아도 된다.
또한 Serial 통신을 이용하여 컴퓨터에 실제 센서에서 읽은 값을 출력하기 위하여 setup에서 Serial.begin을 호출하여 준다. 이후 출력하고자하는 내용을 Serial.print 함수를 통해 진행한다. 시리얼 모니터는 단축키 ctrl+shift+M을 통해서 켤 수 있다.
#define TEMP_LM35 A0 void setup() { // 컴퓨터와 UART 통신을 하여, // 아두이노 IDE에 데이터를 송수신 할 수 있음 // Baud Rate 9600 Serial.begin(9600); } void loop() { // LM35 온도 공식을 이용하여 온도값 계산 // 1도 0.01v 상승 // 아두이노 아날로그 핀은 0~1까지 0~1023에 대응된다. // 따라서 읽은 값을 X는 5V 인가를 감안하면 // 5 * X / 1024 / 0.01 // == 5*X*0.01/1024 == 5*X*100/1024가 된다. float temp_lm35 = (5.0*analogRead(TEMP_LM35)*100)/1024; Serial.print(“LM35: “); Serial.println(temp_lm35); delay(1000); }
아래와 같이 시리얼 모니터에서 LM35에서 읽은 온도 값이 출력된다.
4. DS18B20 온도 읽기
DS18B20은 디지털 온도 센서로 해당 센서를 읽기 위해서는 라이브러리를 이용하거나 혹은 주소값을 이용하여 직접 엑세스 하여야 한다. 그러나 아두이노에서는 굳이 그런 난이도의 접근은 필요없겠다 싶어서 라이브러리를 이용한 간단한 방법을 포스팅한다.
DS18B20은 LM35와 똑같이 3개의 핀을 가지며, 차이점이라면 Pull up 저항을 데이터 라인에 달아주어야 한다. 이때 권장 저항은 4.7k이지만 만약 동일한 저항이 없다면 비슷한 저항을 달아주면 된다.
디지털 센서이므로 데이터 라인은 디지털 핀 2번에 연결해준다.
5. DS18B20 소스코드 + 라이브러리 추가하기
이제 라이브러리를 추가해보자.
(1) 상단 메뉴의 스케치-> 라이브러리 포함하기 -> 라이브러리 관리 혹은 ctrl + shift +I를 눌러 준다.
(2) 라이브러리 매니저에 DS18B20을 검색해서 Dallas Temperature를 설치하여 준다.
아래와 같은 창이 나온다면, 그냥 Install All을 해주는 편이 낫다.
이제 소스코드를 작성하자. 이러한 예제 코드는 각 라이브러리에 포함되어 있거나 혹은 구글링을 하면 쉽게 찾을 수 있다.
// DS 온도 라이브러리 추가 #include
#include // DS18B20 디지털 2번핀 #define TEMP_18B20 2 // 라이브러리 호출 방식에 따라 호출 OneWire oneWire(TEMP_18B20); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); } void loop() { // 센서 값을 읽음(다수개의 DS18B20 연결 가능) sensors.requestTemperatures(); // 첫번째 DS18B20의 온도를 가져옴 float temp_18b20 = sensors.getTempCByIndex(0); Serial.print(“DS18B20: “); Serial.println(temp_18b20); delay(1000); } 실제 실행한 결과는 다음과 같다.
6. 두 온도 센서를 읽어 LED 켜기
이제 서로 다른 두 온도 센서의 결과를 평균내어 30도가 넘어가면 LED를 켜는 회로를 구성해보자. 이 두개를 섞어 쓰는 이유는 서로 다른 종류이기도 하지만, 온도 센서 자체의 오차가 존재함을 알았으면 하는 뜻이 담겨있다.
각 센서의 회로 구성은 달라진 것 없이 동일하며, LED 회로 또한 이전 포스트에서 꾸준히 사용한 형식이다.
LM35는 A1, DS18B20은 D2 그리고 LED는 D8핀을 이용할 것이다.
** A0에서 A1으로 바뀐 것은 아래의 회로도를 A1으로 캡쳐해버려서이다. 별뜻 없음
#include
#include #define LED_RED 8 #define TEMP_LM35 A1 #define TEMP_18B20 2 OneWire oneWire(TEMP_18B20); DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); pinMode(LED_RED, OUTPUT); } void loop() { float temp_lm35 = (5.0*analogRead(TEMP_LM35)*100)/1024.0; sensors.requestTemperatures(); float temp_18b20 = sensors.getTempCByIndex(0); Serial.print(“LM35: “); Serial.print(temp_lm35); Serial.print(“, DS18B20: “); Serial.println(temp_18b20); delay(1000); int led_on = (temp_18b20+temp_lm35)/2 > 30.0; digitalWrite(LED_RED, led_on); } 반응형
[Arduino] 아두이노 온도센서(LM35) 쉽게 사용하기
온도센서의 개요
온도 센서(Temperature Sensor)란 쉽게 설명하면 온도의 변화에 응답하는 센서다.
온도센서는 열전도를 통해서 받은 에너지값을 전기신호로 바꾸어서 결과값을 나타내는 센서다. 온도에 따라 전위차가 변하므로써 대략 218K~423k까지 측정이 가능하다.
온도가 서서히 변하는 물체나 장치에 사용하는것은 문제가 되지않으나, 온도변화가 급격한 물체에 사용하는 것은 적합하지 않다. 또한 값이 선형적으로 변해 프로그램이 용이하다. 그래서 우리 실생활에 온도센서가 유용하게 쓰인다, 우리가 집안에 보일러를 틀때 목표온도를 설정하게되는데, 목표온도가 실내온도까지 도달하게되면 보일러의 가열이 멈추도록 설계가 되어있다. 보일러는 온도센서를 활용한 대표적인 사례이다, 이 뿐만 아니라 에어컨에도 온도센서가 쓰이는데 목표온도까지 실내가 어느정도 냉방이되면, 저전력 냉방으로 바뀌기도 한다. 또는 이런 냉난방기에 현재온도가 얼마인지 표시까지 하도록 도와준다. 우리 실생활에서 자주쓰이는 이 온도센서의 원리를 아두이노를 통해서 알아보도록 하자.
예제실습 – 온도센서 작동확인
우선 온도센서는 주의해야할점이 있다. VCC와 그라운드를 반대로 연결시켜주면 쇼트가 나서 타버릴수 있으니 항상 극성을 잘 확인시켜주어야한다. 오른쪽 사진을 보면 온도센서(LM35)왼쪽핀이 5V 가운데가 OUTPUT, 오른쪽이 그라운드가 된다. 이핀을 각각 5V, 아날로그0번, GND에 연결시켜주도록 한다.
float temp; void setup() { Serial.begin(9600); } void loop() { int val = analogRead(A0); temp = val*0.48828125; //화씨 → 섭씨 변경 Serial.print(“Current Temperature : “); Serial.println(temp); delay(500); }
아두이노 코드는 위와같다.
우리가 일반적으로 온도센서로부터 읽어들이는값은 화씨단위이다. 그래서 화씨온도를 섭씨온도로 바꿔줄 필요가 있다.
val이라는 정수형 지역변수를 설정해주어서 섭씨온도로 변경한 값을 temp라는 변수에다가 넣어주면 우리가 섭씨온도로 온도값을 읽어들일수가 있다. (화씨온도가 편하면 그대로 사용해도 무방하다.)
컴파일을 진행시키고 시리얼모니터를 키게되면, 온도값이 출력되는것을 확인 할 수있다. (Current Temperature : Value)
예제실습 – RGB LED를 이용해서 온도에따라 색 변화시키기
온도센서는 여러가지 응용이 가능하다. RGB LED로 온도에따라서 색이 변하는 회로를 구성할 수 있다.
조건은 아래와 같다. 온도가 일정 값까지 올라가게되면 색을 변하게 설정해준다.
온도가 23이상 25미만이면 파란색불, 25이상 27도 미만이면 녹색불, 27이상이면 빨간색불을 켜도록 한다.
회로구성은 아까 구성했던 회로에다가 RGB LED를 추가하면된다. RGB LED는 총 4개의 핀으로 구성되어있고 3개의핀은 LED를 구성하는 핀이고, 1개의핀은 그라운드핀이다. R핀은 2번, G핀은 3번, B핀은 4번핀에다가 연결시켜주고, 나머지는 GND에다가 연결시켜주면된다.
float temp; void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); } void loop() { int val = analogRead(A0); temp = val * 0.48828125; //화씨 → 섭씨 변경 Serial.print(“Current Temperature : “); Serial.println(temp); if (temp >= 23 & temp < 25) { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); } else if (temp >= 25 & temp < 27) { digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); } else if {temp >= 27 digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); } }
코드는 위와같다. 조건식은 온도가 낮아지면 파란색에 가깝게, 온도가 높아질수록 빨간색에 가깝게 if문을 활용해서 코드를 만들도록한다. 우리가 이 코드를 활용하면 전자온도계에 LED를 이용해서 시각적으로 나타낼 수 있다.
컴파일을 진행시키게 되면 온도가 올라감에따라 파란색 – 녹색 -빨간색 순으로 RGB LED의 색상이 변하는것을 확인할 수 있다.
예제실습 – 온도값을 LCD에 나타내기
우리가 LCD(16×2)센서를 이용해서 전자온도계를 만들 수 있다. 매번 시리얼 모니터로 확인하던것을 LCD에 나타내서 눈으로 보기 쉽게 나타낼 수 있다. 회로구성은 위와같다. 온도센서는 아까와 같이 연결시켜주면 된다.
LCD(16×2) I2C타입은 총 4개의 핀으로 구성되어있다. VCC는 5V에 GND는 GND에 SDA는 아날로그 4번핀에 SCL은 아날로그5번핀에다가 차례로 연결시켜준다.
#include
#include float temp; LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display void setup() { Serial.begin(9600); } void loop() { lcd.init(); int val = analogRead(A0); temp = val*0.48828125; lcd.backlight(); lcd.setCursor(3,0); lcd.print(“Temperature”); lcd.setCursor(6,1); lcd.print(temp,1); lcd.setCursor(12,1); lcd.print(“C”); delay(1000); } 코드는 위와같다. 우리가 LCD 16×2타입을 사용하기 위해서는 라이브러리를 설치해주어야한다. (라이브러리 설치하는 방법은 본문하단에 링크에 남겨둠.)
컴파일을 진행시키면 온도변화값이 LCD에 출력되는것을 확인 할 수있다.
각자 위의 RGB LED 예제와, LCD예제를 활용해서 멋진 전자온도계를 만들어 보도록 해보자.
반응형
아두이노] 온도센서 (LM35) 사용방법
아두이노 온도센서(LM35) 사용방법
아날로그 온도센서 LM35를 사용하여 온도를 측정하는 방법을 알아보자.
LM35는 0도~100도까지 측정가능 하고 빠른 온도 변화에는 적합하지 않은 센서라고 한다.
아래의 예제로 사용방법을 테스트 해 보자.
아래 이미지의 순서대로 점퍼선을 연결하면 센서가 작동한다.
온도를 측정하여 시리얼 모니터에 출력하는 예제이다
float temperature; int reading; int lm35Pin = A0; void setup() { analogReference ( INTERNAL ); Serial . begin (9600); } void loop() { reading = analogRead (lm35Pin); temperature = reading / 9.31; Serial . println (temperature); delay (1000); }
온도센서에 순서대로 점퍼선을 연결하자
난방기 리모콘에 실내 온도가 22도로 표시된다
온도센서의 측정결과가 시리얼 모니터에 표시되는데 22도~23도를 오르락 내리락 한다
난방기 리모콘과 거의 흡사한 측정결과를 보여준다
온도센서를 활용하여 센서의 온도가 30도 이상 올라가면 LED를 켜는 예제를 만들어 보자
손자락으로 센서를 온도를 올리니 LED에 불이 켜진다
온도센서로 LED를 켜는 예제
float temperature; int reading; int lm35Pin = A0; int ledPin = 13; void setup() { analogReference ( INTERNAL ); pinMode (ledPin, OUTPUT ) ; } void loop() { reading = analogRead (lm35Pin); temperature = reading / 9.31; //온도가 30도 위로 올라가면 LED를 켠다 if(temperature > 30) { digitalWrite (ledPin, HIGH ); } else { digitalWrite (ledPin, LOW ); } delay (1000); }
Arduino Uno 로 DS18B20 온도센서를 사용해서 실내온도 및 수온 측정해 보기
반응형
Arduino Uno 로 DS18B20 온도센서를 사용해서 온도를 측정하는 방법을 알아보고 실내온도 및 수온을
측정해 보는 프로젝트 입니다
DALLAS 의 DS18B20 IC 기반의 디지털 타입의 온도센서 모듈로 위 이미지 처럽 다양한 타입의 제품이 있습니다
아두이노 등의 마이크로 컨트롤 보드와 연결해서 사용가능하며
동작전압은 3.3V ~ 5V 이며 온도 측정범위는 -55 ° C ~ +125 ° C (-67 ° F ~ +257 ° F) 입니다
방수형 프로브 타입은 PVC 플라스틱으로 센서를 감싸고 있으므로 약 100 ° C 이하에서 사용하는것을 권장합니다
One Wire 라이브러리를 사용합니다
프로브 타입이나 TO-92 타입은 VCC와 DATA 핀을 풀업저항 4.7K ohm 으로 연결해서 사용합니다
풀업(pull-up)이란? 외부 변화가 생기기전에 입력 핀을 VCC(5V) 입력 상태로 묶어두는 것입니다
자세한 내용은 http://blog.daum.net/rockjjy99/2441 를 참조
One Wire 라이브러리를 사용하는데
One Wire는 I²C와 비슷한 듯 하지만, I²C는 선 하나는 클럭신호를, 나머지 선 하나는 데이터를 전달하기때문에 차이가 있습니다
One Wire는 Dallas Semiconductor(현재 Maxim Integrated)에서 만들었으며,
데이터 전송속도가 느리고, 장거리 통신이 가능한 장점이 있습니다
보통 온도계나 기상 관측장비같은 비싸지 않은 장비들에 많이 사용됩니다
One Wire 네트워크에 연결된 디바이스들중 마스터 디바이스는 MircoLAN 이라고 부릅니다
마스터에서 타이밍을 이용하여 디바이스를 초기화 하고, 데이터를 쓰고, 읽어옵니다
DS18B20은 -55℃~+125℃까지의 범위 측정이 가능하며,
-10℃~+85℃사이는 ±5℃의 정확도를 갖습니다.
또한 9-bit~12bit로 온도값을 정밀하게 가져오도록 프로그래밍 가능합니다
Digital temperature conversion and output
Maximum 12-bit resolution, accuracy up to ±0.5 degrees Celsius
Temperature detection range: -55 ° C ~ +125 ° C (-67 ° F ~ +257 ° F)
Supply Voltage: 3.3V to 5V
Temperature range :-55 °C ~ +125 °C
Size: 28 mm X 12 mm X 10 mm
One Wire Library for 18B20
사용된 부품
Arduino Uno R3 (Italy)
DS18B20 온도센서 (모듈타입)
DS18B20 온도센서 방수형 프로브
미니브래드보드
점퍼케이블(숫놈-암놈)
점퍼케이블(숫놈-숫놈)
막대저항 4.7K Ohm (풀업용)
구성 배선도-실내 온도 시리얼 모니터로 확인해 보기
구성 배선도-수온 측정해서 시리얼 모니터로 확인해 보기
사용된 예제소스
실내온도 측정해 보기.txt 0.00MB 수온 측정해 보기.txt 0.00MB
사용된 라이브러리
Arduino-Temperature-Control-Library-master.zip 0.03MB OneWire-master.zip 0.02MB
Arduino-Temperature-Control-Library
OneWire
테스트 하는데 위 2가지 라이브러리가 필수적으로 필요합니다
주의사항
위 이미지 처럼 프로브 타입이나 TO-92 타입은 VCC와 DATA 핀을 풀업저항 4.7K ohm 으로 연결해서 사용합니다
(모듈 타입은 풀업저항이 PCB에 달려 있으므로 별도 구성없이 테스트 할수 있습니다)
저항은 풀업용 이므로 반드시 4.7K ohm 으로 사용해야 하는것은 아닙니다, 본 테스트 에서는 1K ohm 으로 테스트 하였습니다
먼저 실내온도를 측정하는 예제코드를 살펴보면
#include
OneWire 라이브러리를 사용합니다
int DS18S20_Pin = 2;
데이터 출력핀 2번을 사용합니다
void setup(void) {
Serial.begin(9600);
}
9600 보드레이트로 시리얼 통신합니다
void loop(void) {
float temperature = getTemp();
Serial.println(temperature);
One Wire 로 온도값을 측정해서 터미널로 출력해 춥니다
if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -1000;
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println(“CRC is not valid!”);
return -1000;
}
if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print(“Device is not recognized”);
return -1000;
}
연결 된 One Wire 가 제대로 동작하는지 확인합니다
ds.reset();
ds.select(addr);
ds.write(0x44,1);
온도값을 읽어 ADC로 변환하여 레지스터에 저장합니다
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
메모리 맵을 읽어옵니다
for (int i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } 읽어온 메모리맵의 값을 바이트 배열에 넣어줍니다 byte MSB = data[1]; byte LSB = data[0]; float tempRead = ((MSB << 8) | LSB); //using two's compliment float TemperatureSum = tempRead / 16; 마지막 2바이트(메모리 맵의 0과 1번지)의 데이터를 연산하여 온도값을 구합니다 수온을 측정하는 예제는 DallasTemperature.h 라이브러리를 사용해서 더 간단하게 온도값을 구할수 있습니다 프로젝트 동영상 - 실내 온도 시리얼 모니터로 확인해 보기 프로젝트 동영상 - 수온 측정해서 시리얼 모니터로 확인해 보기 위 동영상에서도 확인할 수 있듯이 DS18B20은 데이터 전송속도가 느리기 때문에 온도변화가 반영되는데 시간이 조금 걸리는 단점이 있습니다 반응형
아두이노로 온도(LM35D)를 측정하기
아두이노 우노로 온도 측정 하기
LM35DZ는 섭씨( ℃) 에 비례해 전압을 측정하는 센서로, 센서의 접압을 읽어 들여서 온도를 측정할 수 있습니다. 온도의 계수는 10.0mV/ ℃이므로, 0 ℃라면 0V, 20 ℃라면 200mV가 됩니다. 아두이노 보드의 아날로그 입력은 0~5V까지의 전압을 1024단계로 읽어 들이므로, 읽어 들인 값(0~1023)을 온도로 쓰면 됩니다. 0~100 ℃까지를 약 205단계로 측정하므로 기온의 변화 들을 측정하는 것과 같은 용도라며 층분한 정밀도를 얻을 수 있습니다. 이번 예제는 온도 센서의 값을 읽어 들여, 섭씨로 변환하는 것을 LCD에 표시합니다.
[온도측정 부품목록]▶ 아두이노 보드 : 1개
▶ 브레드보드 : 1개
▶ 점프선
▶ 온도 센서 : 1개 (LM35D)
(http://www.icbanq.com/P004918626)
▶ CLCD : 1개
■ 아두이노 온도측정 회로 구성
LM35DZ에 있는 다리 3개를 각각 5V, A0, GND에 연결합니다
■ 아두이노 온도측정 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include < LiquidCrystal.h > // 센서에 연결한 아날로그 핀(0번) int sensorPin = 0 ; //LCD 객체 LiquidCrystal lcd( 12 , 11 , 5 , 4 , 3 , 2 ); void setup( ) { //LCD의 열수와 행수를 설정 lcd. begin ( 16 , 2 ); } void loop( ) { //LCD화면을 지운다 lcd.clear( ); // 온도 센서의 값을 읽어 들인다. int value = analogRead(sensorPin); //읽어 들인 값을 현재 섭씨 온도값으로 변환한다. int temp = ( 5. 0 * value * 100. 0 ) / 1024 ; //LCD에 현재 온도를 표시한다. lcd.print( “Temp: ” ); lcd.print(temp); //1초 동안 대기 delay( 1000 ); } Colored by Color Scripter cs
코드해석
int temp = (5.0 * value * 100.0)/1024; 먼저 온도센서의 특성을 알아야 합니다.
LM35DZ 온도센서는 1도 변화 할 때 10mV가 변하므로 V = 0.01 X T (V: 출력전압, T: 온도) 입니다. 다음으로 ADC변환 출력 공식은 ADC = Vin / Vref X 1024(10비트 변환을 하면 1024, 8비트를 변환을 하면 256, Vref: 래퍼런스 전압, Vin: 입력전압)입니다. ADC변환 공식의 좌변을 Vin으로 정리해서 위 LM35DZ의 센서출력을 대입하면 Vin = ADC / 1024 X Vref = 0.01 X T 가 되고 이걸 다시 T로 정리하면 T = ADC / 1024 X Vref X 100이 됩니다.
LM36ZD 특성 위 이미지는 LM35D 데이터 쉬트로 온도 범위를 FIGURE1(0~150 ℃ )로써 기본으로 사용하는 경우와 온도범위 FIGURE2(-50~150 ℃ )로써 풀 범위로 사용하는 경우의 예제 회로와 그래프를 보여주고 있습니다. 대략적인 기온을 알려고 하는 용도로는 적당히 사용 할 수 있지만, 더 정밀한 온도 측정을 위해서는 하드웨어의 분해능을 올려 주거나 산업용에서 사용하는 온도센서를 사용해야 합니다.
키워드에 대한 정보 아두 이노 온도 센서
다음은 Bing에서 아두 이노 온도 센서 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 [10강] 아두이노 온도센서 TMP36 / 온도 측정 / 온도센서 led 제어 / analogRead() / 회로도, 소스코드 공유
- 아두이노
- 아두이노우노
- 온도센서
- 아두이노온도센서
- TMP36
- 아두이노온도센서led제어
- 아두이노온도측정
- 아두이노 온도 측정
- 아두이노 온도센서 led 제어
- 아두이노 온도계
- 섭씨온도
- 화씨온도
- 아두이노 온도 섭씨온도
- 아두이노 온도제어
- 아두이노 센서
- 아두이노센서
- 아두이노온습도센서
- 아두이노 온습도센서
- 아두이노 TMP36
- 아두이노 온도 회로도
- 아두이노 온도 소스코드
- 아두이노코딩
- 아두이노독학
- 아두이노 강좌
- 아두이노 코딩
- 아두이노 독학
- 아두이노 온도
- 온도센서 회로구성
- 아두이노 키트
- 아두이노키트
- analogRead
- 시리얼모니터
- 시리얼통신
- 아두이노시리얼통신
- 아두이노 시리얼통신
- arduino temperature
- 센서
- 센서측정
- 센서값 측정
- serial
- 아두이노배우기
- 아두이노 소스코드
- 아두이노 회로도
- 온도 회로도
- 온도 소스코드
- 아두이노 코드
- 아두이노코드
- 온도감지센서
- 아두이노 온도 감지
- 아두이노 섭씨온도
- 섭씨
- 화씨
- 볼트
YouTube에서 아두 이노 온도 센서 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 [10강] 아두이노 온도센서 TMP36 / 온도 측정 / 온도센서 led 제어 / analogRead() / 회로도, 소스코드 공유 | 아두 이노 온도 센서, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.