Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Гайд по использованию температурного датчика 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

См.также

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

  1. randomnerdtutorials.com - Guide for DS18B20 Temperature Sensor with Arduino