Сегодня мы будем подключать датчик температуры DS18B20 к arduino.

Основные характеристики датчика DS18B20 :

  1. Уникальный интерфейс 1-Wire Требуется только один контакт для связи
  2. Каждое устройство имеет уникальный 64-битный серийный адрес устройства который хранится в ROM
  3. Питание датчика в диапазоне температур  от 3 вольт до 5,5 вольт
  4. Диапазон измеряемых температур от -55 ° C до +125 ° C  (-67 ° F до +257 ° F)
  5. Программное обеспечение совместимо с DS1822
  6. Доступен в трех вариантах корпусов 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92

 

Фотография датчика DS18B20 в корпусе  TO-92

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

Датчик температуры DS18B20 работает с Arduino по протоколу передачи данных 1-Wire® и позволяет подключить несколько датчиков на одну шину.

Датчики можно подключить к Arduino двумя способами:

  • Внешнее подключение ( по трем проводам )
  • Паразитное подключение ( по двум проводам )

Мы рассмотрим внешнее подключение. в котором обмен данными осуществляется по средней ноге датчика DQ. Между ногой DQ и VDD требуется подключить резистор номиналом 4,7 кОм. Питание подключается к ногам VDD и GND, а именно VDD подключаем к + питания 5 вольт, а GND к минусу питания (земля).  DQ подключаем к цифровому пину 10 на Arduino UNO.

ds18b20 2

Если требуется подключить больше датчиков , то добавляем дополнительные датчики по схеме

ds18b20 3

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

Будем использовать библиотеку DallasTemperature, которую распакуйте в папку Library в вашей Arduino IDE.

После успешного скачивания библиотеки и установки,

Arduino ide ds18b20 600x556

запускаем Arduino IDE, и переходим к примерам по работе с датчиком, и выбираем пример Multiple.

В примере ищем строку #define ONE_WIRE_BUS 2 где 2 это номер цифрового пина  arduino к которому подключен датчик ( в нашем случае это 10 пин ) и меняем на строку на #define ONE_WIRE_BUS 10 и заливаем скетч в нашу плату ардуино.

Arduino ide ds18b20 1

Открываем монитор порта и снимаем галочку с “Автопрокрутка” и перемещаемся в самый верх окна монитора порта.

Монитор порта

Где мы видим  строки

  • Locating devices…Found 2 devices    –    количестве подключенных датчиков 2 штуки
  • Parasite power is: OFF  –   паразитное подключение отключено ( у нас датчики подключены внешним подключением )
  • Device 0 Address: 280054B604000092   –   адрес первого подключенного  датчика
  • Device 1 Address: 289E95B504000057   –   адрес второго подключенного датчика
  • Device 0 Resolution: 9  –  режим измерения первого датчика
  • Device 1 Resolution: 9    режим измерения второго датчика

Далее строки

  • Requesting temperatures…DONE  –  запрос получения температуры с датчиков
  • Device Address: 280054B604000092 Temp C: 7.00 Temp F: 44.60  –  адрес датчика , температура в градусах по Цельсию и температура по Фаренгейту
  • Device Address: 289E95B504000057 Temp C: 27.50 Temp F: 81.50  –  адрес датчика , температура в градусах по Цельсию и температура по Фаренгейту

Датчики как мы видим работают, и температуру мы получаем.

Для удобного отображения температуры и считывания данных с одного датчика без использования библиотеки, можно использовать более простой код. Для указания пина Arduino к которому у вас подключен датчик температуры DS18B20 , измените число в строке OneWire ds(9);  на например 10 

#include <OneWire.h>
OneWire ds(9);

void setup() {
  Serial.begin(9600);
}

void loop() {
  byte data[2];
  ds.reset();
  ds.write(0xCC);
  ds.write(0x44);
  delay(750);
  ds.reset();
  ds.write(0xCC);
  ds.write(0xBE);
  data[0] = ds.read();
  data[1] = ds.read();
  int Temp = (data[1] << 8) + data[0];
  Temp = Temp >> 4;
  Serial.println(Temp);
}
Добавить комментарий


Защитный код
Обновить