Тепло или холодно?
(Цифровые термометры Dallas Semiconductor)
Из всех видов измерений в повседневной жизни мы чаще всего сталкиваемся с измерением температуры: при плохом самочувствии хватаемся за градусник, перед выходом на улицу смотрим на термометр заокном и т.д. Но это лишь верхушка айсберга: в медицине, промышленности, транспорте, сельском хозяйстве не обойтись без измерения температуры. Эта задача решается при помощи электронных приборов, среди которых важное место занимают цифровые термометры.
Специалистам давно и хорошо известны цифровые термометры Dallas Semiconductor в корпусах ТО92, DIP и SOIC (такие, как DS1620, DS1820, DS1821 и другие). В последнее время компания расширила линейку приборов в стальном корпусе MicroCAN, которые относятся к семейству DS192х и которые мы рассмотрим в этой статье. Причин тому несколько: это и уникальный регистрационный номер каждого устройства, и стальной корпус, и возможность работать в однопроводной сети MicroLAN (подробное описание см. http://www.rtcs.ru/ или Chip News, No 5–10'2000).
Контактный термометр DS1920.
DS1920 представляет собой цифровой термометр (блок-схема представлена на рис. 1) в корпусе МiсгоСАN, который обеспечивает измерение температуры в диапазоне от –55 до +100 °С с шагом 0,5 °С и временем преобразования 0,2 с. Разрешающая способность 0,5 °С и разрядность 9 бит обеспечивают высокую точность измерения, а доступ к внутренним счетчикам дает возможность увеличить разрешение с использованием интерполяции. Особо следует выделить наличие специального набора команд, который позволяет проводить одновременный опрос нескольких приборов DS1920, подключенных к одной шине.
Встроенный контроллер MicroLAN обеспечивает передачу команд управления и данных по однопроводной линии. Так как DS1920 не имеет встроенного источника питания и использует только режим «паразитного» питания, то во время преобразования температуры или при записи данных во внутреннее ЭППЗУ требуется внешний источник питания.
В состав DS1920 входят 64-разрядное ПЗУ с уникальным идентификационным номером, датчик температуры и два энергонезависимых регистра для хранения верхнего и нижнего порогов температуры. Считывание и запись данных осуществляются через блокнотную память объемом 8 байт с последовательным доступом.
DS1920 не имеет внутреннего источника питания, а использует «паразитное» питание от однопроводной шины. Однако при измерении температуры и записи данных в ЭППЗУ ток потребления микросхемы превышает 1 мА, в то время как максимальный ток, который может обеспечить нагрузочный резистор, составляет 3,3...1 мА, что достаточно для питания только одного прибора. Проблема включения нескольких термометров решается или подключением внешнего источника питания, или питанием по сети, но с заменой нагрузочного резистора на низкоомный открытый ключ, который на время преобразования температуры и записи данных в ЭППЗУ подает на однопроводную шину напряжение питания +5 В. ИС имеет встроенный детектор используемого режима питания. Схема подключения приведена на рис. 2.
Применение внешнего источника питания ускоряет процесс преобразования температуры, так как от ведущего устройства не требуется ожидание в течение максимально возможного времени преобразования. В этом случае все DS1920, находящиеся на шине MicroLAN, могут одновременно выполнять преобразование температуры.
После завершения преобразования полученное значение сравнивается с величинами, хранящимися в регистрах TH и TL. Если измеренная температура выходит за установленные пределы, устанавливается сигнальный флаг (установка производится после каждого измерения). При установленном флаге DS1920 отвечает на команду «Поиск сигнала». Это позволяет в случае объединения множества приборов в сеть быстро идентифицировать точку с отклонениями температуры от допустимых пределов и сразу считать показания соответствующего термометра. Если команда «Поиск сигнала» не применяется, то регистры TH и TL могут использоваться как регистры общего назначения.
Измерение температуры DS1920 выполняется с помощью встроенной схемы измерения (рис. 3). Суть метода измерения в следующем: подсчитывается число тактовых импульсов генератора с низким температурным коэффициентом (ГНТК), выдаваемых за период измерения, который определяется генератором с высоким температурным коэффициентом (ГВТК). Предварительная запись в счетчик соответствует –55 °С. Если содержимое счетчика достигает нуля до того, как закончится период измерения, то регистр температуры, в который также предварительно записано значение, соответствующее –55 °С, инкрементируется, то есть измеренная температура выше –55°С. Затем в счетчик заносится новое значение из сумматора-корректора и начинается новый отсчет. Если счетчик обнуляется до того, как закончится период измерения, то процесс повторяется.
Сумматор-корректор компенсирует нелинейность генераторов от температуры, позволяя, таким образом, проводить измерения с высоким разрешением (0,5 °С). Отметим, что все вычисления выполняются непосредственно DS1920. В таблице 1 приведены точные соотношения между измеренной температурой и выходными данными.
Таблица 1
Температура, °С |
Выход (двоичный код) |
Выход (шестнадцатеричный код) |
100 |
00000000 11001000 |
00C8H |
25 |
00000000 00110010 |
0032H |
0.5 |
00000000 00000001 |
0001H |
0 |
00000000 00000000 |
0000H |
–0.5 |
1,111,111,111,111,110 |
FFFFH |
–25 |
1,111,111,111,001,110 |
FFCEH |
–100 |
1,111,111,110,010,010 |
FF92H |
Как уже отмечалось, в DS1920 реализована возможность измерения температуры с более высоким разрешением. Для этого считывается значение температуры из регистра температуры и из него отбрасывается младший бит 0,5 °С. Полученное значение обозначается TEMP_READ. Затем считывается оставшееся в счетчике значение, которое остается после окончания периода измерения и обозначается (COUNT_REMAIN). Последней величиной, необходимой для расчета, является число отсчетов на градус при данной температуре (COUNT_PER_C). Реальное значение температуры определяется по формуле:
Память DS1920 является важнейшей составляющей, поэтому расскажем о ней в двух словах. Сюда входит блокнотная память и два байта ЭППЗУ (регистры верхнего TH и нижнего TL температурных порогов, таблица 2).
Таблица 2. Карта памяти термометра DS1920
Блокнотная память |
Байт |
ЭППЗУ |
Измеренная температура (старший байт) |
0 |
|
Измеренная температура (младший байт) |
1 |
|
Копия TH |
2 |
Верхний TH температурный порог |
Копия TL |
3 |
Нижний TL температурный порог |
Резерв |
4 |
|
Резерв |
5 |
|
Счетчик COUNT REMAIN |
6 |
|
Счетчик COUNT PER °С |
7 |
|
Байт контрольной суммы |
8 |
|
Блокнотная память организована как 8 байт памяти с последовательным доступом. Два первых байта — измеренная температура, третий и четвертый — временные копии TH и TL, обновляемые при каждом включении. Два следующих байта не используются. Седьмой и восьмой байты являются регистрами счетчика и используются для получения значения температуры с более высоким разрешением. Последний байт — байт контрольной суммы (проверка предыдущих восьми байтов). Через блокнотную память выполняется чтение и запись данных в микросхему. Поскольку режим произвольного доступа к блокнотной памяти отсутствует, то чтение этой памяти начинается с данных последнего измерения температуры, затем читаются регистры верхнего и нижнего температурных порогов и последними читаются два регистра, которые используются для интерполяции температурных отсчетов. Для проверки полученных данных после чтения последнего байта блокнотной памяти передается 8-разрядная контрольная сумма.
Мы уже говорили, что одной из особенностей термометров семейства DS192х является возможность работы в однопроводной сети Micro LAN на шине 1-Wire. Напомню, что однопроводная шина 1-Wire представляет собой систему с одним ведущим и многочисленными ведомыми. В качестве ведущего может использоваться любой промышленный микроконтроллер, например, 8051 с тактовой частотой 1,8 МГц, или персональный компьютер с универсальным асинхронным портом UART и скоростью 115,2 кбит/с. MicroLAN имеет стандартные КМОП/ТТЛ логические уровни.
Напряжение ниже 0,8 В соответствует логическому нулю («0»), а напряжение выше 2,2 В является логической единицей («1»). Диапазон рабочих напряжений составляет 2,8–6 В. Ведущий и ведомые сконфигурированы как передатчики, что позволяет передавать данные в любом направлении, но в любой конкретный момент — только в одном. Иными словами, передача данных является полудуплексной и асинхронной.
Подключение к шине 1-Wire допустимо для приборов с тремя состояниями или с открытым стоком. В DS1920 реализован выход с открытым стоком (эквивалентная схема на рис. 4). Протокол обмена между термометром и шиной состоит из четырех шагов:
- инициализация;
- команды работы с ПЗУ;
- команды управления и работы с памятью;
- передача данных.
Любая передача на однопроводной шине начинается с инициализации, которая состоит из импульса сброса (формируется ведущим), после которого все ведомые генерируют импульс присутствия.
После определения импульса присутствия ведущий шины выполняет одну из команд работы с ПЗУ (каждая по 8 бит). Чтение ПЗУ (33h) позволяет ведущему считать 8-разрядный групповой код, 48-разрядный уникальный серийный номер и байт контрольной суммы. Эта команда может использоваться, если к шине подключен только один термометр DS1920.
Совпадение ПЗУ (55h) применяется для адресации определенного прибора среди нескольких, подключенных на шину.
Пропуск ПЗУ (CCh) предназначен для одновременной связи со всеми приборами на шине. В нашем случае эта команда используется для преобразования температуры всеми термометрами DS1920 одновременно.
Поиск ПЗУ (F0h) обеспечивает работу в условиях постоянно изменяющейся структуры сети. По этой команде можно получить серийный номер одного прибора на шине с одновременной его адресацией.
Условный поиск ПЗУ (ECh). Термометр отвечает на эту команду только в том случае, если в регистры TH и TL занесены значения верхнего и нижнего температурных порогов, а последнее измерение выходит за эти пределы.
Команды управления и работы с памятью также имеют разрядность 8 бит.
Запись в блокнотную память (4Eh) термометра DS1920 выполняется начиная с адреса 2, то есть два записанных байта будут храниться в памяти по адресу 2 и 3. Запись может быть прервана в любой момент импульсом сброса. Однако, если импульс сброса появился до того, как оба байта были полностью переданы, то их содержимое будет не определено.
Чтение блокнотной памяти (ВЕh) позволяет прочитать все содержимое этой памяти.
Копирование блокнотной памяти (48h). По данной команде содержимое блокнотной памяти копируется в ЭППЗУ DS1920, что сохраняет значение измеренной температуры в энергонезависимой памяти.
Преобразование температуры (44h). Эта команда запускает процесс преобразования температуры, при этом никакие данные не передаются.
Повтор (В8h) переписывает значение измеренной температуры из ЭППЗУ в блокнотную память. Эта команда выполняется автоматически при подключении к DS1920 источника питания.
На передаче данных мы останавливаться не будем, поскольку это уже достаточно хорошо описано.
Термометр DS1920 зарегистрирован в Государственном реестре средств измерения под номером 23169-02 и допущен к применению в России. Это должно повысить интерес к прибору со стороны разработчиков ответственных приложений. Из наиболее перспективных на сегодняшний день идей стоит упомянуть применение DS1920 в системах температурного мониторинга зданий (работа выполняется в Донецком отделении Академии
наук Украины), а также для построения теплосчетчиков (работа выполняется омскими специалистами).
Термометр-часы DS1921L-F5Х представляет практически идеальное устройство для контроля температуры объектов, например, скоропортящихся продуктов или химикатов, критичных к температуре, с возможностью записи измеренных значений в защищенную область памяти. Измерение температуры и запись ее в память производится с интервалом времени, задаваемым пользователем. Запись в память осуществляется как в виде непосредственного значения с инкрементом адреса памяти, так и в виде гистограммы. Термометр-часы DS1921L-F5Х допускает хранение до 2048 значений температуры, записанных через равные интервалы от 1 до 255 минут. Гистограмма создает 63 приемника данных для получения разрешения 2 °С. Каждый приемник реализован в виде 16-разрядного счетчика, содержимое которого наращивается в случае, когда значение температуры попадает в диапазон данного приемника. Приемник 1 соответствует диапазону от –40 до –38,5 °С, приемник 2 охватывает диапазон от –38 до –36,5 °С и так далее. Последний 63-й приемник фиксирует
температуры свыше 84 °С. Поскольку каждый приемник — счетчик на 2 байта, то он может наращиваться 65535 раз. Если число значений температуры, попадающей в данный диапазон, превышает это число, содержимое приемника не изменяется. Следует помнить, что даже при измерении температуры каждую минуту и попадании всех значений в один приемник его переполнение произойдет только через 45 дней.
Если температура выходит за пределы диапазона, установленного пользователем, то прибор фиксирует время, когда это произошло, продолжительность этого события, а также позволяет различить, какой порог был преодолен. В общей сложности, могут фиксироваться до 24 таких событий, по 12 для каждого из температурных порогов. Дополнительное ОЗУ, независимое от памяти для записи температуры, позволяет хранить информацию, относящуюся к контролируемому объекту. В ОЗУ прибора может также храниться информация о дате изготовления, фирме-изготовителе и т. п. Уникальный регистрационный номер и несбрасываемый счетчик позволяют определить попытки несанкционированного доступа к микросхеме.
Блок-схема DS1921L-F5Х представлена на рис. 5. Регистры часов и управления защищены от записи при программировании.
Помимо температурного датчика и памяти различного назначения (карта памяти на рис. 6), микросхема имеет встроенные часы-календарь реального времени. Часы могут работать в 12- или 24-часовом режимах, которые определяются битом 6 регистра часов по адресу 202h («1» — 12-часовой режим). Бит 5 устанавливает индикацию АМ/РМ при 12-часовом режиме («1» соответствует РМ).
Для учета дня недели в состав DS1921L-F5Х входит счетчик, содержимое которого изменяется от 1 до 7, причем «1» соответствует воскресенью (стандарт США) или понедельнику (европейский стандарт). В календаре предусмотрена коррекция високосных лет вплоть до 2100 года (для оптимистов и жизнелюбов).
Преобразование температуры. Измерение температуры с помощью DS1921L выполняется с точностью 0,5 °С, причем значение температуры представляется как 8-разрядное (байт) беззнаковое двоичное число, которое охватывает весь диапазон 128 °С (в теории). Реально диапазон ограничен 00000000b (00h). .11111010b (FAh), а действительные значения температур лежат от 01h до F9h. Если при преобразовании температуры обнаруживается, что она выходит за пределы допустимого диапазона, это записывается как 00h (если температура слишком низкая) или FFh (если температура слишком высокая). Так как результаты, выходящие за допустимый диапазон, накапливаются в буферах гистограммы 0 и 62, то значения в этих буферах ограничены.
Как следствие, номинальный температурный диапазон DS1921H и DS1921Z начинается с кода 04h и заканчивается кодом F7h, что соответствует буферам гистограммы 1…61. Значение температуры вычисляется на основе значения T[7…0] следующим образом:
Это выражение справедливо как для отсчетов температуры, сохраненных в памяти, так и для регистра прямого считывания температуры (адрес 211h).
Пределы верхнего и нижнего температурных порогов рассчитываются по формуле:
Например, температура 23 °C преобразуется в десятичное число 126 или шестнадцатеричное 7Еh. Это соответствует двоичному значению 01111110b, которое должно быть записано в регистр температурной тревоги (адрес 020Bh или 020Ch соответственно).
К сетевым командам для DS1920 в DS1921L добавлены две новые для работы в режиме высокого быстродействия (Overdrive mode):
- пропуск ПЗУ в режиме высокого быстродействия (3Сh);
- совпадение ПЗУ в режиме высокого быстродействия (69h).
Эти команды аналогичны командам для DS1920, только выполняются быстрее и до появления импульса сброса длительностью не менее 480 мкс. Временные параметры для обычного режима и режима высокого быстродействия приведены в таблице 3.
Таблица 3
Параметр |
Стандартные значения, мкс |
Значения для DS1921L, мкс |
Стандартная скорость |
Повышенное быстродействие |
Стандартная скорость |
Повышенное быстродействие |
мин. |
макс. |
мин. |
макс. |
мин. |
макс. |
мин. |
макс. |
Длительность временного интервала |
61 |
- |
7 |
- |
65 |
- |
8 |
- |
Длительность низкого |
480 |
- |
48 |
80 |
540 |
640 |
48 |
80 |
Длительность высокого импульса присутствия |
15 |
60 |
2 |
6 |
15 |
60 |
1.1 |
6 |
Длительность низкого импульса присутствия |
60 |
240 |
8 |
24 |
60 |
270 |
7.5 |
24 |
Длительность низкого уровня при записи 0 |
60 |
120 |
6 |
16 |
60 |
120 |
6 |
15 |
Длительность низкого уровня при чтении 0 |
15 |
60 |
2 |
6 |
15 |
60 |
2 |
6 |
Выделенные цветом значения не соответствуют опубликованному стандарту на iButton
Блок команд для работы с памятью тоже пополнен новыми командами.
Чтение памяти с байтом контрольной суммы применяется в тех случаях, когда данные не могут быть объединены в пакеты.
Очистка памяти — для очистки некоторых сегментов памяти.
Наконец, рассмотрим термометры-часы высокого разрешения DS1921H и DS1921Z. Оба термометра имеют разрешение 0,125 °С и могут записать температурную гистограмму с разрешением 0,5 °С. Еще одно отличие — температурный диапазон, который для DS1921H составляет +15 … +46 °С, а для DS1921Z — –5 … +26 °С.
Использование формата TMEX позволяет хранить в энергонезависимой памяти различную информацию (торговая декларация, дата выпуска, другие данные в виде текста или кодированных файлов).
Измерение и преобразование температуры DS1921H и DS1921Z аналогично DS1921L, но с разрешением 1/8 градуса Цельсия, перекрытием диапазона 32 °C (возможны значения от 00h до FFh) и действительными отсчетами температуры от 01h до FEh.
Поскольку DS1921H и DS1921Z имеют разные начальные значения измерения температуры, то интерпретация кода температуры зависит от типа устройства. Номинальный температурный диапазон обоих приборов начинается с 04h и заканчивается FBh, что соответствует буферам гистограммы 1…62.
Температура вычисляется на основе значения T[7…0] по формуле:
Для установки верхнего и нижнего температурных порогов необходимо воспользоваться формулой:
Значение 23 °C (пример для DS1921L) преобразуется в 68 (десятичное) или 44h для DS1921H, и 228 (десятичное) или E4h для DS1921Z. Это соответствует двоичным значениям 01000100b и 11100100b, которые тоже должны быть записаны в регистры температурной тревоги (адрес 020Bh или 020Ch соответственно).
Таким образом, DS1921H/Z являются практически идеальными устройствами для контроля температуры транспортируемых объектов, будь то продукты питания, медицинские препараты или биологические органы. Это своеобразный электронный самописец в одном корпусе, не требующий ничего для своей работы. Такие приборы позволяют создать эффективную систему контроля качества перевозки скоропортящихся продуктов, чем уже не преминули воспользоваться в некоторых европейских странах. Диапазон измерений прибора DS1921H делает его привлекательным в первую очередь для контроля температуры тела человека или животных, а также для контроля процессов, критичных к температуре: консервирование, покраска, нанесение порошковых покрытий и т. п. Следует отметить, что возможность применения описанных приборов в медицинских и пищевых приложениях подтверждена заключением государственной санитарно-эпидемиологической службы РФ. Кроме того, DS1921H может использоваться для контроля температуры в любых помещениях, например, в помещениях с компьютерами или другим оборудованием.
Высокая разрешающая способность и режим высокого быстродействия (временные параметры для обычного режима и режима высокого быстродействия приведены в таблице 4) позволяет широко применять DS1921H и DS1921Z для научных исследований.
Таблица 4
Параметр |
Стандартные значения, мкс |
Значения для DS1921H/Z, мкс |
Стандартная скорость |
Повышенное быстродействие |
Стандартная скорость |
Повышенное быстродействие |
мин. |
макс. |
мин. |
макс. |
мин. |
макс. |
мин. |
макс. |
Длительность временного интервала |
61 |
- |
7 |
- |
76 |
- |
10 |
- |
Длительность низкого уровня сброса |
480 |
- |
48 |
80 |
480 |
640 |
62 |
80 |
Длительность высокого импульса присутствия |
15 |
60 |
2 |
6 |
15 |
60 |
1.4 |
7.4 |
Длительность низкого импульса присутствия |
60 |
240 |
8 |
24 |
60 |
240 |
7.5 |
34 |
Длительность низкого уровня при записи 0 |
60 |
120 |
6 |
16 |
71 |
120 |
8 |
15.2 |
Длительность низкого уровня при чтении 0 |
15 |
60 |
2 |
6 |
15 |
71 |
2 |
8 |
Выделенные цветом значения не соответствуют опубликованному стандарту на iButton.
Николай Ракович
|