Dallas 18B20 (ds18b20) подключение к Arduino

Опубликовано 03.07.2013 11:37:00


В ассортименте нашего магазина появился датчик температуры DALLAS 18B20 во влагозащищенном корпусе с широким диапазоном измеряемых температур от -55 до +125°С. Данные о влагозащищенности и максимальной температуре в +125 градусов сразу натолкнули на мысли об экстремальном тестировании в кипящей воде. Этим мы и займемся.

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

 

 

Данный датчик работает по шине 1-Wire.

Для устройств, работающих по шине 1-Wire в среде Arduino IDE используется библиотека OneWire.
Последнюю версию библиотеки, а также полную документацию можно найти на странице разработчиков.

Каждое такое устройство содержит уникальный 64-битный 'ROM' код, состоящий из 8 битов, определяющих код серии, 48 бит уникального номера и 8 бит помехоустойчивого CRC кода.

Информация об измеренной температуре хранится в оперативной памяти датчика, которая состоит из 9 байт.

1 и 2 байты хранят информацию о температуре.

3 и 4 байты хранят соответственно верхний и нижний пределы температуры.

5 и 6 байты зарезервированы.

7 и 8 байты используются для сверхточного измерения температуры.

9 байт хранит помехоустойчивый CRC код предыдущих 8 байт.

 

Основные команды, используемые при работе с библиотекой:

search(addressArray)

Выполняет поиск следующего 1-Wire устройства, если устройство найдено, то в 8 байтный массив addressArray записывается его ROM код, иначе возвращает false.

reset_search()

Выполняет новый поиск с первого устройства.

reset()

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

select(addressArray)

Выполняет выбор устройства после сброса, передается ROM Код устройства.

write(byte)

Передает информационный байт на устройство

write(byte, 1)

Передает информационный байт на устройство, работающее в паразитном режиме питания

read()

Считывает информационный байт с устройства

crc8(dataArray, length)

Вычисляет CRC код байтов из массива dataArray, длиной length

 

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

 0x44 – провести измерение температуры и записать данные в оперативную память

 0x4E – записать 3 байта в 3й, 4й и 5й байты оперативной памяти

 0xBE – считать последовательно 9 байт оперативной памяти

 0x48 – скопировать 3й и 4й байты оперативной памяти в EEPROM

 0xB8 – скопировать данные из EEPROM В 3й и 4й байты оперативной памяти

 0xB4 – вернет тип питания (0 – паразитное, 1 – внешнее)


 

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

 

Из датчика выходят три провода:

Красный: "+" питания.

Черный: "-" питания

Белый: Вывод выходного сигнала

 

Подключение датчика: 

Красный: на + 5 Вольт Arduino.

Черный на любой из GND пинов­­­ Arduino.

Белый на любый цифровой вход Arduino (в примере D10).

Для работы датчика необходимо соединить сигнальный провод с проводом питания резистором номиналом 4.7 кОм.

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

 

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

 
Пример программного кода

 

Dallas18B20 экстремальное тестирование

Как уже говорилось, мы решили устроить датчику экстремальное тестирование, но просто опускать датчик в кипяток это не интересно. Поместим датчик в стакан и прокипятим. Для наглядности в монитор порта будут выводиться значения температуры. На прикрепленном ниже видео видно плавное нарастание температуры. Хочется отметить что температура воды при нормальном атмосферном давлении не может быть выше 100 °С. При тестировании датчика в кипящей воде, максимально зафиксированная нами температура составила 99.87°С. Тест можно считать успешным.

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

Важно

Датчик температуры находится в металлическом корпусе, переход от металла на кабель заизолирован термоусадочной трубкой. На металле трубка прилегает очень плотно, на кабеле слабее, через это место может, хоть вероятность и мала, просочиться вода. С целью избежания данной ситуации мы советуем не погружать датчик в воду целиком. Если у вас все таки есть такая необходимость,  мы рекомендуем заизолировать данный участок более тщательно. 

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

 
Код примера


 

Купить Купить в России  Dallas 18B20 во влагозащищенном корпусе


А как же комментарии?