Как улучшить точность датчика 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 - [OFFSET + α(TTS - TZERO_SLOPE)2] (2)
Для достижения наилучшего результата с этой методикой, у каждого датчика температуры следует снять характеристику в необходимом диапазоне измерения, что бы наиболее точно определять ошибку вычисленную для каждого датчика.
Конечно, все это было очень интересно и познавательно, но мы решили упростить в нашем случае. Изучив поставленную нам задачу мы пришли к выводу, что нам нет необходимости измерять температуру с погрешностью ±0,1°C во всем диапазоне, который позволяет датчик от -55°C до +125°C, а лишь в очень узком диапазоне от +35°C до +42°C. Поэтому можно будет обойтись просто калибровкой датчиков в любой точке от +35°C до +42°C, относительно эталонного измерителя, потом вычислив разницу в показаниях найти ошибку и эту ошибку компенсировать при последующих измерениях уже во время работы. При этом по нашим расчетам погрешность измерения не должна превысить необходимых нам ±0,1°C на этом диапазоне измерения температуры. Конечно если бы диапазон измерения был бы более широким, применять данное решение уже не совсем корректно, потому что ошибка уже на этом диапазоне изменялась бы уже более существенно, что сказалось бы в результирующей погрешности. Но во всех случаях нужно просчитывать и анализировать ситуацию, можно например разбить весь диапазон измерения на небольшие интервалы и использовать на каждом интервале свой поправочный коэффициент ошибки. Этим вы сможете уменьшить количество и сложность вычислений в программе.
Для того, что бы снять характеристику датчика DS18B20 мы использовали разработанный нами ИЗМЕРИТЕЛЬНЫЙ КОМПЛЕКС НА БАЗЕ КОМПЬЮТЕРА. Этот комплекс позволяет подключить до 12 датчиков DS18B20 к компьютеру, где по каждому каналу измерения ведется журнал изменения температуры, а также есть возможность записывать данные на жесткий диск компьютера. Программа прилагается бесплатно, скачать можно здесь TermoLAB.