tz

Шаг первый.

Постановка задачи, составление ТЗ, планов и разработка договора.

 

Шаг второй.

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

 

 

Шаг третий.

Разработка конструкции, проектирование печатных плат

 

Шаг четвертый.

Изготовление макетного образца, отладка и создание программного обеспечения

Шаг пятый.

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

 

Все, кто хотят измерять температуру с точностью 0.5 градусов по Цельсию Андрею Нильсовичу, эта микрорсхема как из пушки по воробьям, те могут даже не читать данную статью.

Ранее была публикация с громким названием "Идеальный" измеритель температуры. Там была несколько иная схема, теперь же честный PDF. Поделюсь нюансами и практическими рекомендациями. Описание данной микросхемы есть, я его излазил вдоль и поперек, и даже схема EVOLUTION BOARD нашлась… Но ничего практического там нет. Фирмачи хотят сказать: «Вот тебе всё, а конкретику ищи сам».

Нашел. Испытал. И делюсь, дабы не тратили люди время на ерунду.

AD7792, схема

Постановка задачи.

  • Мерить температуру с точностью 0.05 градуса Цельсия.
  • Диапазон измерения 10-130 гр. C.
  • Стабильность измерений в условиях помех.
  • Трехпроводная схема для датчика от OWEN.

Сразу поясню, что как таковую температуру я не мерил, а мерил я сопротивления, заранее подобранные, так чтобы они находились все в диапазоне заданных температур, учитывая формулу пересчета:

tC(Pt100) = (Rx(Pt100)/100-1)/0.00385; (1.1)

И если кто-то скажет, что сам платиновый датчик имеет определенный класс точности и эта точность хуже, чем заявленная, то будет прав. Но есть драйв сделать измеритель, а датчик уж как-нибудь… Тем более, что калибровку по двум точкам на основе какого-нибудь сверхточного стороннего прибора, никто не отменял. Не буду описывать программные примеры на каком-либо языке, все пояснения настройки будут в контексте PDF и в рамках содержания регистров AD7792.

Нюансы в основном лежат в области программирования данной микросхемы, а не как не в области схематики. Она такая, как в PDF.

Хотя…

Нюанс №1.

А какого номинала должно быть RREF?

Если датчик Pt100, а заявленный диапазон не выше 130 гр., то RREF = 155-220 Ом. Это расчетные величины. 130 градусам соответствует по этой формуле Rx=150.05 Ом. Почему так?

Вот формула пересчета ADC в Rx (Rx мы вставляем в разъем ТС_Х, см. схему):

Rx = ADC*Rref/32768/Gain, (1.2)

где

  • ADC – текущие показания DATA REGISTER;
  • Rref = 220 ом. (в моем случае)
  • Gain – коэффициент усиления, выбранный в CONFIGURATION REGISTER;

В чем нюанс?

Rref должен как можно ближе соответствовать максимальному сопротивлению, определяющему верхний диапазон температур с учетом пересчета. Эту формулу надо понимать так – вы сравниваете два сопротивления Rx и Rref. Rref определяет внешнее опорное напряжение ADC.

И здесь пропорция:

Rref соответствует коду 65535, а Rx соответствует коду, который меньше этого.

Если выбрать, например Rx=1.5 кОм, то на максимальный Rx=150.05 Ом останется меньше значений ADC. Можно конечно увеличить коэффициент усиления и тем самым увеличить значения ADC, но как показал практический опыт, повышение коэффициента усиления приводит к нелинейности и падению точности и это…

Нюанс №2.

В моем случае коэффициент усиления GAIN=2, а значение источника тока (IOUT1 & IOUT2) = 1mA. В этом случае максимальное сопротивление соответствует коду ADC=44698. Есть еще запас, но мы ограничены теми номиналами сопротивлений, которые есть в наличии для точных сопротивлений.

Нюанс №3.

Это нюанс, касаемый выбора Rref. В PDF сказано:

Reference Voltage Range = 0.1V (Vmin).

Т.е. если вы выбираете значение источника тока и Rref, то их произведение должно быть больше Vmin. Это схемотехническое ограничение. В моем случае

Vref = Rref*( IOUT1+IOUT2) = 220*(1+1)=440 mV; (1.3)

Нюанс №4.

Это касается организации питания аналоговой части микросхемы AVdd. Не надо жмотиться на танталовый электролит. Диод D1 в данном случае работает как фильтр. Не надо ставить индуктивность, она дребезжит из-за того, что потребление микросхемы динамическое и коррелирует с периодом преобразования, которое выбрано пользователем. И здесь…

Нюанс № 5.

Если вы не ограничены быстродействием, то выбирайте максимальный период преобразования. Это относится к значениям бит в MODE REGISTER, FS0,FS1,FS2,FS3 они все устанавливаются в 1.

Нюанс № 6. Легенда об источнике тока.

В PDF в рубрике EXCITATION CURRENT SOURCES приводятся характеристики источников тока. Предположим они не точны, и это так, и более того они не равны друг другу. Некоторые горячие головы предлагают использовать один источник тока, усложняют схему, задействуют еще один канал ADC и усложняют процедуру.

Один источник тока

Неточность источников тока никак не влияет на измерение в целом. Погрешность источника тока является систематической погрешностью и компенсируется Vref, которое эту погрешность учитывает в преобразовании. В формуле преобразования (1.1) нет значения источника тока. Другое дело неточность источников между собой. На что это влияет? А влияет это на проблему трехпроводности, которая априори предполагает одинаковость RL1, RL2, RL3, (см. PDF figure 21.) Что будет если они не одинаковы или токи IOUT1 IOUT2 не равны?

Нюанс № 7. Легенда о трехпроводности.

В моем практическом случае трехпроводность нужна. Датчик Pt100 соединен со схемой кабелем около 3-х метров. Если соединять двумя проводами, то учитывая сопротивление погонного метра кабеля сечением 1.5 кв. мм, к Rx добавилось бы порядка 0.0756 Ом, учитывая две линии по три метра. Это составляет в пересчете на градусы 0.2 гр. (см. формулу 1.1). Ну и какая тут точность, которую мы заявили? Никакая. Не будем же мы вносить длину кабеля в расчет. А еще нестабильность температурная…

Практически я сымитировал эту ситуацию и сделал RL1, RL2, RL3, равными 3 ома. При этом измеритель никак не изменил своего значения.

Вернемся к неодинаковости источников тока. Предположим что токи IOUT1 и IOUT2 отличаются между собой на 1%, есть такая строка в PDF:

Current Matching ±0.5 % typ Matching between IEXC1 and IEXC2;

Их однопроцентную неодинаковость можно представить неодинаковостью RL1 и RL2 в двухпроводной схеме:

RL1=0.0756/2= 0.0378, а

RL2=0.0378*101/100 = 0.038178. (+1%)

Суммарное сопротивление двух проводов RL1+RL2=0.0378+0.038178=0.075978;

Сравним это число с расчетным, при учете одинаковости RL1 и RL2 - 0.0756;

Чувствуете разницу?

Она в Омах составляет 0.075978-0.0756 = 0.000378, а в градусах Цельсия 0.000982!!!

 

Нюанс № 8. Легенда об автокалибровке.

Калибровку делать надо, если мы за точность. И делать надо именно внутреннюю калибровку. Ходят формулы и встают вопросы, а чего делать с Offset Register и Full-Scale Register после калибровки, ведь именно их значения и определяются этой процедурой. Прибавлять их к ADC, али вычитать…. Куда их лепить-то?

Отвечаю. Никуда. Все происходит автоматически.

Теперь по порядку.

  • Делаем программный сброс: пишем в COMMUNICATIONS REGISTER значение 0xFF четыре раза;
  • Затем задержечка 500ms. Сбросились все значения по всем 3-м каналам. Далее собственно автокалибровка.
  • Определяем IO REGISTER, в моем случае 0x03, ток 1 mA.
  • CONFIGURATION REGISTER = 0x1100; (unipolar, gain = 2, ExtRef, 0ch)
  • MODE REGISTER = 0x800F – эта команда запускает процесс преобразования с максимальной длительностью- Internal Zero-Scale Calibration. Можно поставить задержку на 500ms, а можно ждать завершения по готовности RDY. Это определяет значение регистра Offset Register. Было ошибкой не дожидаясь конца преобразования сразу переходить к следующей команде.
  • MODE REGISTER = 0xA00F. Это тоже процесс на 500 ms. Internal Full-Scale Calibration. Определяется значение Full-Scale Register.

Всё, калибровочные значения определились, они вам не нужны, они учитываются самостоятельно в текущем ADC. Но надо понимать, что эта автокалибровка проведена только для канала 0, только для коэффициента усиления GAIN=2, только для IOUT1=1mA. Если вы в ходе измерений решили изменить эти параметры, то автокалибровку надо повторить после перестройки любых значений CONFIGURATION REGISTER и MODE REGISTER. Некоторые аккуратисты делают автокалибровку периодически, даже если ничего не поменялось. И это правильно, ибо могла поменяться внешняя среда и в комнате потеплело…

После автокалибровки запускаем режим Continuous Conversion Mode.

MODE REGISTER = 0x000F и каждые 500 ms считываем значение из DATA REGISTER.

Напомню, что 500 ms связаны со значением бит FS, преобразование длится 480ms.

В инете встречается флрмула учета регистров калибровки:

ADC = (-OFFSET +ADC_raw ) * FULL_SCALE (1.4)

Можно только предположить, что OFFSET это Offset Register, а FULL_SCALE это Full-Scale Register.

И понятно откуда эта формула, из PDF:

«The offset calibration coefficient is subtracted from the result prior to multiplication by the full-scale coefficient.»

Но заметьте, это сказано словами, а не формулой. И применение «в лоб» ничего не дает. Я сделал измерения.

Без автокалибровки:

  • ADC = 56314;
  • Offset Register = 32768;
  • Full-Scale Register = 21649;

C автокалибровкой:

  • ADC(cal) = 56261;
  • Offset Register(cal) = 32768;
  • Full-Scale Register(cal) = 21629;

Как видно ADC отличаются и значения Full-Scale Register тоже отличаются. Но никакими алгебраическими действиями и комбинациями получить ADC (cal) из значений без калибровки у меня не получается. Из этого можно сделать вывод, что учет калибровочных значений происходит внутри самой микросхемы. Как это происходит -  одним фирмачам известно.

Результаты.

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

Измерения сопротивлений AD7792

Как видно показания разнятся на более чем в 0.1 гр. Цельсия между FLUKE и AD7792. Но у меня не было более точного прибора. Тем не менее стабильность показаний AD7792 была очень хороша. Измерялось сопротивление со значением 144.86 Ом в разные моменты на протяжении нескольких суток. Прибор включался и выключался, в комнате теплело и холодало, но цифра 144.86 стояла мертво:

Стабильность AD7792

 

  • Среднее значение 144.859, измерений 280 с интервалом в 2 секунды.
  • Максимальное значение Rmax = 144.863,
  • Минимальное значение Rmin = 144.853,
  • Разница в Омах Rdelta = 0.01,
  • Разница в градусах Цельсия tCdelta = 0.025974.

 

Выводы.

  • Заявленная точность в 0.05 гр. Цельсия подтверждается на основе значения tCdelta, хотя абсолютное соответствие можно достичь только имея измеритель сопротивления большего класса точности, чем 0.1 Ома.
  • Стабильность превосходная.
  • Трехпроводная схема работает хорошо и компенсирует длину проводов даже несмотря на неточность источников тока между собой.

Некоторые полезные ссылки:

http://32bit.me/?p=1232

https://electronix.ru/forum/index.php?showtopic=101150

Полезные замечания от DmitriyVDN

Дополнения и замечания после обсуждения темы на РадиоЛоцмен.

Формула (1.1), которая описывает зависимость температуры от сопротивления датчика Pt100 очень приблизительная. Вот более точная формула:

tC(Pt100)=(-3,9083e-3+sqrt((3,9083e-3)^2+4*5,775e-7*(1-Rx(Pt100)/100)))/(-2*5,775e-7)         (1.4)

Эта формула описывает табличные значения, отраженные в ГОСТ 6651-94 , таблица А.2,  а обоснование здесь.

В таблице MS Excell можно вычислять зависимости температуры от сопротивления и наоборот.

Обновлено (13.05.2017 11:22)

 
Новости электроники от РадиоЛоцмана
Вопросы искусственного интеллекта, философия и практика
. @Mail.ru