Термодатчик TI TMP121

Термодатчик рядом с контроллером (TQFP44)Для контроля температуры в одном девайсе, разработкой которого я занимаюсь, присмотрел датчики температуры TMP121 от одной небезызвестной техаской фирмочки. Из каких соображений я выбрал именно их я сейчас уже не скажу — дело было ещё прошлым летом — зато могу сказать, почему не взял классические DS1820 и иже с ними: хотелось чего-то максимально простого с точки зрения контроллера, а 1-wire, хоть он и тысячу раз описан и разжёван, простым я бы не назвал. На той неделе у меня таки дошли руки написать код для работы с датчиками. Так вот — могу с уверенностью сказать, что эти термометры в использовании действительно просты как пять копеек.

ТТХ
TMP121 (и его брат-близнец TMP123) — миниатюрный термодатчик в шестилапом корпусе SOT-23 с точностью +/-1.5°C и разрешающей способностью 0.0625°C. Рабочий диапазон −25°C...+85°C (до −40°C...+125°C с точностью 2°C и −55°C...+150°C абсолют максимум). Есть, кстати, ещё TMP125 с ещё более худшей точностью, но почти втрое большей скорость работы. Интерфейс — односторонний SPI с шестнадцати-битными посылками. В посылке 13 бит — знаковое число с фиксированной точкой в градусах Цельсия, остальные три бита не используются (впрочем, два из них помечены как Z, что наводит на мысль, что с их помощью можно что-то настраивать, но в даташите про это ни слова, хотя в блок-схеме указано наличие некоего конфигурационного регистра). Ток потребления в режиме измерения температуры 50мкА (спокойно можно питать от ноги контроллера), в спящем режиме до 1мкА, напряжение питания от 2.7 до 5.5 вольт.

Фунциклирование
Блок-схема и распиновка
Основой термодатчика является термодиод, показания с которого считывает сигма-дельта АЦП. Термодатчик может находиться в двух основных режимах — измерение (conversion) и передача информации (shutdown), переключение между режимами происходит с помощью ноги CS — «1» меряем, «0» спим и передаём информацию. Это, кстати, надо учитывать, если нужно повесить на один SPI несколько девайсов — у поднятия CS появляется побочный эффект — повышение потребления на порядок. Само измерение длится примерно 250мс после включения, далее измеренное значение записывается в выходной регистр, а датчик переходит в ждущий режим (IDLE), в котором жрёт 20мкА. Повторное измерение начинается автоматически ещё через 250мс, таким образом рабочий период датчика составляет примерно 0,5с (у упомянутого выше TMP125 период 120мс, время измерения, соответственно, 60мс).
Данные о температуре считываются по SPI, для чего требуется три ноги — CS(чип селект), SO(данные) и SCK(тактовая). Максимальная частота SCK — 10МГц. Посылки, как уже было сказано, 16-ти битные — первый бит знак, далее 8 бит значение градусов и ещё 4 бита — доли градуса. Далее идёт ноль и два бита в третьем состоянии, которые нужно отбрасывать.

Впечатления
В целом очень удобный термометр, если не жалко ножек на МК. Компактный, не требовательный к питанию, из обвязки разве что кондёр по питанию и то не обязательно. Возможность запитывать микруху напрямую от ноги контроллера упрощает схемотехнику и позволяет отрубать питание термометра в любой момент, компенсируя особенности работы SPI. Точность, конечно, не высокая, но для бытового использования вполне достаточно. Что приятно, кстати, — страшная строка про +/-1.5 градуса в начале даташита к середине превратилась в "+/-0.5 TYP, +/-1.5 MAX", то есть в рекламе они указали точность по худшему случаю, не то что некоторые. Реальную точность мне, к сожалению, оценить нечем, могу лишь сказать, что ИК-пирометр, направленный на корпус микрухи в комнатных условиях показывает примерно на градус больше, чем показания самой TMP121. Стабильность показаний датчика от включения к включению говорит о том, что разрешающая способность 0.0625 градусов вполне реальна, хотя зачем она такая нужна сказать не могу.

Ссылки
Описание не сайте производителя — www.ti.com/product/tmp121
Даташит — www.ti.com/litv/pdf/sbos273c

ЗЫ: админы, добавьте пожалуйста в фильтр прикрепляемых файлов PDF — архивировать даташиты это изврат.
  • +8
  • 27 марта 2012, 13:10
  • Alatar

Комментарии (19)

RSS свернуть / развернуть
Отличный пост, кратко и по существу. Один только момент — цена вопроса? Поиск выдает 50-250р, какая цена была актуальна у вас и где брали (где есть в наличии)?
+1
Брали мы их в Компеле по 45р.
0
Аналоговые датчики не рассматривали?
0
Нет, аналоговые требуют обработки (как минимум померить АЦПом) на которую в данном случае жалко ресурсов. Нужен был датчик который можно максимально быстро окучить. Здесь от меня требуется два действия:
1) включить питание, выставив 1 на выходе, подключенном к V+
2) через некоторое время считать байт (можно всего один, если достаточно разрешения в 2 градуса), положить его в память и отключить питание.
0
Ну, зато нужна всего 1 нога — вход АЦП. И датчик аналоговый можно найти дешевле =)
0
шестилапом корпусе SOT-23
Называется этот корпус SOT-23-6. Не путайте народ :)
0
А кто кого путает? Шестиногий SOT-23 — это SOT23-6, точно так же, как 48-ногий TQFP — это TQFP48. Не вижу противоречия или ошибки =)
0
Да, интересно. Надо будет попробовать…
0
Допили еще распиновку датчика.
0
  • avatar
  • Vga
  • 27 марта 2012, 18:28
Вставил блок-схему из даташита, по ней ИМХО всё ясно
0
Забавная цоколевка) Интересно, почему у разных микросхем она слегка разная?)
0
Меня больше заинтересовало, отличаются ли эти микрухи ещё хоть чем-нибудь. В ДШ нашёл только упоминание, что у 123 может быть чуть больше максимальный (TYP точно такой же) ток потребления в спящем режиме. А если учесть, что NC разрешено подключить к GND, то получается, что микрухи вообще одинаковые — смысл делать их две я так и не понял.
0
Разрешено, но не стоит, как уже писали раньше NC лучше не трогать.
0
Спасибо автору за статью. А почему не использовали обычнные, скажем, 10мВ/градус термодатчики? 1 нога АЦП МК и никаких теме SPI.
0
  • avatar
  • Dmi
  • 27 марта 2012, 19:36
Аналоговый выход не рассматривался принципиально. Дело в том, что стояла задача добавить функцию передачи текущей температуры окружающей среды вместе с измеренными значениями в уже готовое устройство. Вклинивание обработки ещё одного канала АЦП, да ещё и не на каждом цикле работы, а только при определённых условиях (по запросу) чревата костылями или заметными модификациями алгоритма. И того и другого хотелось избежать. А тут тупо: при активации канала связи включаю модуль, по команде считываю и выплёвываю, при отключении соединения — отрубаю модуль.
0
Вам виднее. я пока работал токо с простыми «глупыми» датчиками температуры. Надо будет взять на вооружение
0
Вот это правильный подход.
0
спасибо за статью, интересно!
0
а у меня халявные ТМР100 были. Норм кстати датчики, мне понравились.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.