1. 온도센서
: 쇠부분에 열이 가해지면 저항 값이 변함으로 인해서 내가 측정할 수 있는 전압값이 변하게 됨
=> 이 변환 수치로 온도 측정
ex) 프로브에 100도 열을 가하면 저항이 어느정도 변하므로 전압값도 어느정도 변하겠구나 예측
1-1. 기존의 온도 측정 방법
: 데이터를 받아서 회로 구성 후 우리 보드에서 ADC(아날로그 -> 디지털) 통해 전압값이 얼마나 변하는지 정보 get
-> 이 전압은 몇 도에 해당하는지에 대한 테이블이 존재
ex) 전압이 3.3V가 정상인데 3.2V로 변했을 때 온도는 몇도? 인지에 대한 테이블 존재
1-2. 우리 온도센서 측정방법
: 온도센서의 프로브와 전선 세가닥이 있을 때 이 세가닥과 모듈(위 사진의 초록색 네모)을 연결
=> 프로브에 열을 가했을 때 이 열을 모듈에서 받고 계산하여 신호로 STM에 전송
=> 이 온도를 모듈의 DAT선을 통해 가져와서 LED 8 세그먼트(FND)에 표현
2. 온도센서의 구성
- 데이터와 관련된 pin이 DAT 하나만 존재
3. 소스코드 분석
- 오제이튜브+임베디드강의+자료모음(인프런+용)\주변 장치 자료\온도센서\DS18B20기준 치수\테스트 코드\arduino라이브러리 파일\OneWire\examples\DS18x20_Temperature
- 오제이튜브+임베디드강의+자료모음(인프런+용)\주변 장치 자료\온도센서\DS18B20기준 치수\테스트 코드\arduino라이브러리 파일\OneWire\OneWire.cpp
- 두 파일을 비교하며 OneWire 객체 이해
3-1. read_bit 함수
- noInterrupts();
: 인터럽트를 받지않겠다(아두이노 특화된 코드) - DIRECT_MODE_OUTPUT
: OneWire 생성자에선 pinMode를 INPUT으로 하는데 여기선 OUTPUT이므로 DAT 선을 통해 데이터를 READ/WRITE 둘 다 한다는 의미
=> OUTPUT모드로 바꾸어 GPIO 신호를 Low로 한 번 떨어트림
<=> 출력으로 내보냄 - delayMicroseconds(3)
: 3 마이크로세컨드 쉬고 - DIRECT_MODE_INPUT
: 다시 INPUT모드로 변경 <=> 똑같은 DAT선을 Read 모드로 - r = DIRECT_READ
: 한 비트 r 읽음 - Interrupts();
- delayMicroseconds(53);
- return r;
=> 즉, DAT/GND/VCC 세가닥 선이 있고 내가 1bit를 읽고 싶은 경우 DAT에 신호를 보냄(LOW로 떨어트리고)
=> 잠깐 3 마이크로세컨드 쉬고
=> 다시 INPUT모드로 바꾸고 10 마이크로세컨드 쉬고
=> DAT 선을 통해 1bit 읽음 (HIGH : 1, LOW : 0)
=> 읽은 값을 return r; 통해 리턴
3-2. read 함수
- uint8_t 는 # include <stdint.h> 에 속함
- int8_t == char
- uint8_t == unsigned char
- uint32_t == unsigned int
- bitMask = 0x01 이므로 0000 0001 이므로 총 8번 반복
4. 와이어 결선
- 모듈의 vcc/dat/gnd와 온도센서의 빨강/노랑/검정 선 연결
- 노랑색 암컷-암컷(dat) + 빨강색 수컷-암컷(vcc) + 검정색 수컷-암컷(gnd)을 모듈에 연결
- 빵판의 +와 -에 각각 빨강/검정 점퍼선을, 노랑색 dat 점퍼선은 PA3_TEMP-DATA에 연결되고 이때 11번 포트로 연결됨 => PA3에 연결
=> 프로브(온도센서), 모듈, 빵판 모두 연결 완료
'임베디드' 카테고리의 다른 글
[오제이 튜브의 임베디드 강의] 25강. 어디서도 안 알려주는 프로토콜의 원리! (2) | 2025.01.28 |
---|---|
[오제이 튜브의 임베디드 강의] 24강. 1-Wire통신! 나름 유명했다. (온도센서) (0) | 2025.01.28 |
[오제이 튜브의 임베디드 강의] 22강. STM32에서는 SPI기능을 제공한다구! (0) | 2025.01.26 |
[오제이 튜브의 임베디드 강의] 21강. FND 제어 소스 분석! (0) | 2025.01.25 |
[오제이 튜브의 임베디드 강의] 20강. SPI통신 제대로 배워보자! (0) | 2025.01.25 |