Arduino:Примеры/Гайд по использованию температурного датчика DS18B20 с Arduino

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


Гайд по использованию температурного датчика DS18B20 с Arduino[1]

Это руководство объясняет, как считывать температуру при помощи температурного датчика DS18B20 и платы Arduino.

Температурный датчик DS18B20

Температурный датчик DS18B20 – это 1-проводной цифровой температурный датчик. Ему требуется очень простая электрическая цепь. Он коммуницирует через общую шину, и это значит, что вы можете считывать данные с нескольких температурных датчиков, используя всего один цифровой контакт Arduino.

Как видно на картинке ниже, этот датчик оснащен всего тремя контактами:

Label-temperature-sensor.jpg

У датчика DS18B20 есть и водонепроницаемая версия:

Waterproof.jpg

Функции

Главные функции температурного датчика DS18B20:

  • Коммуникация: через 1-проводную шину
  • Диапазон измеряемой температуры: от -55°C до 125°C
  • Точность: +/- 0,5% (в диапазоне от -10°C до 85°C)

Считывание температуры с помощью DS18B20 и Arduino

Проект, который мы создадим, будет считывать температуру при помощи датчика DS18B20 и платы Arduino, а считанные значения будут показаны в мониторе порта IDE Arduino.

Необходимые компоненты

  • Одна плата Arduino Uno
  • Одна макетная плата
  • Один температурный датчик DS18B20
  • Один резистор на 4700 Ом
  • Провода-перемычки

Схема

Датчик DS18B20 может работать в двух режимах:

  • Нормальный режим. В этом случае нужно будет подключить все три контакта DS18B20. Ниже – схема того, каким должно быть подключение:
Normal-mode bb.png
  • Паразитный режим. В этом случае нужно подключить только два контакта DS18B20: GND и контакт для передачи данных. Питание к датчику будет идти через контакт для данных.

Ниже – схема того, каким должно быть подключение:

Parasite-mode bb.png

Вы можете считывать температуру сразу с нескольких датчиков DS18B20, используя всего один цифровой контакт Arduino. Для этого вам нужно подключить контакты DQ от всех датчиков к цифровому контакту Arduino.

Код

Вам нужно будет установить две библиотеки: OneWire и Dallas Temperature.

Установка библиотеки OneWire

  1. Кликните здесь, чтобы скачать библиотеку OneWire. В результате в вашу папку загрузок должен скачаться ZIP-файл.
  2. Распакуйте этот ZIP-файл. В результате у вас должна получиться папка под названием «OneWire-master».
  3. Переименуйте папку «OneWire-master» на «OneWire».
  4. Переместите папку «OneWire» в папку библиотек IDE Arduino.
  5. Откройте IDE Arduino.

Установка библиотеки DallasTemperature

  1. Кликните здесь, чтобы скачать библиотеку DallasTemperature. В результате в вашу папку загрузок должен скачаться ZIP-файл.
  2. Распакуйте этот ZIP-файл. В результате у вас должна получиться папка под названием «Arduino-Temperature-Control-Library-master».
  3. Переименуйте папку «Arduino-Temperature-Control-Library-master» на «DallasTemperature».
  4. Переместите папку «DallasTemperature» в папку библиотек IDE Arduino.
  5. Наконец, откройте IDE Arduino.

После установки необходимых библиотек загрузите в IDE Arduino скетч, показанный ниже:

 1 /*********
 2   Автор - Руи Сантос (Rui Santos)
 3   Более подробно о проекте на: http://randomnerdtutorials.com 
 4   За основу взят пример «Dallas Temperature Library»
 5 *********/
 6 
 7 #include <OneWire.h>
 8 #include <DallasTemperature.h>
 9 
10 // контакт для данных подключаем к цифровому контакту 2 на Arduino: 
11 #define ONE_WIRE_BUS 2
12 
13 // создаем экземпляр класса OneWire, чтобы с его помощью
14 // общаться с однопроводным устройством
15 // (т.е. в нашем случае – с температурным датчиком):
16 OneWire oneWire(ONE_WIRE_BUS);
17 
18 // передаем объект oneWire объекту sensors: 
19 DallasTemperature sensors(&oneWire);
20 
21 void setup(void)
22 {
23   // запускаем последовательную коммуникацию (в отладочных целях): 
24   Serial.begin(9600);
25   // запускаем библиотеку:
26   sensors.begin();
27 }
28 
29 
30 void loop(void){ 
31   // вызываем функцию sensors.requestTemperatures(), 
32   // которая приказывает всем устройствам, подключенным к шине,
33   // выполнить конверсию температурных данных:
34 
35   sensors.requestTemperatures();
36   
37   Serial.print("Celsius temperature: ");
38   //  "Температура в Цельсиях: "
39   // почему «byIndex»? к одной шине может быть подключено 
40   // больше одного датчика; самое первое устройство на шине – это «0»:
41   Serial.print(sensors.getTempCByIndex(0)); 
42   Serial.print(" - Fahrenheit temperature: ");
43   //  " - Температура в Фаренгейтах: "
44   Serial.println(sensors.getTempFByIndex(0));
45   delay(1000);
46 }

Наконец, открываем монитор порта IDE Arduino на скорости 9600 бод. В нем должны появиться данные о температуре – в градусах Цельсия и Фаренгейта.

Serial-monitor-1.png

См.также

Внешние ссылки