Подключение датчика температуры DS18B20 к Arduino: пошаговая инструкция

Как правильно подключить датчик DS18B20 к Arduino. Какие компоненты понадобятся для сборки схемы. Как написать скетч для измерения температуры. Какие преимущества у DS18B20 перед другими датчиками температуры.

Содержание

Что такое датчик температуры DS18B20

DS18B20 — это цифровой датчик температуры, который позволяет измерять температуру в диапазоне от -55°C до +125°C с точностью ±0.5°C. Он имеет несколько ключевых особенностей:

  • Использует однопроводной интерфейс 1-Wire для подключения
  • Каждый датчик имеет уникальный 64-битный серийный код
  • Не требует внешних компонентов
  • Может питаться от линии данных (паразитное питание)
  • Измеряет температуру с разрешением от 9 до 12 бит
  • Время измерения температуры не превышает 750 мс

Благодаря этим характеристикам DS18B20 является одним из самых популярных датчиков температуры для работы с микроконтроллерами.

Необходимые компоненты для подключения DS18B20 к Arduino

Для подключения датчика DS18B20 к Arduino нам понадобится:

  • Плата Arduino (Uno, Nano, Mega и т.д.)
  • Датчик температуры DS18B20
  • Резистор 4.7 кОм
  • Макетная плата
  • Соединительные провода

Резистор 4.7 кОм необходим для подтяжки линии данных к питанию. Это обеспечивает стабильную работу однопроводного интерфейса.

Схема подключения DS18B20 к Arduino

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

  1. Подключите VCC датчика к 5V Arduino
  2. Подключите GND датчика к GND Arduino
  3. Подключите линию данных (DQ) датчика к цифровому пину Arduino (например, D2)
  4. Подключите резистор 4.7 кОм между VCC и линией данных

Схема подключения выглядит так:

Схема подключения DS18B20 к Arduino

Обратите внимание, что DS18B20 также можно подключить в режиме паразитного питания. В этом случае VCC датчика соединяется с GND, а питание берется с линии данных.

Установка необходимых библиотек

Для работы с DS18B20 нам понадобятся две библиотеки:

  • OneWire — для работы с протоколом 1-Wire
  • DallasTemperature — для работы непосредственно с DS18B20

Установить их можно через менеджер библиотек Arduino IDE:

  1. Откройте Arduino IDE
  2. Перейдите в Скетч -> Подключить библиотеку -> Управлять библиотеками
  3. В поиске введите «OneWire» и установите библиотеку
  4. Аналогично найдите и установите «DallasTemperature»

После установки библиотек можно приступать к написанию скетча.

Написание скетча для измерения температуры

Базовый скетч для чтения температуры с DS18B20 выглядит следующим образом:

«`cpp #include #include #define ONE_WIRE_BUS 2 // Пин подключения 1-Wire шины OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup(void) { Serial.begin(9600); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); float tempC = sensors.getTempCByIndex(0); Serial.print(«Температура: «); Serial.print(tempC); Serial.println(«°C»); delay(1000); } «`

Этот скетч выполняет следующие действия:

  1. Подключает необходимые библиотеки
  2. Определяет пин подключения датчика
  3. Инициализирует объекты для работы с 1-Wire и DS18B20
  4. В цикле запрашивает измерение температуры
  5. Получает значение температуры в градусах Цельсия
  6. Выводит результат в Serial Monitor

Загрузите этот скетч на Arduino и откройте Serial Monitor. Вы увидите значения температуры, обновляющиеся каждую секунду.

Преимущества DS18B20 перед другими датчиками температуры

DS18B20 имеет ряд преимуществ по сравнению с другими популярными датчиками температуры:

DS18B20 vs DHT11/DHT22

  • Более высокая точность (±0.5°C против ±2°C у DHT11)
  • Больший диапазон измерений (-55°C до +125°C)
  • Возможность подключения нескольких датчиков на одной линии
  • Водонепроницаемое исполнение (в корпусе TO-92)

DS18B20 vs LM35

  • Цифровой выход (не требует АЦП)
  • Возможность получения уникального идентификатора каждого датчика
  • Более широкий диапазон измерений
  • Не требует калибровки

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

Подключение нескольких датчиков DS18B20

Одно из главных преимуществ DS18B20 — возможность подключения нескольких датчиков на одной линии данных. Это позволяет измерять температуру в нескольких точках, используя всего один пин Arduino.

Схема подключения нескольких DS18B20 выглядит так:

Схема подключения нескольких DS18B20 к Arduino

Для работы с несколькими датчиками нужно немного модифицировать скетч:

«`cpp #include #include #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int numberOfDevices; DeviceAddress tempDeviceAddress; void setup(void) { Serial.begin(9600); sensors.begin(); numberOfDevices = sensors.getDeviceCount(); Serial.print(«Найдено устройств: «); Serial.println(numberOfDevices); } void loop(void) { sensors.requestTemperatures(); for(int i=0; i
Этот скетч определяет количество подключенных датчиков и выводит температуру с каждого из них.

Практические применения DS18B20

Датчик DS18B20 находит широкое применение в различных проектах:

  • Метеостанции
  • Системы умного дома
  • Термостаты
  • Мониторинг температуры в аквариумах
  • Контроль температуры в холодильных установках
  • Измерение температуры почвы в теплицах

Благодаря водонепроницаемому исполнению, DS18B20 также часто используется для измерения температуры жидкостей.

Заключение

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

В этом руководстве мы рассмотрели основы работы с DS18B20: подключение, написание скетча, работу с несколькими датчиками. Используя эти знания, вы сможете легко интегрировать измерение температуры в свои Arduino-проекты.


Лучшие публикации о ПЛК и умном доме / PLController

Новое поступление в магазин

  • SFP модули OSNOVO

    Промышленный оптический SFP модуль OSNOVO SFP-S2LC15-G-1310-1310-I

    0 out of 5

    (0)

    Оптический SFP Модуль промышленный. Два волокна Single Mode. Скорость: до 1,25 Гбит/c. Тип разъема: 2xLC. Оптический бюджет: 15дБ. Расстояние передачи – до 20км. Рабочая длина волны,нм – Tx:1310/Rx:1310. Поддержка DDM. Размеры (ШхВхГ): 13,7×12,2×56,7мм. Рабочая температура: -40…+85°С.

    SKU: 13822

Последние публикации

Популярное сегодня

  • SFP модули OSNOVO

    Промышленный оптический SFP модуль OSNOVO SFP-S2LC15-G-1310-1310-I

    0 out of 5

    (0)

    Оптический SFP Модуль промышленный. Два волокна Single Mode. Скорость: до 1,25 Гбит/c. Тип разъема: 2xLC. Оптический бюджет: 15дБ. Расстояние передачи – до 20км. Рабочая длина волны,нм – Tx:1310/Rx:1310. Поддержка DDM. Размеры (ШхВхГ): 13,7×12,2×56,7мм. Рабочая температура: -40…+85°С.

    SKU: 13822

  • SFP модули OSNOVO

    Оптический SFP модуль OSNOVO SFP-S2LC15-G-1310-1310

    0 out of 5

    (0)

    Оптический SFP Модуль. Два волокна Single Mode. Скорость: до 1,25 Гбит/c. Тип разъема: 2xLC. Оптический бюджет: 15дБ. Расстояние передачи – до 20км. Рабочая длина волны,нм – Tx:1310/Rx:1310. Поддержка DDM. Размеры (ШхВхГ): 13,7×12,2×56,7мм. Рабочая температура: 0…+70°С.

    SKU: 12778

  • Удлинители Ethernet + PoE OSNOVO

    Удлинитель PoE (VDSL) OSNOVO TR-IP1PoE(500m)

    0 out of 5

    (0)

    Удлинитель PoE (VDSL) до 500м (Комплект передатчик + приемник) по коаксиальному кабелю RG59 (RG6), телефонному, силовому кабелю. Расстояние передачи данных – 600м, Скорость передачи – 100 мбит/c. Мощность PoE на расстоянии 300м – 27Вт, На расстоянии 500м – 17Вт. Поддержка стандартов IEEE 802.3af/at. Автоматическое определение PoE устройств. Порты передатчика: вх.- 1 x RJ45 (10/100 Base-T), 2 x клм. питание (12-57VDC) , вых. – 2 x клм. (VDSL) , Порты приемника: вх. – 2 x клм. (VDSL), 2 x клм. питание (12VDC) вых. – 1 x RJ45 (10/100 Base-T + PoE). Напряжение питания передатчика – DC12-57V, приемника – DC12V. Рекомендуемое напряжение питания при передаче PoE – DC55V. Блок питания в комплект не входит. Размеры (ШxВxГ): 26 x 26 x 123 мм. Рабочая температура: -20…+60 гр. С.

    SKU: 12730

Скоро в продаже

Новости

Статьи

Датчик температуры KY-001 (DS18B20 термометр)


Корзина
Избранное
Оповещения

Кабинет

ДОСТАВКА И ОПЛАТАПОКУПАТЕЛЮЧАТЫ

Каталог — 

Встраиваемые модули

Датчик температуры KY-001 (DS18B20 термометр)

Общая цена

375 р.

В корзину

Добавить в избранное

Артикул:111588


Производство:China(Китай)

Страна:КИТАЙ

В наличии

Описание

Цифровой модуль, датчик измерения температуры окружающей среды. Схема соединения очень простая и состоит собственно из самого датчика и резистора на 4.7 кОм (5 кОм), см. схему на фото.

Контакты KY-001, подключение:

Контакт промаркированный I – соединяется с общим проводом.

Средний контакт в соединителе – питание.

Контакт S – вывод данных.

Возможно два варианта питания. Обычное питание, когда полюса соединяются со средним контактом и промаркированным I. Второй вариант – паразитное питание, берущееся с информационной шины. При паразитном питании для подключения достаточно 2 провода в отличии от обычного когда требуется 3 провода.

При построении сложных систем на базе Arduino применяют специальные платы расширения.

Есть несколько версий для различных модификаций ардуино позволяющие подключить модуль датчика температуры ds18b20.

Для Arduino UNO

Для Arduino MEGA

Для Arduino UNO R3 и Arduino Nano V3.0

Их контакты в области digital IO ports объединены в по группы, имеющие 3 контакта. Очередность расположения контактов совпадает с назначением контактов модуля, что позволяет легко выполнить соединение.

 

Программирование:

Для работы понадобятся библиотеки OneWireTempSensor.h и OneWire.h, которые  можно без труда найти в интернете (или скачать ниже). В этом примере значение температуры выводится в последовательный порт и просмотреть его можно используя Serial Monitor, встроенный в Arduino IDE.

Ссылки на библиотеки:

OneWireTempSensor.rar

OneWire.zip


Развернуть описание

Технические параметры

Отсутствуют.


Доставка

Мы осуществляем доставку Транспортными Компаниями и Почтой России.
Доставка Почтой России осуществляется по России в соответствии с утверждёнными тарифами на почтовую пересылку ФГУП «Почта России»

Вы недавно смотрели

Датчик температуры KY-001 (DS18B20 термометр)

375 р.

Осциллограф портативный цифровой DSO nano 201

10 880 р.

Микросхема LM324N, (КР1401УД2А)

92 р.

Резистор  МЛТ-330 Ом, 5 %

Преобразователь USB = COM-port «Сапфир USB RS-232/485/ИП-ГР»

Стабилизатор КР142ЕН12А

Диод КД105Б   (0.3 А, 400 В)

25 р.

Кварцевый резонатор 7.2 МГц

24 р.

Микроконтроллер ATMEGA8-16AU

Паяльник для станции Lukey-702

Транзистор PNP КТ361Г КТ-13

16 р.

Батарейка AAA

датчик HC-SR04

310 р.

Транзистор NPNPNP 2SA1837 + 2SC4793 (пара) ТО-220 (КТ-28)

257 р.

Клемма ножевая VF2-110(8) (КПИ гн — 3.8мм)

7 р.

Микросхема К561КТ3

48 р.

Конденсатор 22 мкФ, 350 В, ECR +85 °С

Диод HER108   (1 А, 1 кВ)

8 р.

Конденсатор МБМ 1 мкФ, 250 В

Микросхема TDA2822M

113 р.40 к.

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

Ребята, как дела! Акарш из CETech.

Сегодня мы собираемся добавить в наш арсенал новый датчик, известный как датчик температуры DS18B20. Это датчик температуры, похожий на DHT11, но имеющий другой набор приложений. Мы будем сравнивать его с различными доступными датчиками температуры и посмотрим на технические характеристики этих датчиков.

Ближе к концу этого руководства мы будем соединять DS18B20 с Arduino и ESP8266 для отображения температуры. В случае Arduino температура будет отображаться на последовательном мониторе, а для ESP8266 мы будем отображать температуру на веб-сервере.

Давайте начнем с веселья.

Получите печатные платы для вашего проекта, изготовленные

Чтобы получить печатные платы для вашего проекта, изготовленные онлайн, вы должны проверить ​OurPCB.

Они используют надежные компоненты, полученные от аккредитованных поставщиков, таких как Arrow, Avnet, Future Electronics и т. д., и предлагают разумные цены, что в конечном итоге максимизирует размер прибыли пользователя. Специализируясь на многослойной технологии и технологии Rigid-flex, их приоритетом является поддержание высоких стандартов качества.

Наша печатная плата ориентирована на заказы малого и среднего объема и предлагает очень конкурентоспособную цену для объема от 1 до 100 кв. метров. Вам просто нужно загрузить файлы в любом из доступных форматов (Gerber, .pcb, .pcbdoc или .cam), и прототипы печатных плат будут доставлены к вашему порогу.

Вы также можете проверить выгодные предложения их партнера WellPCB.

Сравнение различных типов датчиков температуры

Сравнение, показанное выше, включает три датчика DS18B20, DHT11 и термистор NTC, но здесь мы ограничимся сравнением только цифровых датчиков. Это не означает, что термистор NTC не так важен, как цифровые датчики. На самом деле разработка цифровых датчиков возможна только благодаря термистору NTC. Цифровые датчики состоят из термистора NTC, соединенного с некоторыми микропроцессорами, которые в конечном итоге дают цифровой выход.

Основные точки сравнения:

1. DS18B20 является водонепроницаемым и надежным, в то время как DHT11 нет, поэтому в реальных сценариях и приложениях, где требуется контактное обнаружение, обычно используется DS18B20, а DHT11 используется в приложения на открытом воздухе.

2. DS18B20 выдает данные размером 9-12 бит, а DHT11 выдает данные размером 8 бит.

3. DS18B20 показывает только температуру, тогда как DHT11 может использоваться для получения температуры, а также влажности.

4. DS18B20 охватывает более широкий диапазон температур по сравнению с DHT11, а также имеет лучшую точность по сравнению с DHT (+ 0,5 градуса по сравнению с + 2 градуса для DHT11).

5. Когда дело доходит до ценообразования, эти датчики имеют небольшую разницу между собой, так как два разных варианта DS18B20, которые представляют собой проводной корпус, и корпус TO92 имеют стоимость около 1 и 0,4 доллара США, а стоимость DHT11 составляет около 0,6 доллара США.

Таким образом, мы можем сказать, что DS18B20 несколько лучше, чем DHT11, но лучший выбор может быть сделан только на основе приложения, для которого требуется датчик.

Вы можете получить больше информации о DS18B20, прочитав его техническое описание здесь.

Подключение DS18B20 к Arduino

Здесь мы будем подключать датчик температуры DS18B20 к Arduino, чтобы получить температуру и отобразить ее на последовательном мониторе.

Для этого шага нам потребуются: Arduino UNO, датчик температуры DS18B20 (упакованный тип или пакет TO92, любой доступный) и резистор 4,7 кОм.

Датчик DS18B20 имеет 3 провода: черный, красный и желтый. Черный — для GND, красный — для Vcc, а желтый — для сигнального контакта 9.0003

1. Подключите контакт GND или черный провод датчика к GND.

2. Подключите контакт Vcc или красный провод датчика к источнику питания 5 В.

3. Подключите сигнальный контакт или желтый провод к 5 В через резистор 4,7 кОм, а также подключите этот сигнальный контакт к цифровому контакту № 12 Arduino.

Вы можете обратиться к схеме, показанной выше, для лучшего понимания.

Кодирование Arduino для отображения температуры

На этом этапе мы будем кодировать нашу плату Arduino для получения и отображения температуры через последовательный монитор.

1. Подключите плату Arduino UNO к ПК.

2. Отсюда перейдите в репозиторий Github для этого проекта.

3. В репозитории GitHub вы увидите файл с именем « Basic code », откройте этот файл, скопируйте код и вставьте его в Arduino IDE.

4. Выберите правильную плату и COM-порт на вкладке «Инструменты» и нажмите кнопку загрузки.

5. После загрузки кода откройте Serial Monitor и выберите правильную скорость передачи данных (9).600 в нашем случае), и вы сможете увидеть температуру, измеренную DS18B20.

Вы можете наблюдать за повышением и понижением температуры, выполняя подходящие действия для повышения или понижения температуры, например, протирая металлическую часть или поджигая зажигалку рядом с металлической частью датчика корпусного типа.

Подключение DS18B20 к ESP8266

На этом этапе мы будем подключать DS18B20 к модулю ESP8266 для получения температуры.

Для этого шага нам понадобится = модуль ESP8266, резистор 4,7 кОм и датчик температуры DS18B20 (корпусного типа или TO9).2 пакета, что есть в наличии).

Соединения для этого шага аналогичны соединениям, сделанным с помощью Arduino.

1. Подключите контакт GND или черный провод датчика к GND.

2. Подключите контакт Vcc или красный провод датчика к источнику питания 3,3 В.

3. Подключите сигнальный контакт или желтый провод к 3,3 В через резистор 4,7 кОм, а также подключите этот сигнальный контакт к GPIO12, который является контактом D5 модуля.

Вы можете обратиться к схеме, показанной выше, для лучшего понимания.

Настройка Arduino IDE

Для кодирования ESP8266 с помощью Arduino IDE нам необходимо установить плату ESP8266 в дополнительные платы Arduino IDE, так как они не предустановлены. Для этого нам необходимо выполнить шаги, указанные ниже:

1. Перейдите в меню «Файл» > «Настройки»

2. Добавьте http://arduino.esp8266.com/stable/package_esp8266com_index.json в URL-адреса менеджера дополнительных плат.

3. Выберите Инструменты > Доска > Диспетчер плат

4. Найдите esp8266 и затем установите плату.

5. Перезапустите IDE.

Кодирование ESP8266 для отображения температуры

На этом этапе мы собираемся запрограммировать ESP8266 для считывания температуры, а после этого вместо отображения этой температуры на последовательном мониторе мы будем отображать ее на веб-сервере. .

1. Перейдите в репозиторий Github для этого проекта отсюда.

2. В Репозитории вы увидите код с именем » ESP8266 Температурный веб-сервер ». Вам просто нужно скопировать этот код и вставить его в Arduino IDE.

3. После вставки кода измените SSID и пароль в коде на идентификатор вашей сети Wi-Fi. На вкладке «Инструменты» выберите правильную плату и COM-порт, а затем нажмите кнопку «Загрузить». язык, написанный там и ниже, будет присутствовать IP-адрес. Вам нужно скопировать этот IP-адрес, так как это адрес веб-сервера, который будет отображать температуру.

Готово

Когда код загружен и получен IP-адрес. Откройте веб-сервер, используя этот IP-адрес

. На веб-сервере будут отображаться показания температуры в градусах Цельсия, а также в градусах Фаренгейта.

Помимо веб-сервера, показания температуры также можно наблюдать на последовательном мониторе.

Вы заметите, что при изменении температуры рядом с датчиком показания на веб-сервере также меняются.

Вот и все для демонстрации.

Измерение температуры с помощью цифрового датчика DS18B20…

 В этом руководстве описывается простое приложение для измерения температуры с помощью цифрового датчика DS18B20 и многофункционального модуля Arduino, подключенного к FRDM K64F. Вы можете использовать новую функцию Expansion Boards (экраны расширения), включенную в инструмент Pins v9. Эта функция позволяет быстро интегрировать щиты в приложение без необходимости изучения руководств.

В этом документе вы можете найти настройку среды, основы протокола 1-wire и шаги по подготовке кода с помощью инструментов MCUXpresso (инструмент «Периферийные устройства и контакты»).

Настройка среды

  1. Установите MCUXpresso IDE v11.3.0 или более позднюю версию и SDK FRDM-K64F 2.8.2 или более позднюю версию.
  2. Используйте плату FRDM K64F EVK https://www.nxp.com/webapp/Download?colCode=FRDMK64FUG.
  3. Подключите многофункциональную плату Arduino (плата расширения) к плате FRDM K64F EVK, а DS18B20 — к плате расширения Arduino.
  4. Подключите плату ЭВК к ПК через USB-кабель.

Рис. 1 Плата FRDM K64F EVK с многофункциональным экраном Arduino

  1. Наличие файла определения платы расширения arduino_multifunction_ds18b20.xml. Подробные инструкции по созданию платы расширения см. в следующей статье: Создание файла определения платы расширения для Arduino Multifunction Shield
  2. .

DS18B20 Цифровой термометр 1-Wire с программируемым разрешением

См. документацию https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

В этом учебном пособии используется питание от внешнего источника.

Рис. 2. Питание DS18B20 от внешнего источника питания

 

См. временные диаграммы для связи с DS18B20, необходимые для написания протокола связи 1-Wire.

Рис. 3. Временная диаграмма инициализации

на автобусе поддерживается

  • ’44h’ преобразовать температуру
  • ‘BEh’ чтение регистров DS18B20 (температура)
  • Создайте приложение в MCUXpresso IDE

    Начните с примера hello_word из SDK, переименуйте проект в frdmk64_termometer.

    Действия по настройке таймера в инструменте «Периферийные устройства»:

    1. Перейдите в инструмент «Периферийные устройства» и добавьте/настройте компонент PIT. Устраните новое представление «Ошибка в проблемах», добавив в проект компонент SDK.

      Рис. 5 Компонент PIT в инструменте «Периферийные устройства»

    Действия по применению платы расширения и настройке контакта в инструменте «Контакты»:

    1. Примените плату расширения (arduino_multifunction_ds18b20.xml) из меню «Пинсы» -> меню «Применить плату расширения»

      

    Рис. 6. Диалоговое окно «Применить плату расширения»

    1. Диалоговое окно «Маршрутизация платы расширения» открывается автоматически после шага 1. Оно позволяет направлять сигналы на выводы процессора, подключенные к плате расширения. По умолчанию все выводы разводятся автоматически, см. ниже. Оставьте только контакт A4, который необходим для нашего термометра. Удалите ненужные контакты, щелкнув Route или более поздней версии в представлении Routing Details , затем щелкните Apply .

     

    Рис. 7 Диалоговое окно маршрутизации платы расширения  

    1. Результатом действия является следующая настройка. При выборе платы расширения в списке «Ярлыки» вы видите метки, отмеченные на плате Arduino.

    Рис. 8. Вид заголовка расширения

    1. В подробностях маршрутизации установите электрические свойства контакта (Направление, Выбор тяги, Разрешение тяги).

    Рис. 9 Электрические свойства в представлении Routing Details

    1. Нажмите Обновить код , чтобы обновить проект кодом, сгенерированным инструментами.

    Напишите приложение термометра и протокол 1-wire (thermometer.

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

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