Ds18b20 точность

Ноя 16, 2019 Стройка

Ds18b20 точность

При использовании популярного цифрового датчика температуры DS18B20 в различных устройствах я обнаружил, что при определенных условиях использования датчика по прошествии некоторого времени (около 1 минуты ) после включения устройства показания температуры немного повышаются. Так почему же это происходит? Очевидно, что если электронный компонент потребляет определенный ток, значит должна выделятся некоторая мощность, которая будет приводить к нагреву. Я задался вопросом насколько может влиять собственный нагрев датчика на точность его показаний и какова зависимость температуры самопрогрева от режима работы датчика. Дело в том, что датчик потребляет ощутимый ток (который может приводить к видимому нагреву) только в момент выполнения некоторых операций. Это операции преобразования температуры и сохранения данных в энергонезависимую память. Нас в большей степени интересует операция преобразования температуры, так как это основная операция, которую периодически выполняет датчик. Чем больше время преобразования, тем больше успеет нагреться датчик. Время преобразования зависит от установленной разрешающей способности датчика и приведено ниже в таблице.

Разрешение преобразования устанавливается пользователем при помощи установки битов конфигурации в регистре конфигурации. Ниже я покажу как это сделать программно в среде Arduino IDE. По умолчанию в новых датчиках установлено максимальное разрешение в 12 бит, что соответствует «измерению» температуры с шагом 0,0625 oC. Другими словами, преобразование аналогового сигнала, несущего информацию о температуре, в цифровой вид в микросхеме DS18B20 происходит с дискретностью 0,0625 oC. Подробно прочитать о принципах работы датчика температуры DS18B20 можно , поэтому я не буду подробно останавливаться на описании устройства датчика — цель данной статьи разобраться с самопрогревом датчика DS18B20.

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

Для проведения экспериментов с датчиком DS18B20 я использовал платформу Arduino, а именно, плату Arduino UNO. В первую очередь меня интересовало как прогревается датчик при измерении температуры окружающего воздуха, т.е. когда датчик «висит» в воздухе. Для этого датчик был установлен на макетную плату на некотором удалении от других элементов и самой платы Arduino UNO. На макетной плате установлен светодиод, который сигнализирует о подаче напряжения питания на датчик. Вся эта конструкция размещалась в коробке из гофрокартона (размер коробки примерно 50х50х50 см). Это было сделано для того, чтобы минимизировать изменение температуры датчика за счет движения воздуха в помещении. Питание на датчик подается с вывода 6 платы по определенной команде из монитора порта Arduino IDE. После этого начинается работа датчика и отслеживается изменение температуры.

Датчик DS18B20 на макетной плате и подключенный модуль Arduino UNO

Скетч для управления датчиком DS18B20

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

Самопрогрев датчика DS18B20 при измерении температуры воздуха

Ниже представлены графики изменения температуры датчика DS18B20 в результате его самопрогрева в течение шести минут. Как показали эксперименты, в течение шести минут температура датчика в результате его самопрогрева принимала установившееся значение. Для каждого разрешения представлена своя группа графиков. Начальная (стартовая) температура измерения для всех графиков приведена к 23,25 oC для более удобного восприятия.

Датчик не может предоставить нам новое значение температуры пока не завершится температурное преобразование. Поэтому период опроса датчика не должен быть меньше времени преобразования температуры. Как видно из графиков если задавать значение периода опроса датчика близкое ко времени преобразования то наблюдается максимальный самопрогрев датчика, который составляет около 0,5 oC не зависимо от разрешения преобразования температуры. Если температура датчика не изменяется или колеблется в пределах дискретности преобразования, то можно считать, что явление самомпргрева отсутствует. Отсутствие эффекта самопрогрева наблюдается если период опроса примерно на порядок превышает время преобразования температуры. Если разрешение преобразования температуры датчика DS18B20 задано в 9 бит, то достаточно период обращения к датчику установить в 4 раза больше времени преобразования и самопрогрев датчика уже не наблюдается. Но тут надо понимать, что датчик при этом все равно прогревается, но на величину, которая меньше дискретности преобразования и поэтому для нас не заметна.

Самопрогрев датчика DS18B20 при измерении температуры металлической поверхности

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

Далее представлены группы графиков при разрешении преобразования 10, 11 и 12 бит. При разрешении преобразования 9 бит (0,5oC) уверенный самопрогрев датчика зафиксировать не удалось, так как он меньше дискретности преобразования и не превышает 0,25 oC (определено при разрешении преобразования 10, 11 и 12 бит).

Как видно из графиков кристалл датчика при установке датчика на металлической поверхности может уверенно прогреваться на 0,125 oC, видимо сказывается тепловое сопротивление кристалл-корпус-радиатор.

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

Для разрешения в 12 бит явление самопрогрева не наблюдается при увеличении периода опроса датчика в 4 раза относительно времени преобразования.

Самопрогрев датчика DS18B20, размещенного в термоизоляционном материале

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

Посмотрим на графиках ниже насколько смог разогреть себя датчик.

Теоретически, если бы датчик был помещен в идеальный теплоизолятор с «нулевой» теплоемкостью, то он мог бы разогреться до очень высокой температуры. Но, видимо, мой пенопласт не настолько хорош для этих целей, и выполнял в моем случае еще и функцию теплоотвода, поэтому датчик разогрелся только на 0,8 oC при минимально возможном периоде опроса. После установки периода опроса в 7 секунд устойчивого разогрева датчика не наблюдалось. Это еще раз доказывает, что эффект самопрогрева датчика DS18B20 не наблюдается при периоде опроса, превышающем на порядок время преобразования температуры.

Выводы

Потребляемый датчиком ток во время операции преобразования температуры приводит к выделению определенной мощности на кристалле датчика, что вызывает его нагрев. Если период обращения к датчику сопоставим со временем преобразования, то датчик может прогреваться на 0,5 oC на открытом воздухе. Чтобы этого избежать, необходимо период обращения к датчику задавать на порядок больше времени преобразования температуры.

За счет теплового сопротивления кристалл-корпус-радиатор датчик может прогреваться даже будучи закрепленным на алюминиевом радиаторе. При этом самопрогрев может составлять 0,125 oC. Считаю, что для большинства приложений это не существенно, тем не менее такой эффект наблюдается.

Сообщества ›
Arduino для автомобиля ›
Блог ›
Сравнение датчика на основе терморезистора с DS18B20

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

Для этого был сделан, страшно сказать, тестовый стенд следующего вида.

В состав стенда был включен стакан холодной воды со льдом.

Так же на базе простейшего примера из состава библиотеки OneWire был составлен скетч в цикле замеряющий температуру обоими датчиками с интервалом около 1.2-1.3 секунды и пуляющий данные в порт. Почему такой странный интервал? Я не знаю, глубоко в дебри примера не лез.

Замеряем температуру.

По обоим датчикам получилось около +5.+6. Подробности чуть ниже.

В состав стенда входил объект имени архитектора Веры Мухиной.

Наполнял из термопота. На термопоте было написано +85… Оба датчика показывали около +50.+58.

Итак, был получен массив данных, который в графическом виде выглядит так.

На графике хорошо видно несколько этапов тестирования.
1. Измерение комнатной температуры обоими датчиками в положении «на столе».
2. Измерение температуры воды со льдом.
3. Измерение температуры воды из термопота.
4. Остывание обоих датчиков в положении «на столе».

Два аномальных всплеска в «кипятке» объясню ниже.

Итак, рассмотрим первый этап подробнее.

Учитывая, что погрешность DS18B20 составляет +/-0.5С, а терморезимтора — 1% можно считать, что данные от датчиков совпадают по нижней границе погрешности 1820.
И хотя на погружение в холодную жидкость оба датчика начали реагировать практически моментально, некоторая задержка в показаниях терморезистора от DS все же присутсвует.
Максимальная дельта по температуре — около 5 градусов. Отставание по времени — около 10 секунд.

Итоговая измеренная температура: 5,85 через терморезистор и 5,75 по DS. Итого, разница показаний укладывается в погрешность цифрового датчика.

Этап второй, «нагревание».

Как и в первом случае датчики на изменение температуры реагируют одновременно, но переходный процесс у терморезистора несколько более затянут.
Максимальная дельта по температуре — уже около 10 градусов, отставание по времени — примерно те же 10 секунд.
Стабилизированные результаты отличались уже значительно больше. Терморезистор — 55,21, DS — 51,19. Т.е. практически 4 градуса. Что заметно больше допустимой погрешности. Т.е. имеется ошибка в методике проведения эксперимента.
Ошибка была локализована очень быстро. Если поглядеть на фото скрученных датчиков, то можно заметить, что DS выпирает чуть-чуть за габарит датчика на основе терморезистора — порядка 3-4 мм. А конструкция их этих датчиков упирается в дно стакана именно корпусом DS. После ручного вывешивания датчиков по центру стакана получается характерный всплеск с ростом температуры на обоих датчиках. Устоявшиеся значения — 59,68 у терморезистора и 58,69 у DS. Разница хоть и превышает погрешность цифрового датчика, но крайне незначительна — едва-едва больше 1 градуса.

Путешествие датчиков в объеме стакана в виде графика.

И чуть более детально этап вывешивания датчиков.

Опять видно, что датчики реагируют синхронно, но аналоговый с меньшей скоростью. Максимальная дельта по температуре — те самые 4 градуса, по времени — менее 3 секунд.

Ну и остывание датчиков на воздухе.

Графики идут синхронно, параллельно, разница — меньше погрешности.

Итоговые выводы.
1. Изменение температуры окружающей среды датчики фиксируют синхронно.
2. За счет большей массы корпуса терморезистор реагирует с меньшей скоростью.
3. За счет массы двигателя, объема и теплоемкости ОЖ практическая разница в показаниях датчиков будет отсутствовать.
4. Устоявшаяся температура по обоим датчикам в диапазоне температур 18-25 градусов не превышает инструментальной погрешности.
5. При высоких температурах — разница показаний превышает погрешность и составляет 1.01 градуса.
6. Полагаю, что п.5 связан с выбором номинала резистора в делителе напряжения. Т.к. он соответствовал сопротивлению терморезистора при температуре +25 градусов. Оптимально, если номинал резистора будет соответствовать рабочим температурам датчика, т.е. 90-110 градусов.

Требования к монтажу термометров сопротивления

Прежде, чем рассматривать требования к монтажу термометров сопротивления следует отметить, что на погрешность измерения температуры могут влиять следующие монтажные и электрические факторы:

  • место установки датчика выбрано неправильно;
  • неправильно выбрана длина монтажной части термометра сопротивления;
  • плохое качество уплотнения датчика (утечка среды из отбора);
  • отсутствие теплоизоляции на оборудовании или трубопроводе;
  • плохой контакт в соединениях оборудования;
  • попадание влаги и конденсата в клеммную головку термометра сопротивления;
  • замыкание внутренних проводников термометра сопротивления;
  • неправильно выбрана схема соединения датчика и прибора (без подгонки сопротивления линии, без компенсационного провода);
  • градуировка термометра сопротивления не соответствует градуировке регистрирующего прибора.

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

Требования к монтажу термометров сопротивления

Требования к монтажу термометров сопротивления ТСП-Н и комплектов термопреобразователей сопротивления КТСП-Н описаны в руководстве по эксплуатации ТНИВ.405511.002 РЭ основанном на межгосударственном стандарте СНГ — ГОСТ 8.586.5 — 2005 и на международных стандартах EN 1434 – 2007.

Правила установки термопреобразователей на трубопроводе:

  1. При установке термометра сопротивления ТСП-Н в защитную гильзу усилия не допускаются.
  2. При монтаже КТСП-Н в прямом потоке трубопровода устанавливается прибор с маркировкой «Г» (горячий), в обратном потоке – термометр сопротивления с маркировкой «Х» (холодный).
  3. ТСП-Н и КТСП-Н монтируются таким образом, чтобы чувствительный элемент прибора, расположенный на конце монтажной части, располагался на оси трубопровода.
  4. При монтаже термометра сопротивления под углом 45° концы монтажной части прибора должны быть направлены навстречу потоку теплоносителя.
  5. Во избежание помех при измерении, необходимо удалить присоединительные провода приборов от электрических кабелей с напряжением 220 В и более на расстояние не менее 0,3 м.
  6. Производить ориентацию корпуса (головки) необходимо в нужном направлении и закрепите штуцер.
  7. При горизонтальной ориентации термопреобразователя сопротивления с клеммной головкой кабельный ввод должен быть обращен вниз.
  8. Предусмотреть сальниковое уплотнение под применяемый кабель.
  9. Подсоединение комплекта термопреобразователей сопротивления производится к измерительному прибору, затем закрепляется кабель в сальниковом вводе.
  10. Установленный термометр должен быть опломбирован.

Варианты установки ТСП-Н и КТСП-Н на трубопроводы

Варианты монтажа ТСП-Н и КТСП-Н на трубопроводы:

Тип установки А: Для трубопроводов диаметром до 25 мм, следует применять датчики температуры специальной конструкции КТСП-Н исполнение 6 (тип DS-кабель) (ТСП-Н исполнение 6) с короткой погружаемой частью и устанавливаемые в соответствующие фитинги – расширители, которые включаются в комплекты поставки теплосчётчиков и счётчиков-расходомеров.

Тип установки В: В трубопроводах с диаметром условного прохода не более DN 50 по ГОСТ Р ЕН 1434-2 допускается также и установка датчиков температуры в изгибе (в колене). Датчики температуры на измерительных участках трубопроводов допускается устанавливать как до, так и после преобразователей расхода.

Тип установки С: Если перпендикулярная (радиальная установка) датчиков температуры невозможна, то допускается устанавливать их наклонно, под тупым углом (от 120 до 150 °) к направлению потока. Причем углы наклона продольных осей датчиков температуры, входящих в комплект, к направлению потока на подающем и обратном трубопроводах должны отличаться на величину не более чем три градуса.

Тип установки D: Для термометров сопротивления наиболее предпочтительной является перпендикулярная (радиальная) установка.

В теплосчётчиках, в соответствии с требованиями Правил учета тепловой энергии и теплоносителя на подающем трубопроводе термометры сопротивления устанавливаются перед преобразователями расхода, и расстояние между ними и датчиками расхода должно быть не менее 3 DN, а расстояние от термометров сопротивления до ближайшего местного сопротивления вверх по потоку (в том числе механических и магнитных фильтров) должно составлять не менее 5 DN. А если местным сопротивлением является группа колен в разных плоскостях, коллектор для слияния потоков, резкие расширения или сужения, либо регулирующая расход среды арматура любого типа, то расстояние от такого местного сопротивления до термометра сопротивления вверх по потоку должно быть более 10 D.

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

Основные ошибки, возникающие при монтаже термометров сопротивления:

  • Неправильно выбран отбор для измерения температуры (без теплоизоляции трубопровода, приводящей к повышенной потере теплоты).
  • Неправильно установлен сам датчик в рабочем потоке измеряемой среды (малая или большая монтажная длина датчика; датчик установлен не по оси потока и не навстречу потока).
  • Установлен датчик несоответствующей градуировки, регламентируемой монтажной схемой объекта.
  • Нарушены требования компенсации влияния изменения температуры окружающей среды (датчик подключен к регистрирующему прибору по двухпроводной схеме; не используется компенсационный провод и компенсационные коробки).
  • Неправильно выбран датчик без учета повышенной вибрации, агрессивности и влажности среды и ее высокого давления.
  • Плохой контакт на клеммной колодке датчика (плохая пайка; не зажаты гайки; в местах повышенной влажности не выполнена герметизация проводки от попадания влаги внутрь датчика).

Как улучшить точность датчика DS18B20

   В одном из наших проектов,четырех канальной системы контроля температуры в СО2 инкубаторе Galaxy 48S, стояла задача измерения и регистрации температуры с погрешностью ±0,1°C. Для этих целей хотелось бы использовать датчик температуры DS18B20 в виду его простоты подключения и взаимодействия с микроконтроллером по однопроводному интерфейсу MicroLAN, но основной недостаток его состоял в том, что погрешность заявленная производителем была ±0,5°C в диапазоне от -10°C до +85°C, что значительно превышает допустимую. Тем не менее, на сайте производителя я нашел рекомендации (Application Note 208: Curve Fitting the Error of a Bandgap-Based Digital Temperature Sensor), как уменьшить погрешность датчиков на основе температурной зависимости параметров кремниевого p-n-перехода (bandgap temperature sensing architecture), к которым относятся и термодатчики DS18B20. В основе наших заметок и взяты эти рекомендации по применению фирмы Maxim.

   Давайте вкратце рассмотрим эти рекомендации. Как заявлено можно улучшить точность в 10 раз благодаря компенсации смещения кривой погрешности датчика. Т.е. мы можем вполне достичь необходимых нам ±0,1°C используя компенсацию или калибровочные коэффициенты.

   Вот на рисунке ниже представлена кривая второго порядка изменения ошибки измерения датчика (для примера взят DS1631 он построен как и DS18B20 на том же принципе измерения температуры bandgap-based sensors) на измеряемом диапазоне температуры от -35°C до +85°C. Характеристика снималась в жидкостной ванне, ошибка измерялась относительно платинового резистивного датчика (RTD) и была записана с интервалом 5°C.

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

Error = OFFSET + α(TTS — TZERO_SLOPE)2  (1)

, где TTS температура измеренная датчиком,α— корректировочный коэффициент нашей кривой, TZERO_SLOPE значение температуры в которой кривая ошибки имеет нулевой наклон (другими словами точка минимума на нашем графике выше это примерно 15°C, и OFFSET значение ошибки в точке TZERO_SLOPE. После определения значений , OFFSET и TZERO_SLOPE выражение (1) обеспечивает наиболее точное приближенное соответствие измеренных значений ошибки и вычисленных значений. Таким образом мы можем вычислить приближенную ошибку измерения при произвольной температуре и затем компенсировать эту ошибку вычитая значение вычисленной ошибки от измеренного значения температуры. Вот что получается:

TCOMP = TTS — Error = TTS —   (2)

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

   Конечно, все это было очень интересно и познавательно, но мы решили упростить в нашем случае. Изучив поставленную нам задачу мы пришли к выводу, что нам нет необходимости измерять температуру с погрешностью ±0,1°C во всем диапазоне, который позволяет датчик от -55°C до +125°C, а лишь в очень узком диапазоне от +35°C до +42°C. Поэтому можно будет обойтись просто калибровкой датчиков в любой точке от +35°C до +42°C, относительно эталонного измерителя, потом вычислив разницу в показаниях найти ошибку и эту ошибку компенсировать при последующих измерениях уже во время работы. При этом по нашим расчетам погрешность измерения не должна превысить необходимых нам ±0,1°C на этом диапазоне измерения температуры. Конечно если бы диапазон измерения был бы более широким, применять данное решение уже не совсем корректно, потому что ошибка уже на этом диапазоне изменялась бы уже более существенно, что сказалось бы в результирующей погрешности. Но во всех случаях нужно просчитывать и анализировать ситуацию, можно например разбить весь диапазон измерения на небольшие интервалы и использовать на каждом интервале свой поправочный коэффициент ошибки. Этим вы сможете уменьшить количество и сложность вычислений в программе.

   Для того, что бы снять характеристику датчика DS18B20 мы использовали разработанный нами ИЗМЕРИТЕЛЬНЫЙ КОМПЛЕКС НА БАЗЕ КОМПЬЮТЕРА. Этот комплекс позволяет подключить до 12 датчиков DS18B20 к компьютеру, где по каждому каналу измерения ведется журнал изменения температуры, а также есть возможность записывать данные на жесткий диск компьютера. Программа прилагается бесплатно, скачать можно здесь TermoLAB.

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

   

За дополнительной информацией обращайтесь по телефону (044) 221-65-15
ВВЕРХ

admin

Поadmin

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

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