dallas ds18b20

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

Основные характеристики датчика 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

схема датчика ds18b20

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

DS18B20

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

Датчики подключаются к arduino двумя вариантами:

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

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

ds18b20

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

ds18b20

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

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

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

Arduino ide ds18b20

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

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

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

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

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

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

  • 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 

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

#include <OneWire.h>

#include <DallasTemperature.h>

 

#define ONE_WIRE_BUS 9

 

OneWire oneWire(ONE_WIRE_BUS);

 

DallasTemperature sensors(&oneWire);

 

DeviceAddress Thermometer1 = {

  0x28, 0x00, 0x54, 0xB6, 0x04, 0x00, 0x00, 0x92 };  // адрес датчика DS18B20 280054B604000092

DeviceAddress Thermometer2 = {

  0x28, 0x9E, 0x95, 0xB5, 0x04, 0x00, 0x00, 0x57 };

 

void setup() {

 

  sensors.begin();

  sensors.setResolution(Thermometer1, 10);

  sensors.setResolution(Thermometer2, 10);

 

  Serial.begin(9600);

}

 

void printTemperature(DeviceAddress deviceAddress) {

  float tempC = sensors.getTempC(deviceAddress);

  Serial.println(tempC);

}

void loop() {

 

  sensors.requestTemperatures();

  Serial.print("Sensor1  ");

  printTemperature(Thermometer1);

 

  Serial.print("Sensor2  ");

  printTemperature(Thermometer2);

}

В строке #define ONE_WIRE_BUS 9 указываем номер нашего пина 10, и загружаем код, открываем монитор порта

Arduino ide ds18b20

Где у нас Sensor1       7.50 температура в градусах Цельсия на датчике 1, который доступен по адресу  0x28, 0x00, 0x54, 0xB6, 0x04, 0x00, 0x00, 0x92, а  Sensor2       27.75 – температура второго датчика доступного по адресу 0x28, 0x9E, 0x95, 0xB5, 0x04, 0x00, 0x00, 0x57.

С этим все ясно, но если нам потребуется подключить три и больше датчиков, как нам изменить код я сейчас расскажу. Для начала нам потребуется запустить тестовый скетч Multiple, потом записать все адреса датчиков ( например 280054B604000086) и потом переводим в формат адреса 0x28, 0x00, 0x54, 0xB6, 0x04, 0x00, 0x00, 0x86 

После этого в скетче выше, после строки

добавляем строку с адресом нашего третьего датчика

потом в void setup () добавляем строку

и переходим к циклу  void loop (), в котором добавляем строку, которая отвечает за отображение температуры с третьего датчика

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

Заказать датчик температуры DS18B20 вы можете по ссылке ниже

ds18s20

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


Источник: http://arduino-project.net/podklyuchenie-ds18b20-arduino/



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Проекты на Arduino Аппаратная платформа Arduino


Arduino как сделать сам Arduino как сделать сам Arduino как сделать сам Arduino как сделать сам Arduino как сделать сам Arduino как сделать сам Arduino как сделать сам Arduino как сделать сам