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

В данной статье мы рассмотрим подключение цифрового датчика температуры DS18B20 к плате Arduino Uno. Приведены схема и программа (скетч) для проекта.

Проект термометра на Arduino и датчике температуры DS18B20

Также на нашем сайте вы можете посмотреть проекты измерения температуры с помощью платы Arduino и датчиков lm35 и DHT11.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Maxim Integrated DS18B20 Programmable Resolution (цифровой датчик температуры DS18B20) (купить на AliExpress).
  3. Резистор 4,7 кОм (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Общие принципы работы датчика температуры DS18B20

DS18B20 представляет собой однопроводный цифровой датчик температуры от компании Maxim IC. Выдает значение температуры в градусах Цельсия, способен измерять температуру с 9-12 битной точностью в диапазоне от -55 до 125 градусов Цельсия с точностью +/-0.5 градуса. Каждый датчик DS18B20 имеет 64-битный уникальный номер (Serial number), вытравленный на корпусе датчика, что позволяет подключать огромное число подобных датчиков к одной шине данных. С помощью данного датчика можно измерять температуру воздуха, жидкостей и земли. В некоторых магазинах датчик продается в комплекте с резистором сопротивлением 4,7 кОм.

Внешний вид и распиновка датчика DS18B20

Особенности датчика DS18B20:

  • однопроводный интерфейс (1-Wire® interface), что позволяет использовать для подключения датчика только один контакт микроконтроллера (в нашем случае платы Arduino Uno);
  • каждый датчик имеет 64-битный уникальный последовательный код (номер), хранящийся в ПЗУ (ROM) датчика;
  • способность подключения к одной шине множества датчиков позволяет создавать на его основе приложения для распределенного (в пространстве) измерения температуры;
  • не требует никаких внешних компонентов;
  • может быть запитан от линии данных;
  • поддерживает напряжение питания от 3.0V до 5.5V;
  • способен измерять температуру в диапазоне от –55°C до +125°C (–67°F до +257°F) с точностью ±0.5°C (в диапазоне от –10°C до +85°C);
  • можно выбрать разрешающую способность (разрешение) датчика: от 9 до 12 бит;
  • преобразует значение температуры в 12-битное цифровое слово длительностью 750 мс (max.);
  • можно настраивать энергонезависимую (nonvolatile, NV) сигнализацию (сигнал тревоги);
  • опции сигнала тревоги позволяют идентифицировать и определить адрес датчика, чья температура не соответствует запрограммированным границам;
  • может применяться в устройствах термоконтроля, промышленных системах, потребительских продуктах, термометрах и в любых других системах, где требуется измерение температуры.

Более подробную информацию о принципах работы датчика DS18B20 вы можете посмотреть в следующей статье на нашем сайте.

Схема проекта

Схема подключения датчика температуры DS18B20 к плате Arduino Uno представлена на следующем рисунке.

Схема подключения датчика температуры DS18B20 к плате Arduino Uno

Схема подключения датчика к плате Arduino достаточно проста: контакт 1 – к контакту GND Arduino, контакт 2 – к любому ее цифровому контакту (в нашем случае к контакту 2), контакт 3 – к ее контакту +5V или +3.3V. Также необходимо подключить подтягивающий (pull-up) резистор.

Исходный код программы (скетча)

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

  • 1-Wire bus;
  • Dallas Temperature (необходима для считывания и расчета температуры с датчика).

В скетче программы необходимо подключить заголовочные файлы этих библиотек.

На следующем рисунке показано тестирование работы проекта.

Тестирование работы термометра на Arduino и датчике температуры DS18B20

Источник статьи

(Проголосуй первым!)
Загрузка...
102 просмотров

Комментарии

Термометр на Arduino и датчике температуры DS18B20 — 6 комментариев

  1. Да, нужно чтобы от нуля, чтобы состояние "Выключено" было обязательно, иначе котел не отключится.
    Ясно, что несоответствие связано с функцией map.
    А что с подключением индикатора?

    • То есть ступени можно опускаться до 0? Я могу тогда диапазон трансформации ступени задать от 0 до 19. Сейчас стоит от 1 до 19. Может быть это вам поможет.
      Ну вы же сами когда делили одно на другое у вас получалось отношение 13 с чем то. Не преувеличивайте возможности функции map - она просто линейно трансформирует один диапазон в другой.
      256/19=13,47
      256/20=12,8 (это если я диапазон в программе изменю чтобы он с нуля начинался)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *