Термодатчик ds18b20 – Датчик температуры DS18B20. Описание на русском языке.

Датчик температуры DS18B20. Описание, характеристики, подключение, распиновка, datasheet

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

Технические характеристики 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 может измерять температуру с различным разрешением. Разрешение — это как у линейки: миллиметры между сантиметрами. Так же и c разрешением у DS18B20 — это шаг между последовательными ступенями градусов Цельсия.

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

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

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

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

  • 0,0 °C
  • 0,25 °C
  • 0,5 °C
  • 0,75 °C

В этом случае мы считываем температуру с разрешением 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.

Скачать datasheet DS18B20 (379,0 Kb, скачано: 969)

www.joyta.ru

Поддельные DS18B20 waterproof: что делать? / Habr

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


Источник: ali-trends.ru

До меня о поддельных датчиках писалось еще и здесь. Характерные отличия поддельных датчиков от оригинала:

  1. Датчик, даже подключенный в непосредственной близости, в режиме паразитного питания отвечает неуверенно, через раз.
  2. В режиме паразитного питания высокий уровень восстанавливается слишком долго (можно замерять микроконтроллером или смотреть осциллограмму)
  3. потребление тока значительно выше нескольких микроампер (GND и VCC на минус, DQ через микроамперметр на +5 вольт)
  4. После процедуры перечисления (0xF0) датчики не отвечают на команду чтения скрэтчпада (0xBE)
  5. Температура прочитанная из скрэтчпада после подачи питания без команды замера отличается от 85,0 градусов.
  6. Значения в скрэтчпаде на позициях 5 и 7 не соответствуют 0xFF и 0x10
  7. Значения температуры (на первых двух позициях скрэтчпада) прочитанные после первого включения обесточенного датчика без предварительно поданной команды на замер, возвращают предыдущее значение, а не 50 05 (85.0 градусов).


К сожалению, у меня нет осциллографа, а в качестве испытательного стенда выступал GPS-трекер Galileosky BaseBlock Lite.

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

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

Решение проблемы


Итак, датчики закуплены, но только одна партия заработала корректно, а на разбирательства и заказ новой партии ушло бы приличное время, да и повлекли бы перерасходы. Поэтому проблему пришлось решать своими силами.

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

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

После сборки схемы навесным монтажом датчик обнаружился терминалом при емкости конденсатора 1 мкФ. Для массового внедрения была спроектирована и заказаны панелированные платы с платами паразитного питания:

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

Заключение


Здесь я хотел бы призвать производителей устройств учесть данный момент в своих продуктах, а продавцов — проверять датчики перед продажей или вовсе не иметь с поставщиком дело, если он поставляет контрафактные датчики, а пользователей — освещать данную тему в комментариях, письмах или обращениях.

habr.com

Подключение датчика температуры ds18b20, dht, lm35, tmp36 к Arduino

В этой статье мы рассмотрим популярные датчики температуры для Arduino ds18b20, dht11, dht22, lm35, tmp36. Как правило, именно эти датчики становятся основой для инженерных проектов начального уровня для Arduino. Мы рассмотрим также основные способы измерения температуры, классификацию датчиков температуры и приведем сравнение различных датчиков в одной таблице.

Описание датчиков температуры

Температурные датчики предназначены для измерения температуры объекта или вещества с помощью свойств и характеристик измеряемой среды. Все датчики работают по-разному. По принципу измерения эти устройства можно разделить на несколько групп:

  • Термопары;
  • Термисторы;
  • Пьезоэлектрические датчики;
  • Полупроводниковые датчики;
  • Цифровые датчики;
  • Аналоговые датчики.

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

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

  • Функция преобразования, т.е. зависимость выходной величины от измеряемого значения. Для датчиков температуры этот параметр измеряется в Ом/С или мВ/К.
  • Диапазон измеряемых температур.
  • Метрологические параметры – к ним относятся различные виды погрешностей.
  • Срок службы.
  • Время отклика.
  • Надежность – рассматриваются механическая устойчивость и метрологическая стойкость.
  • Эксплуатационные параметры – габариты, масса, потребляемая мощность, стойкость к агрессивному воздействию среды, стойкость к перегрузкам и другие.
  • Линейность выходных значений.

Датчики температуры по типу

  1. Термопары. Принцип действия термопар основывается на термоэлектрическом эффекте. Представляет собой замкнутый контур из двух проводников или полупроводников. В контуре возникает электрический ток, когда на месте спаев появляется разность температур. Чтобы измерить температуру, один конец термопары помещается в среду для измерения, а второй требуется для снятия значений. На спаях возникают термоЭДС E(t2) и E(t1), которые и определяются температурами t2 и t Результирующая термоЭДС в контуре будет равна разности термоЭДС на концах спаев E(t2)- E(t1). Термопары чаще всего выполняются из платины, хромеля, алюмеля и платинородия. Наибольшее распространение в России получили пары металлов ХА(хромель-алюмель), ТКХ(хромель – копель) и ТПП (платинородий-платина). Большим недостатком таких приборов является большая погрешность измерений. Из преимуществ можно выделить возможность измерения высоких температур – до 1300С.
  2. Терморезистивные датчики. Изготавливаются из материалов, обладающих высоким коэффициентом температурного сопротивления (ТКС). Принцип работы заключается в изменении сопротивления проводника в зависимости от его температуры. Такие приборы обладают высокой точностью, чувствительностью и линейностью измеренных значений. Основными характеристиками устройства являются номинальное электрическое сопротивление при температуре 25 С и ТКС. Терморезистивные датчики различаются по температурному коэффициенту сопротивления – бывают термисторы с отрицательным (NTC) и положительным (PTC, позисторы) ТКС. Для первых с ростом температуры уменьшается сопротивление, для позисторов – увеличивается. Терморезистивные датчики чаще всего применяются в электронике и машиностроении.
  3. Пьезоэлектрический датчик. Такое устройство работает на пьезоэффекте. Под воздействием электрического тока происходит изменение линейных размеров -прямой пьезоэффект. Когда подается разнофазный ток с определенной частотой, происходит колебание пьезорезонатора. Частота определяется температурой.  Зная полученную зависимость, можно определить необходимые данные о частоте и температуре. Диапазон измерения температуры широк, устройство обладает высокой точностью. Датчики чаще всего используются в научных опытах, которые требуют высокой надежности результатов.
  4. Полупроводниковый датчик. Измеряют в диапазоне от -55С до 150С. Принцип работы основан на зависимости изменения напряжения на p-n-переходе от температуры. Так как эта зависимость практически линейна, есть возможность создать датчик без сложной схемы. Но для таких приборов схема содержит одиночный p-n-переход, поэтому датчик отличается большим разбросом параметров и невысокой точностью. Исправить эти недостатки получилось в аналоговых полупроводниковых датчиках.
  5. Аналоговый датчик. Приборы стоят дешево и обладают высокой точностью измерения, что позволяет их применять в микроэлектронике. В схеме содержатся 2 чувствительных элемента (транзистора), обладающих различными характеристиками. Выходной сигнал – это разность между падениями напряжений на транзисторах. При помощи калибровки датчика внешними цепями можно увеличить точность измерения, которая находится в диапазоне от +-1С до +-3С. Датчики обладают тремя выходами, один из них используется для калибровки.
  6. Цифровой датчик. В отличие от аналогового датчика цифровой содержит дополнительные элементы – встроенный АЦП и формирователь сигнала. Подключаются по интерфейсам SPI, I2C, 1-Wire, что позволяет подключать сразу несколько датчиков к одной шине. Подобные устройства стоят немного дороже аналоговых, но при этом они значительно упрощают схемотехнику устройства.
  7. Существуют и другие датчики температуры. Например, для автоматических систем могут применяться сигнализаторы, также существуют пирометры, измеряющие энергию тела, которую оно излучает в окружающую среду. В медицине нередко используются акустические датчики – их принцип работы заключается в разности скорости звука при различных температурах. Эти датчики удобно применять в закрытых полостях и в недоступных средах. Похожие датчики – шумовые, они работают на зависимости шумовой разности потенциалов на резисторе от температуры.

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

Датчики температуры для работы с Ардуино

При работе с микроконтроллером Ардуино наиболее часто используются следующие датчики температуры: DS18B20, DHT11, DHT22, LM35, TMP36.

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

Arduino DS18B20DS18B20 – цифровой 12-разрядный температурный датчик. Устройство доступно в 3 вариантах корпусов – 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92, чаще всего используется именно последний. Он же изготавливается во влагозащитном корпусе с тремя выходами. Датчик прост и удобен в использовании, к плате Ардуино можно подключать сразу несколько таких приборов. А так как каждое устройство обладает своим уникальным серийным номером, они не перепутаются в результате измерения. Важной особенностью датчика является возможность сохранять данные при выключении прибора. Также DS18B20 может работать в режиме паразитного питания, то есть без внешнего питания через подтягивающий резистор. Подробная статья о ds18b20.

Датчики температуры DHT

DHT11 и DHT22 – две версии датчика DHT, обладающие одинаковой распиновкой. Разливаются по своим характеристикам. Для DHT11 характерно определение температуры в диапазоне от 0С до 50С, определение влажности в диапазоне 20-80% и частота измерений 1 раз в секунду. Датчик DHT22 обладает лучшими характеристиками, он определяет влажность 0-100%, температурный диапазон увеличен – от -40С до 125С, частота опроса 1 раз за 2 секунды. Соответственно, стоимость второго датчика дороже. Оба устройства состоят из 2 основных частей – это термистор и датчик влажности. Приборы имеют 4 выхода – питание, вывод сигнала, земля и один из каналов не используется. Датчик DHT11 обычно используется в учебных целях, так как он показывает невысокую точность измерений, но при этом он очень прост в использовании. Другие технические характеристики устройства: напряжение питания от 3В до 5В, наибольший ток 2,5мА. Для подключения к ардуино между выводами питания и выводами данных нужно установить резистор. Можно купить готовый модуль DHT11 или 22 с установленными резисторами.

Датчик температуры LM35

Arduino lm35LM35 – интегральный температурный датчик. Обладает большим диапазоном температур (от -55С до 150С), высокой точностью (+-0,25С) и калиброванным выходом. Выводов всего 3 – земля, питание и выходной мигнал. Датчик стоит дешево, его удобно подключать к цепи, так как он откалиброван уже на этапе изготовления, обладает низким сопротивлением и линейной зависимостью выходного напряжения. Важным преимуществом датчика является его калибровка по шкале Цельсия. Особенности датчика: низкая стоимость, гарантированная точность 0,5С, широкий диапазон напряжений (от 4 до 30В) ток менее 60мА, малый уровень собственного разогрева (до 0,1С), выходное сопротивление 0,1 Ом при токе 1мА. Из недостатков можно выделить ухудшение параметров при удалении на значительное расстояние. В этом случае источниками помех могут стать радиопередатчики, реле, переключатели и другие устройства. Также существует проблема, когда температура измеряемой поверхности и температура окружающей среды сильно различаются. В этом случае датчик показывает среднее значение между двумя температурами. Чтобы избавиться от этой проблемы, можно покрыть поверхность, к которой подключается термодатчик, компаундом.

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

Примеры применения:

  • Использование в схемах с развязкой по емкостной нагрузке.
  • В схемах с RC цепочкой.
  • Использование в качестве удаленного датчика температуры.
  • Термометр со шкалой по Цельсию.
  • Термометр со шкалой по Фаренгейту.
  • Измеритель температуры с преобразованием напряжение-частота.
  • Создание термостата.

TMP36 – аналоговый термодатчик

tmp36 arduinoДатчик температуры Использует технологии твердотельной электроники для определения температуры. Устройства обладают высокой точностью, малым износом, не требуют дополнительной калибровки, просты в использовании и стоят недорого. Измеряет температуру в диапазоне от -40С до 150С. Параметры схожи с датчиком LM35, но TMP36 имеет больший диапазон чувствительности и не выдает отрицательное значение напряжения, если температура ниже нуля. Напряжение питания от 2,7В до 5,5В. Ток – 0.05мА. При использовании нескольких датчиков может возникнуть проблема, при которой полученные данные будут противоречивы. Причиной этого являются помехи от других термодатчиков. Чтобы исправить эту неполадку нужно увеличить задержку между записью измерений. Низкое выходное сопротивление и линейность результатов позволяют подключать датчик напрямую к схеме контроля температуры. TMP36 также, как и LM34 обладает малым нагревом прибора в нормальных условиях.

Сравнение характеристик датчиков температуры Ардуино

НазваниеТемпературный диапазонТочностьПогрешностьВариант исполненияБиблиотека
DS18B20-55С…125С+-0.0625С+-2%Существует в 3 видах –  8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92, последний изготавливается во влагозащитном корпусе.Onewire.h
DHT110С…50С+-2С+-2% температура, +-5% влажностьИзготавливается в виде готового прямоугольного модуля с 4 ножками, третья не используется. Также встречаются модули с тремя ножками и сразу установленным резистором на 10 кОм.DHT.h
DHT22-40С…125С+-0,5С+-0,5% температура, от +-2 до +-5% влажностьDHT.h
LM35-55С…150С+-0.5С (при 25С)+-2%Существует несколько видов корпуса: TO-46 (для датчиков LM35H, LM35AH,

LM35CH, LM35CAH,

LM35DH)

TO-92 (для датчиков LM35CZ, LM35CAZ,

LM35DZ)

SO-8 для датчика LM35DM

TO-220 для датчика LM35DT.

TMP36-40С…150С+-1С+-2%Изготавливается в трехвыводном корпусе TO-92, восьмивыводном SOIC и пятивыводном SOT-23.

 

arduinomaster.ru

Датчик температуры DS18B20. Влияние саморазогрева на точность измерений. — StopTest.ru

// Arduino UNO, Atmega 328P,  robotdyn.com

/******************************************/

#include <OneWire.h>     // подключаем библиотеку для управления устройствами по Протоколу 1-Wire, в нашем случае термодатчиками DS18B20

OneWire DS18B20(4);      // с помощью конст-ра библиотеки опр-ем условное название объекта OneWire и номер выв. к которому он подключен

                         // в данном случае объект OneWire называется так же как называется и сам датчик

#define POWER_MODE 0     // Определяем режим питания датчиков, 0 — внешнее, 1 – паразитное (#define задает имя и значение константе)

#define POWER_DS18B20 6  // Определяем вывод 6 платы для подачи питания на датчик и светодиод

 

#define TIME_OUT 750            // задаем время (мс) между командами 44h («измерить температуру») и BEh («читать температуру»)

byte conf[3]={0x00,0x00,0x7F};  // третий элемент массива это байт для записи в регистр конфигурации для установки разрешения

                                // разрешение преобразования температуры может устанавливаться:

                                // 1F (9 бит;0.5°C;93.75мс), 3F (10 бит;0.25°C;187.5мс)

                                // 5F (11 бит;0.125°C;375мс),7F (12 бит;0,0625°C;750мс)

uint16_t i;

uint32_t ms1, ms2;              // переменные для хранения промежуточных значений пройденного времени

boolean go, count;              // логическая переменная

float temperature;              // переменная типа float для хранения значения измеренной температуры

byte data[9];                   // массив для размещения девяти байт после чтения памяти датчика 18B20

                      

void setup() {  

  Serial.begin(250000);                //инициализируем работу с монитором порта в Arduino IDE (инструменты/монитор порта)

  pinMode (POWER_DS18B20, OUTPUT);    

  digitalWrite(POWER_DS18B20, HIGH);   // подаем питание на датчик через вывод POWER_DS18B20 для изменения регистра конфигурации

  DS18B20.reset();                     // инициализация датчика для работы с оперативной памятью

  DS18B20.write(0xCC, POWER_MODE);     // 0xCC — команда пропуск ROM

  DS18B20.write(0x4E, POWER_MODE);     // 0x4E — команда на запись байта конфигурации в оперативную память

  DS18B20.write_bytes(conf, 3);        // передаем данные из массива conf в оперативную память датчика

  DS18B20.reset();                     // инициализация датчика для работы с энергонезависимой памятью

  DS18B20.write(0xCC, POWER_MODE);     // 0xCC — команда пропуск ROM

  DS18B20.write(0x48, POWER_MODE);     // 0x48 — команда записи байта конфигурации из операт. памяти в энергонез.память

  digitalWrite(POWER_DS18B20, LOW);    // отключаем питание датчика        

}

void loop() {  

  if (Serial.read() == ‘r’) {          // символ «r» является командой на вкл. датчика и начало процесса измер-я темп-ры

    go = true;                         // устанавливаем флаг начала процесса измерения температуры

    digitalWrite(POWER_DS18B20, HIGH); // подаем питание на датчик

    ms2 = millis();                    // фиксируем начало периода вывода значений температуры в монитор порта

  }

  if (go == true) {    

    if (count==0) {

      DS18B20.reset();                    // инициализация датчика для измерения температуры

      DS18B20.write(0xCC, POWER_MODE);    // 0xCC — команда пропуск ROM

      DS18B20.write(0x44, POWER_MODE);    // 0х44 — команда на выполнение преобразования температуры

      count=!count;                       // установим флаг, что выполняется процесс преобразования температуры

      ms1 = millis();                     // фиксируем начало периода обращения к датчику

    }

    if ((millis() — ms1) > TIME_OUT) {    // условие, выполняющееся если прошел период времени, превышающий TIME_OUT (мс)  

      DS18B20.reset();                    // инициализация датчика для чтения памяти

      DS18B20.write(0xCC, POWER_MODE);    // команда пропуск ROM,  

      DS18B20.write(0xBE, POWER_MODE);    // 0хBE — команда чтения памяти

      DS18B20.read_bytes(data, 9);        // читаем девять байт из памяти датчика побайтно и сохраняем в массив data

      int16_t raw = (data[1]<<8)|data[0]; // обработка байтов регистра измер-ой темп-ры (операция сдвига, операция ИЛИ)

      temperature = (float)raw / 16;      // преобразуем полученные данные в значение температуры в градусах Цельсия

      count=!count;                       // сбросим флаг процесса преобразования температуры

    }

    if (( millis() — ms2) > 1000) {       // условие выполняется каждую секунду и выводит знач. темп. в монитор порта,

      ms2 = millis();

      Serial.print(temperature,4);        // выводим температуру, после запятой оставляем 4 знака

      Serial.print(» «);

      Serial.println(i++);                // выводим счетчик секунд

    }

  }

}

stoptest.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *