Как подключить датчик температуры DS18B20 / DS18B22 к Arduino для создания термометра с помощью библиотеки OneWire и DallasTemperature. В отличие от датчика влажности воздуха DHT11, сенсор выполнен в водонепроницаемом корпусе, работает в широком диапазоне температур и способен измерять отрицательные температуры. Цифровой датчик температуры ds18b20 имеет точность измерения до 0,0625 °C.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- датчик температуры DS18B20 / DS18B22
- светодиод и резистор
- макетная плата
- коннекторы
- библиотека DallasTemperature.h и OneWire.h
Дополнительные материалы на эту тему:
Цифровой датчик ds18b20 отправляет данные по шине Wire и может работать на одной линии со многими другими устройствами. Каждый температурный датчик имеет свой собственный 64-битный код, что позволяет микроконтроллеру Ардуино общаться по одной шине сразу с несколькими датчиками. Датчик преобразует температуру окружающей среды в цифровой код, т.е. для подключения не требуется дополнительного АЦП.
DS18B20 Arduino распиновка, характеристики

Характеристики DS18B20 datasheet на русском
- Напряжение питания: 3,3 В и 5 В
- Диапазон измерений: от -55°C до +125°C
- Точность: ±0,5°C от -10°C до +85°C
- Конфигурируемое разрешение: от 9 до 12 бит
- 64-битный уникальный идентификатор
- Время отклика: менее 750 мс
- Возможность подключения нескольких сенсоров к одному пину
Датчик может быть изготовлен в нескольких вариантах (см. рисунок выше), от этого будет зависеть схема подключения датчика ds18b20 к Arduino. В первом случае следует использовать подтягивающий резистор 4,7 кОм. Датчик температуры в виде готового модуля, уже имеет встроенный резистор. Третий вариант — датчик ds18b20 в водонепроницаемом корпусе, который можно использовать в горячей воде.
Как подключить датчик DS18B20 к Arduino

Библиотека Arduino DallasTemperature Sensors OneWire значительно облегчает и упрощает работу с датчиком ds18b20. В описании библиотеки DallasTemperature.h указано, что датчик управляется несколькими простыми функциями, которые представлены в следующей программе. Подключите водонепроницаемый датчик температуры ds18b20 к микроконтроллеру в соответствии со схемой на картинке и загрузите программу.
Скетч для измерения температуры на DS18B20
#include "OneWire.h"
#include "DallasTemperature.h"
OneWire oneWire(A1);
DallasTemperature ds(&oneWire);
void setup() {
Serial.begin(9600);
ds.begin();
}
void loop() {
ds.requestTemperatures();
int t = ds.getTempCByIndex(0)
Serial.print(t);
Serial.println( "C");
delay(1000);
}
Как подключить сенсор DS18B20 к Ардуино

Один провод позволяет подключить несколько датчиков к одному порту Ардуино. Каждый датчик имеет уникальный адрес, закодированный в 64 битах, который связан с библиотекой, загруженной в Arduino. Другими словами, для подключения нескольких датчиков LM35 вам понадобится задествовать несколько пинов Arduino, то с ds18b20 вы можете подключить все к одному пину (поскольку это цифровой, а не аналоговый датчик).
Скетч для датчика температуры DS18B20 Ардуино
#include "OneWire.h"
#include "DallasTemperature.h"
OneWire oneWire(A1);
DallasTemperature ds(&oneWire);
void setup() {
Serial.begin(9600);
ds.begin();
pinMode(10, OUTPUT);
}
void loop() {
ds.requestTemperatures();
int t = ds.getTempCByIndex(0)
Serial.print(t);
Serial.println( "C");
if (t > 25) { digitalWrite(10, HIGH); }
else { digitalWrite(10, LOW); }
delay(1000);
}
Заключение. Датчик является цифровым и можно использовать ds18b20 на большом расстоянии без ухудшения информации. Единственным недостатком является то, что этот датчик использует протокол Dallas 1-wire, который является довольно сложным, но, к счастью, уже существуют библиотеки. Для подключения этого сенсора рекомендуется библиотека Dallas Temperature Control (DallasTemperature.h) и OneWire.h.
