티스토리 뷰
ds1631 같은 비 접촉식 칩형 온도센서 같은 경우 아무래도
액체 같은 물질에 닿으면 쇼트등의 위험이 있으므로
전자제품 내부 온도 측정 같은 곳에 많이 쓰이지 않을까 라는
생각이 듭니다...@_@;
A0, A1, A2 핀을 GND에 연결해서 i2c 장치 주소를 (0x48) 맞춰 주었어요....
다이어그램을 대충 보자면....
설정 레지스터를 통해 adc의 분해능을 조정후
온도 레지스터를 통해 온도를
읽어 들이는 형식
같아요...@_@
위와 같이 설정 레지스터는 1바이트의 크기를 가지고 있어요
설정 레지스터의 BIT3 (R1)과 BIT2 (R0)를 HIGH (1) 로 설정 해주면
12비트의 분해능으로 온도를 측정 할수 있고요...
최소 750ms 이상의 지연 시간을 주어야 하네요..@_@
12비트로 설정 할 경우 상위 8비트 (온도)...하위 8비트 (소수점 아래 온도)...
총 2바이트의 온도 데이터를 읽어 들이는데요
하위 8비트중 0번 부터 3번 비트까지는 항상 0이기 때문에
무시해도 되요....@_@
1. 설정 레지스터 접속(AC)후 설정 해주고..
2. 온도 데이터를 컨버전(51) 해주고....
3. 컨버전한 온도 데이터를 읽기(AA) 해주면 될거 같아요...@_@
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(115200);
Wire.beginTransmission(0x48);
Wire.write(0xAC); // 설정 레지스터 접속
Wire.write(0x0C); // 12비트 설정
Wire.beginTransmission(0x48);
Wire.write(0x51); // 온도 컨버전
Wire.endTransmission();
}
void loop() {
delay(1000);
Wire.beginTransmission(0x48);
Wire.write(0xAA); // 컨버전 한 온도 읽기
Wire.endTransmission(false);
//Wire.requestFrom(0x48, 2);
}
i2c 프로토콜만 확인 하기 위해 시리얼 출력을 위한
별도의 디코딩 작업은 하지 않고 위와 같이
i2c 통신만 되게끔 간단하게 코딩 했어요
위와 같이 아날라이저를 물려주고요..
확인 시작!
상위 비트 h1D...
하위 비트 h20...
총 2바이트의 데이터가 수신 되었어요
수신된 데이터를 가지고..
별도로 간단한 c 코드로
검증을 해보았어요...@_@
현재의 온도는...
29.1250로 컴파일 결과가 나왔어요...@_@
- Total
- Today
- Yesterday
- 멀티미터
- 토뱅
- 습도 센서
- attiny85
- 전압측정
- 전류측정
- 온도센서
- TL866
- ucurrent gold
- 전류
- CRC
- ds1631
- 토스뱅크 카드
- 아두이노
- 롬라이터
- PLC
- esp8266
- 온도 센서
- 토뱅카드
- eevblog
- 토스뱅크
- I2C
- sht3x
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |