Как подключить датчик DS18B20 к Arduino
Как подключить к Ардуино термодатчик DS18B20 и DS18B22, чтобы сделать термометр с помощью библиотеки OneWire — рассмотрим в этом уроке. В отличие от датчика температуры и влажности DHT11, сенсор работает в широком диапазоне температур и способен измерять отрицательные температуры. Интегральный датчик температуры DS18B20 для Arduino имеет разрешающую способность измерений до 0,0625 °C.
Датчик DS18B20 распиновка, характеристики

Характеристики DS18B20 Arduino (datasheet)
- диапазон измерения температуры -55 … +125 °C;
- погрешность сенсора не превышает 0,5 °C;
- разрешающая способность достигает 0,0625 °C;
- сенсор DS18B20 откалиброван при изготовлении;
- можно подключить до 127 датчиков на одной линии;
- для подключения требуется только 3 провода.
Цифровой датчик DS18B20 отправляет данные по Wire шине и может работать на одной линии с множеством других устройств. Каждый датчик имеет свой персональный 64-битный код, позволяющий микроконтроллеру Arduino общаться на одной шине сразу с несколькими сенсорами. Датчик преобразует температуру окружающей среды в цифровой код, т.е. для подключения не требуется дополнительного АЦП.
Подключение к Ардуино датчика ds18b20
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- термодатчик DS18B20;
- макетная плата;
- резистор на 4.7 кОм;
- провода «папа-мама», «папа-папа».

Для подключения DS18b20 к Arduino следует использовать макетную плату. Среднюю ножку сенсора (DATA) следует подключить к цифровому пину 2 платы Ардуино и подтянуть эту шину через резистор 4,7 кОм к линии +5 Вольт. Подключите датчик температуры DS18B20 к микроконтроллеру Arduino Uno согласно схеме, представленной на картинке выше и загрузите следующий скетч.
Работа с библиотекой DallasTemperature
Библиотека для Arduino DallasTemperature Sensors OneWire значительно облегчает и упрощает работу с сенсором DS18B20. Описание библиотеки DallasTemperature.h на русском говорит, что датчик управляется несколькими простыми функциями, которые представлены в следующем скетче. Схема подключения датчика не меняется, а скачать библиотеку DallasTemperature.h для Ардуино можно на нашем сайте здесь.
Скетч для датчика ds18b20 Ардуино
#include "OneWire.h" #include "DallasTemperature.h" OneWire oneWire(2); // порт подключения датчика DallasTemperature ds(&oneWire); void setup() < Serial.begin(9600); // инициализация монитора порта ds.begin(); // инициализация датчика ds18b20 > void loop() < ds.requestTemperatures(); // считываем температуру с датчика Serial.print(ds.getTempCByIndex(0)); // выводим температуру на монитор Serial.println("C"); >
Пояснения к коду:
- для сенсора можно использовать любой порт микроконтроллера общего назначения, указав его в скетче;
- перед загрузкой программы, необходимо установить библиотеки DallasTemperature и OneWire.
Датчик температуры ds18b20 подключение к Ардуино

DS18B20 и DS18B22 работает по интерфейсу wire, для этого способа подключения необходима только одна шина данных и резистор на 4.7 кОм в качестве «Подтяжки». Все сенсоры DS18B20 для Ардуино содержат собственный 64-битый код, хранящийся в ПЗУ устройства. Благодаря этому количество датчиков подключаемых к микроконтроллеру по одной шине с библиотекой OneWire.h, почти неограниченно.
Скетч для нескольких датчиков на одной шине
#include "OneWire.h" #include "DallasTemperature.h" OneWire oneWire(2); // порт подключения датчиков DallasTemperature ds(&oneWire); byte num; // количество подключенных датчиков void setup() < Serial.begin(9600); // инициализация монитора порта ds.begin(); // инициализация датчика ds18b20 num = ds.getDeviceCount(); // узнаем количество датчиков Serial.print("Number: "); // выводим полученное количество Serial.println(num); > void loop() < // выполняем цикл столько, сколько найдено датчиков на шине for (byte i = 0; i < num; i++)< Serial.print("Sensor "); Serial.print(i); Serial.print(": "); ds.requestTemperatures(); // считываем температуру с датчика Serial.print(ds.getTempCByIndex(i)); Serial.println("C"); > Serial.println(""); >
Пояснения к коду:
- DallasTemperature датчик подключается к цифровому порту 2 платы;
- цикл for выполняется столько раз, сколько обнаружено сенсоров на одой шине.
Заключение. Датчик может быть выполнен в нескольких вариантах (смотри фото выше), от этого будет зависеть только схема подключения термодатчика к Arduino NANO или UNO. В первом случае необходимо использовать подтягивающий резистор на 4.7 кОм. Датчик, в виде готового модуля уже имеет резистор. Третий вариант — это датчик в герметичном корпусе, который можно смело использовать в горячей воде.
Урок 6. Работа с датчиком температуры DS18B20
Это шестой урок из цикла «Знакомство с Arduino». В этом уроке Вы научитесь основам работы с цифровым датчиком температуры DS18B20.
Для урока Вам понадобится следующие детали:
- Arduino Nano;
- беспаечная макетная плата (она же breadboard);
- провода типа папа-папа;
- резистор номиналом 4.7 кОм;
- дисплей OLED 0.96»;
- цифровой датчик температуры DS18B20.
Также Вам понадобится скачать и установить библиотеки DallasTemperature, OneWire и среду Arduino IDE. Если не знаете/забыли как это сделать, то вернитесь к уроку по среде Arduino IDE.
Датчик температуры может быть использован как одна из основных частей термометра, системы охлаждения и тому подобное. В этом уроке мы рассмотрим схему подключения DS18B20 к Arduino, основные функции для работы с ним, а также пример самого простого термометра.
Датчик подключается к Arduino по протоколу 1-Wire, что позволяет подключить большое количество таких датчиков (до 127 штук), используя всего один цифровой вывод. Опрос одного конкретного датчика, подключённого по общей шине, производится по уникальному серийному 64-разрядному коду, который может быть считан специальной командой.
Подключение цифрового датчика температуры DS18B20 к Arduino:
Цифровой датчик температуры DS18B20 можно подключить к Arduino двумя способами:
- С использованием 3х выводов: VCC (питание), GND (земля) и DQ (данные)
Вывод датчика GND подключается к выводу GND Arduino, вывод VCC подключается к выводу +5V Arduino, а вывод DATA подключается к любому цифровому выводу Arduino.

- С использованием 2х выводов: GND(земля) и DQ (данные). Однако при таком подключении датчик температуры редко может выдавать ошибочные показания
Вывод датчика GND подключается к выводу GND Arduino, вывод VCC закорачивается на землю (GND), вывод +5V Arduino подключается к резистору, а вывод DATA подключается к любому цифровому выводу Arduino.

Однако независимо от выбранного способа подключения, информационный (DQ) вывод датчика необходимо соединить с питанием через резистор 4.7 кОм (при подключении только одного датчика можно использовать резистор на 10 кОм).
При подключении нескольких DS18B20 параллельно (при использовании библиотеки OneWire считывать показания можно со всех датчиков одновременно) нужно учитывать следующие замечания:
- При подключении больше 10 датчиков необходимо использовать резистор с меньшим сопротивлением (~1.5 кОм или меньше)
- При подключении больше 10 датчиков может возникнуть погрешность в показаниях. Чтобы предотвратить это, рекомендуется ставить дополнительный резистор 100 Ом … 120 Ом между цифровым выводом Arduino, к которому подключён вывод DQ и выводом DQ на каждом датчике DS18B20.
В нашем примере мы подключим DS18B20 к Arduino при помощи 3х выводов. Также, для вывода текущей температуры мы будем использовать OLED.
Когда все необходимые детали находятся под рукой можно начинать собирать наш пример. Для этого необходимо воспользоваться следующими схемами:
Электрическая принципиальная схема:
Схема подключения на макетной плате:

Итак, подключите модуль Arduino к компьютеру. Далее откройте среду разработки Arduino IDE. Когда схемка собрана можно записывать в Arduino следующую программу:
Текст программы:
FLProg — Урок 17. Как подключить несколько датчиков ds18b20 к одной шине
FLProg — Урок 17. Как подключить несколько датчиков ds18b20 к одной шине.
Ссылки на используемые компоненты:
Датчик температуры DS18b20 — http://ali.pub/y34um
ЖК-дисплей LCD1602 (синий экран)- http://ali.pub/alnru
Модуль расширителя интерфейса (I2C)- http://ali.pub/dwj5n
Урок 17 — Как подключить несколько датчиков ds18b20 к одной шине
![]()
Оставьте комментарий:
Навигация по сайту:
Юный Технарь:
Помощь проекту:
Деньги можно перечислить на карту Сбербанка России:
4276 5400 2194 5088
Поиск
Последние статьи
Игра — «кто быстрее» и цикличный таймер …
Игра — «кто быстрее» и цикличный таймер на Ардуино.
Дозатор сыпучих материалов на Ардуино
Дозатор сыпучих материалов на Ардуино.
Мой канал на YouTube

Подпишитесь!
![]()
2015, Arduinoprom.ru — блог Чилингаряна Грачика. Все авторские права на тексты принадлежат ему.
При размещении текстов и видеоматериалов на сторонних ресурсах активная гиперссылка ОБЯЗАТЕЛЬНА.
Все логотипы и товарные знаки, размещенные на сайте, принадлежат только их законным владельцам (правообладателям).
Как подключить ds18b20 к arduino
Вы здесь: Home
Железо
Уроки и примеры
Подключаем датчики DS18B20 к компьютеру
Обновлено 19.08.2013 15:38 | Автор: MaksMS | Просмотров: 46471
Существует множество способов подключения распрастраненных датчиков температуры DS18B20 к компьютеру,например используя СОМ порт(которого уже в большинстве современных компьютеров нет).Но как подключить с наименьшими усилиями DS18B20 к компьютеру ? Продолжаем эксперементы со сторублевым программатором USBasp ,ранее мы уже научили его работать как i2c-usb переходник.
Для подключения датчиков мы возьмём за основу проект USBTemp ,который изначально заточен под другой микроконтроллер -Atmega168,но,используя несложные манипуляции исходный код проекта адаптируется под м/к atmega8 и схему от USBasp.
Принцип действия данного устройства: м/к каждую минуту запрашивает данные с датчиков(в это время светодиод гаснет) и сохраняет в свою память, а программа на компьютере потом запрашивает их.
Скомпилированную версию USBtemp под USBasp качаем тут.В архиве имеется и программы для чтения показаний датчиков на компьютере,в том числе из ОС Windows.Если Вы хотите модифицировать прошивку ,то исходный код можно найти на официальной странице проекта.
Как перепрограммировать устройство можно почитать на страничке USBasp в разделе «Допиливание» программатора. .Вкраце лишь укажу строку для программирования через arduino :
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbtemp.hex
avrdude -C avrdude.conf -c usbavr -P -p m8 -U flash:w:usbtemp.hex
Фьюзы остаются такие же как были на USBasp:
-U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Не забываем ,что для перепрограммирования USBasp необходимо установить джампер JP2.
Подключаем датчики к переходнику:
На плате бывшего программатора не хватает подтягивающего резистора на 4.7кОм (резистор подбирается в зависимости от количества датчиков и расстояния до них) ,который должен быть подключен к плюсу (Вывод VTG ). Датчики подключаем паралельно согласно даташиту: 1 и 3 вывод замыкаем на минус,2 — к выводу USB переходника DS.По умолчанию максимальное количество датчиков ровно 5.

На фото собрана тестовая схема ,где подключено 3 датчика.Можно так же разглядеть резистор на 4.7кОм,который подключен на плюс.
Работа с утилитой в Linux и Windows:
Для работы в Linux драйвера не требуются.В Windows необходимо установить стандартные дрова.
usbtemp sensors — выдаст адреса подключенных датчиков.Новые датчики появляются только после перезапуска устройства.
usbtemp temp -чтение текущего датчика.
Бонус команды,управляющие незадействованным светодиодом на плате:
usbtemp ledon — включить светодиод.
usbtemp ledoff — выключить светодиод.
При соотвествующей доработке прошивки можно управлять и свободными выводами (PIO).

Слева скриншот команд,где можно увидеть температуру подключенных датчиков.
Материалы и ссылки:
Прошивка и программа USBtemp2.0.zip.
Страничка проекта USBTemp.
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
