Распиновка ds18b20 в металлическом корпусе

Обновлено: 14.05.2024

DS18B20 — цифровой датчик температуры фирмы Dallas. Отправляет данные о температуре, используя только один цифровой вывод и специальный протокол, называемый 1-Wire. Вы можете подключить несколько датчиков к одному контакту. Датчик измеряет температуру в градусах Цельсия.

фото DS18B20

Технические характеристики DS18B20

  • Датчик можно питать напряжением от 3 до 5,5В
  • Датчик может измерять температуру от -55 до 125 °C
  • Датчик имеет цифровое разрешение от 9 до 12 бит
  • Точность измерения +/- 0,5 °C в диапазоне от -10 до 85 °C
  • Точность измерения: + /- 2 °C для диапазона от -55 до 125 °C
  • Дрейф измерения +/- 0,2 °C

Распиновка DS18B20

Распиновка DS18B20

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

datchik-temperatury-ds18b20-opisanie-3

Что такое разрешение?

В технических характеристиках сообщается, что датчик DS18B20 может измерять температуру с различным разрешением. Разрешение — это как у линейки: миллиметры между сантиметрами. Так же и c разрешением у DS18B20 — это шаг между последовательными ступенями градусов Цельсия.

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

Для 9 битного разрешения есть 2 шага между последовательными уровнями:

То есть, вы можете прочитать температуру с разрешением 0,5 °C. Для 9 битного разрешения время измерения составляет 93,75 мс. То есть, вы можете выполнять 10,6 измерений в секунду.

Для 10 битного разрешения есть 4 шага между последовательными уровнями:

В этом случае мы считываем температуру с разрешением 0,25 °C. Время измерения для 10 битного разрешения составляет 187,5 мс, что позволяет выполнить 5,3 измерений в секунду.

Для 11 битного разрешения есть 8 шагов между последовательными уровнями:


  • 0,0 °C
  • 0,125 °C
  • 0,25 °C
  • 0,375 °C
  • 0,5 °C
  • 0,625 °C
  • 0,75 °C
  • 0,875 °C

То есть разрешение составляет 0,125 °C. Время измерения для 11 битного разрешения составляет 375 мс. Это позволяет выполнить 2,6 измерения в секунду.

Для 12 битного разрешения есть 16 шагов между последовательными уровнями:

  • 0,0 °C
  • 0,0625 °C
  • 0,125 °C
  • 0,1875 °C
  • 0,25 °C
  • 0,3125 °C
  • 0,375 °C
  • 0,4375 °C
  • 0,5 °C
  • 0,5625 °C
  • 0,625 °C
  • 0,6875 °C
  • 0,75 °C
  • 0,8125 °C
  • 0,875 °C
  • 0,9375 °C

Следовательно, разрешение составляет 0,0625 °C. Время измерения для 12 битного разрешения в районе 750 мс. То есть вы можете сделать 1,3 измерений в секунду.

Что такое точность измерения?

Ничто в мире, и особенно в электронике, не является совершенным. Можно только приближаться к совершенству, тратя все больше и больше денег и сил. Так же и с этим датчиком. Он имеет некоторые неточности, о которых вы должны знать.

В технических характеристиках сказано, что в диапазоне измерения от -10 до 85 °C датчик DS18B20 имеет точность на уровне +/- 0,5 °C. Это значит, что, когда в комнате у нас температура 22,5 °C, то датчик может вернуть нам результат измерения от 22 до 23 °C. То есть, может показать на 0,5 °C больше или меньше. Все это зависит от индивидуальной характеристики датчика.

В диапазоне от -55 до 125 °C погрешность измерения может возрасти до +/- 2 °C. То есть, когда вы измеряете что-то с температурой 100 °C, то датчик может показать температуру от 98 до 102 °C.

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

Что такое дрейф измерения?

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

Дрейф датчика температуры DS18B20 +/- 0.2 °C. Например, когда в комнате постоянная температура составляет 24 °C, датчик может выдавать результат в диапазоне от 23,8 °C до 24,2 °C.

Датчик температуры DS18B20: подключение, распиновка и примеры работы

Цифровой датчик DS18B20 измерит температуру в воде, на земле и даже в космосе.


Датчик способен считывать показания температуры в диапазоне от −55 до +125 °C и передавать данные на управляющую плату всего через один пин.

Примеры работы для Arduino

Датчик общается с управляющей платой по протоколу 1-wire . Но вы можете не загружать себе голову битами и байтами, а сразу сосредоточиться на проекте. Для этого скачайте и установите две библиотеки OneWire и DallasTemperature через менеджер модулей.

Один датчик

Рассмотрим простой пример — подключения одного датчика.

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

Сенсор подключается к управляющей плате через один сигнальный пин. При подключении к Arduino в компактном форм-факторе, например Micro или Iskra Nano Pro, воспользуйтесь макетной платой и парочкой нажимных клеммников.

Между сигнальным проводом и питанием установите сопротивление 4,7 кОм.

При коммуникации сенсора со стандартными платами Arduino Uno формата Rev3 или Iskra Uno используйте Troyka Slot Shield совместно с модулем подтяжки.

Код программы

Выведем температуру сенсора в Serial-порт.

Серия датчиков

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

Добавим к предыдущем схемам подключения ещё по паре датчиков в параллель.



Просканируем все устройства на шине 1-Wire и выведем температуру каждого сенсора отдельно в Serial-порт.

Примеры работы для Espruino

Сенсор подключается к управляющей плате через один сигнальный пин. При подключении к Iskra в компактном формфакторе, например Iskra JS Mini, воспользуйтесь макетной платой и парочкой нажимных клеммников.

При коммуникации сенсора с платой Iskra JS, используйте Troyka Slot Shield совместно с модулем подтяжки.

Выведем температуру сенсора в консоль Espruino Web IDE.



Найдём все устройства на шине 1-Wire и выведем температуру каждого сенсора отдельно в Serial-порт.

Примеры работы для Raspberry Pi

Считаем данные с датчика одноплатником Raspberry Pi. Подключите сенсор к 4 пину Raspberry через модуль подтяжки. Для избежания макеток и проводов используйте плату расширения Troyka Cap.


Цифровой датчик температуры DS18B20

DS18B20 — это цифровой датчик, который применяется для измерения температуры (диапазон -55 °C до 125 °C), а также обладает программируемой уникальной точностью (до 12 бит).

DS18B20

Данное устройство способно контролировать и регулировать степень нагретости какого-либо материала, вещества и т.п. в технологическом процессе, обеспечивая тем самым его безопасность.

Датчик DS18B20: схема построения

Датчик DS18B20

Прибор DS18B20 имеет сразу 3 ключевых корпуса:

  1. Сторона ТО-92;
  2. Стенка SO-150mil;
  3. Корпус uSOP.

Корпус ТО-92

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

Микросхема DS18B20

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

Итак, начать стоит с блока «POWER SUPPLY SENSE» он обеспечивает полное питание для функционирования всей системы. Помощником «POWER SUPPLY SENSE» является юнфер «PARASIT POWER CIRCUIT», способный ,в случае необходимости, взять на себя функцию распорядителя питания.

К еще одному ключевому элементу в структуре термодатчика следует отнести «64-BITROM AND 1-WIREPORT». Это модуль структуры, отвечающий за хранение уникального кода устройства и передачу этого кода во внутреннюю память DS18B20 «SCRATCHPAD». «SCRATCHPAD», в свою очередь, взаимодействуя с регистрами «MEMORY CONTROL LOGIC» и «1-Wire», подает сигнал связи следующим принципиально-важным блокам датчика:

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

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

Подключение датчика DS18B20, как правило, происходит двумя-тремя простыми способами. Мы рассмотрим эти способы на примере подключений DS18B20 к плате Arduino и esp8266.

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

Начнем с прямого подключения единичного датчика к Arduino:

DS18B20 и Arduino

Для начала необходимо прикрепить устройство непосредственно к плате Arduino: поэтому подаем «5V» к выводу «Vdd» устройства. Таким же способом связываем друг с другом выводной «GND». Затем срединный датчик DS18B20 фиксируем на каком-либо выходном регистре (по желанию). Допустим, это будет регистр «D2».

Подключение вывода данных «DQ» необходимо производить только после того, как вы записали номерной код Arduino на скетч. Кроме того, очень важным аспектом, о котором необходимо сказать, является присутствие номинального резистора «4,7k», который располагается между линиями устройства и блоками питания. Отметим, что данный резистор предназначен для обеспечения полного функционирования (то есть без сбоев) линий термодатчика.

Теперь перейдем к рассмотрению подключения несколькими датчиками DS18B20 к плате Arduino:

Мы возьмем в пример ситуацию с 5-ю датчиками DS18B20. Итак, как мы видим, все 5 датчиков в шине подсоединены параллельным образом, при этом, они стягиваются номинальным резистором «4,7k». Таким образом, действие платы Arduino будет определяться уникальным и точным кодом каждого из этих 5-ти датчиков.

Пришла очередь третьего способа подключения DS18B20 к плате Arduino при помощи паразитного питания:

В данном случае очевидно, что датчик/датчики принимает/принимают импульс линейных данных датчика, которые расположены между блоками «Vdd» и «GNG». А существенную роль и здесь играет все тот же номинальный резистор «4,7k», который не только стягивает линейные данные датчика, но и обеспечивает функционирование всей “буферной” системы и конструкции.

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

Теперь перейдем к обсуждению подключения датчика DS18B20 к esp8266. Начнем, пожалуй, с прямого подключения:

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

Резистор 1 (R1) определяет сопротивление не более 2,2-х КОм. При наличии такого резистора, срединный вывод “DATA” прикрепляется к кабельному блоку, либо «GND», либо «VCC», а также соединяется с центральной трубкой, что и обеспечивает качественное: прочное, герметичное подключение.

Наконец, поговорим о последнем способе подключения датчика DS18B20 к esp8266:

Способ подключения датчика DS18B20

Данный способ осуществляется с помощью номинального резистора «4,7k», который подтягивает всю систему к питанию, и с помощью трех контактов вывода датчика DS18B20, обеспечивающих, в свою очередь, подключение линий «DQ» к срединному «DATA».

Характеристики датчика DS18B20

Характеристики датчика DS18B20

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

  • Измеритель DS18B20 питается напряжением, величина которого варьируется от 3-х Вольт до 5,5 Вольт;
  • Термодатчик DS18B20 способен измерять значения температур в диапазоне от -55 °C до 125 °C;
  • Пропускная способность датчика DS18B20 доходит до отметки 12 бит;
  • Величина погрешности прибора DS18B20 составляет (+,- ) 0,5 ° C;
  • Медленное перемещение измерителя DS18B20 относительно любого устройства не превышает единицы.

Взаимосвязь между разрешением датчика DS18B20 и температурой

На самом деле, рассмотреть взаимосвязь между разрешением прибора DS18B20 и температурой можно с помощью следующей картинки:

Однако, предлагаю сделать это более детально.

Начнем с девяти-битного разрешения. При этой величине температура может принимать следующие значения:

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

При расширении 10 бит температура принимать такие величины:

  1. 0.00 °C;
  2. 0.25 °C;
  3. 0.50 °C;
  4. 0.75 °C;

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

При разрешении 11 бит температура имеет возможность принять следующий вид:

  • 1) 0.00 °C;
  • 2) 0.125 °C;
  • 3) 0.25 °C;
  • 4) 0.375 °C;
  • 5) 0.50 °C;
  • 6) 0.625 °C;
  • 7) 0.75 °C;
  • 8) 0.875 °C.

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

При разрешении 12 бит температура может принимать следующие значения:

  • 1) 0,00 °C;
  • 2) 0,0625 °C;
  • 3) 0,125 °C;
  • 4) 0,1875 °C;
  • 5) 0,25 °C;
  • 6) 0,3125 °C;
  • 7) 0,375 °C;
  • 8) 0,4375 °C;
  • 9) 0,50 °C;
  • 10) 0,5625 °C;
  • 11) 0,625 °C;
  • 12) 0,6875 °C;
  • 13) 0,75 °C;
  • 14) 0,8125 °C;
  • 15) 0,875 °C;
  • 0,9375 °C.

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

Основные функциональные способности датчика DS18B20

Термодатчик DS18B20 имеет в своем функционале сразу несколько важнейших команд:

  1. Навык преобразования температур. (Данная способность может поместить температуру в двух-байтный блок оперативной памяти, после чего датчик переходит в состояние низкого потребления. В этом состоянии DS18B20 считывает код данных и определяет режим состояния процесса);
  2. Команда записи памяти. (Она дает возможность сохранить три байта данных в оперативной памяти DS18B20. При это, следует уточнить, что ведущий прибор перебрасывает информацию с наименьшего бита);
  3. Способность чтения памяти. (Применяется для прочтения оперативной памяти памяти прибора. Сброс данных осуществляется с самых наименьших битов или байтов, при этом, в случае необходимости, эта команда способна прекратить сброс данных);
  4. Команда копирования памяти. (Она помогает скопировать все данные внутренней памяти устройства в блок EEPROM, что приводит к осуществлению в дальнейшем питательной способности системы);
  5. Способность перезагрузки EEPROM. (Дает возможность регистрам передохнуть, перезагружая все значения на блоках. Кроме того, только после перезагрузки DS18B20 происходит процесс прочтения оперативной памяти памяти прибора и сообщается о ее состоянии).

Где можно купить датчик DS18B20?

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

Если в статье Вы не всё поняли про этот датчик, рекомендую посмотреть видео:

Arduino и термометр DS18B20

DS18B20 – высокоточный цифровой датчик температуры. Основные характеристики:

  • Диапазон: -55.. 125 °C
  • Точность: 0.5 °C
  • Разрешение: 9.. 12 бит (0.48.. 0.06 °C)
  • Питание: 3-5.5V
  • Период выдачи результата:
    • 750 мс при точности 12 бит
    • 94 мс при точности 9 бит


    В наборе идёт датчик в герметичном исполнении со стандартным гнездом (шаг 2.54 мм) для подключения

    Подключение

    Датчик имеет следующие назначения пинов:


    Датчик подключается к любому цифровому пину Arduino, но пин должен быть подтянут к питанию резистором 4.7 кОм. На один пин можно подключить несколько датчиков DS18B20.



    В рамках набора GyverKIT резистор на 4.7 кОм можно заменить двумя резисторами на 10 кОм (есть в комплекте), подключенными параллельно:


    Библиотеки

    Для этого датчика есть несколько библиотек:

    • “Официальная” библиотека DallasTemperature.h, для работы которой также понадобится библиотека OneWire.h.
    • Наша библиотека microDS18B20

    В примерах на этом сайте мы будем использовать microDS18B20, так как она в несколько раз легче и проще в использовании, чем официальная. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS18B20. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

    Работа с microDS18B20

    Без адресации

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

    С адресацией

    В этом режиме можно подключить сколько угодно датчиков на один пин МК, но для работы с ними понадобится занести в программу уникальные адреса датчиков. В момент чтения адреса к пину должен быть подключен только один датчик! Пример – address_read. Для дальнейшей работы адреса хранятся в массивах на стороне программы и передаются датчикам при инициализации, пин указывается один и тот же:

    Также адрес можно сменить во время работы программы, см. документацию.

    Чтение температуры

    Чтение температуры делится на два этапа – запрос и получение данных. Запрос делается функцией requestTemp() . После получения запроса датчик начинает измерение температуры, которое длится от 90 до 750 мс в зависимости от настроенной точности (по умолчанию точность максимальная, преобразование длится 750 мс). Если прочитать температуру до окончания преобразования – датчик вернёт результат предыдущего измерения, поэтому в примерах используется задержка или опрос по таймеру на 1 секунду. Получить температуру можно при помощи getTemp() [float] или getTempInt() [int]. Если принятые данные повреждены или датчик отсутствует на линии – функция вернёт предыдущее успешно прочитанное значение температуры.

    Примечание: при повторных вызовах getTemp() не запрашивает с датчика новую температуру (долгое выполнение функции), вместо этого она просто возвращает предыдущий результат до тех пор, пока не будет сделан новый запрос requestTemp().

    В версии библиотеки 3.5 появилась возможность отдельно запросить температуру и определить корректность полученных данных, чтобы только после этого их прочитать и применить в программе – функция readTemp() . Также это позволяет определить состояние подключения и всё ли в порядке с датчиком. Для чтения температуры рекомендуется использовать конструкцию вида:

    где readTemp() запрашивает данные с датчика и возвращает true , если они прочитаны корректно. После этого можно забрать текущую температуру из getTemp() , которая уже не запрашивает температуру с датчика, а отдаёт прочитанный в readTemp() результат.

    Примеры

    Библиотека позволяет работать по схеме “один датчик – один пин”, в которой адрес датчика получать не нужно. Достаточно подключить и использовать:

    Читайте также: