ds18b20은 어떻게 작동하나요?
DS18B20은 1-Wire 통신 프로토콜을 사용하며 단일 버스를 통해 데이터를 전송할 수 있는 디지털 온도 센서입니다.
DS18B20은 서미스터를 사용하여 온도를 측정합니다. 서미스터는 온도에 따라 저항이 변하는 특별한 유형의 저항기입니다. DS18B20 내부에는 내부 온도를 측정하고 이를 디지털 신호로 변환할 수 있는 온도 센서도 있습니다.
DS18B20은 전원을 연결하면 자동으로 온도를 측정하고 그 결과를 내부 메모리에 저장한다. 그런 다음 결과는 1-Wire 프로토콜을 통해 마이크로컨트롤러 또는 기타 시스템으로 전송됩니다.
DS18B20은 64비트 고유 식별 코드로 구별되는 한 라인에서 작동하는 여러 센서를 지원합니다.
추가 기능:
작동 온도 범위: -55~ 섭씨 +125도
높은 정확도: 섭씨 ±0.5도
다양한 온도 범위(9~12비트) 지원
낮은 전력 소비, 대기 전류는 대략 비슷함 1uA
데이터 전송 속도는 최대 1Mbps입니다.
DS18B20은 1-Wire 프로토콜을 통해 마이크로컨트롤러와 통신합니다. 1-Wire 프로토콜은 마이크로컨트롤러와 센서 간의 데이터 전송을 가능하게 하는 간단하고 저렴한 단일 와이어 통신 프로토콜입니다.
통신 프로세스:
마이크로 컨트롤러는 버스에서 온도 변환 명령을 보내고 DS18B20에 온도 측정을 수행하도록 요청합니다.
명령을 받은 후 DS18B20은 온도 측정을 수행하고 결과를 내부 메모리에 저장합니다.
마이크로 컨트롤러는 데이터 읽기 명령을 보내 DS18B20에 저장된 온도 데이터를 마이크로 컨트롤러로 보내도록 요청합니다.
명령을 받은 후 DS18B20은 저장된 온도 데이터를 버스를 통해 마이크로 컨트롤러로 보냅니다.
마이크로컨트롤러는 온도 데이터를 수신한 후 소프트웨어 변환을 통해 이를 물리적 단위의 온도 값으로 변환합니다.
DS18B20은 또한 높은 정확도와 높은 감도의 특성을 갖고 있으며 다양한 온도 모니터링 및 제어 시나리오에 사용할 수 있습니다.
DS18B20은 폴링 모드와 인터럽트 모드의 두 가지 방식으로 작동할 수 있습니다. .
폴링 모드: 마이크로 컨트롤러는 주기적으로 센서에 현재 온도 값을 쿼리합니다. 이 방법은 간단하고 사용하기 쉽지만 더 많은 CPU 리소스를 소비합니다.
인터럽트 모드: 마이크로컨트롤러는 DS18B20의 인터럽트 신호를 기다립니다. DS18B20이 온도 측정을 완료하고 결과를 저장하면 인터럽트 신호를 보내 마이크로컨트롤러에 알립니다. 이 방법을 사용하면 CPU 리소스 소비를 줄일 수 있습니다.
DS18B20은 또한 동일한 버스에서 작동하는 여러 센서를 지원하며 ROM 작업을 사용하여 다양한 센서를 식별하고 선택할 수 있습니다.
DS18B20은 매우 인기 있는 온도 센서로, 간단하고 사용하기 쉬우며, 낮은 전력 소비, 높은 정확도, 다기능을 갖추고 있으며 사용할 수 있는 기성 라이브러리가 많이 있습니다.
DS18B20은 Arduino, Raspberrypi, STM32, PIC 등 다양한 마이크로 컨트롤러 및 마이크로 컨트롤러를 통해 사용할 수 있습니다.
DS18B20을 사용하기 전에 마이크로컨트롤러 또는 마이크로컨트롤러에서 1-Wire 통신 인터페이스를 구성해야 합니다. 1-Wire 인터페이스는 직렬 또는 병렬 방식으로 구현될 수 있습니다.
DS18B20에 액세스하려면 일반적으로 특정 라이브러리가 필요합니다. 이러한 라이브러리는 온도 값을 읽을 수 있는 간단하고 사용하기 쉬운 인터페이스를 제공할 수 있습니다. 라이브러리는 온도 값 읽기, 센서 구성, 작동 등을 위한 많은 기능을 제공합니다.
예를 들어 Arduino를 사용하여 DS18B20의 온도 값을 읽으려면 먼저 DS18B20을 Arduino 보드에 연결해야 하며, 그런 다음 OneWire 라이브러리와 DallasTemperature 라이브러리를 사용하여 통신 및 작업을 구현합니다.
코드는 대략 다음과 같습니다.
`C++
#include
#include
//Datawireisconnectedtopin2ontheArduino
#defineONE_WIRE_BUS2< /p>
//모든 OneWire 장치와 통신하기 위한 oneWire 인스턴스 설정(Maxim/Dallas 온도 IC뿐만 아니라)
OneWireoneWire(ONE_WIRE_BUS);
//PassouroneWirereferencetoDallasTemperature.
DallasTemperaturesensors(oneWire );< /p>
voidsetup()
{
Serial.begin(9600);
//라이브러리 시작
sensors.begin();
}
voidloop()
{
//callsensors.requestTemperatures()toissueaglobaltemp
p>< p>//버스의 모든 장치에 요청sensors.requestTemperatures();
//온도를 가져오는 명령 보내기
floattempC=sensors.getTempCByIndex(0);
//직렬 모니터의 온도 인쇄
Serial.print(Temperatureis:);
Serial.print(tempC);
Serial.println(Celsius);
delay(1000);
}
`
DS18B20의 핀 연결은 공급업체마다 다를 수 있다는 점에 유의해야 합니다. 일반적으로 연결 방법을 이해하려면 데이터 시트를 확인해야 합니다.