Перейти к содержанию

MCP9808 — цифровой датчик температуры Microchip с точностью ±0,5 °C

MCP9808 — датчик температуры Microchip с выходом I²C, у которого точность ±0,5 °C гарантирована как максимум в диапазоне −20…100 °C, а не указана типовой. Вдобавок он умеет сам следить за порогами и выдавать сигнал Alert. Разбираем по даташиту выводы, адреса, регистры, пересчёт кода в градусы и ошибки в примерах самого даташита.

Обновлено Редакция GAW

MCP9808 измеряет температуру собственного кристалла: внутри — датчик на основе запрещённой зоны, дельта-сигма АЦП и набор регистров с интерфейсом I²C/SMBus. Помимо измерения он сравнивает результат с тремя порогами и управляет выходом Alert — это позволяет сделать термостат без участия микроконтроллера. Как выбирать термометр под задачу — в статье «Датчики температуры».

Коротко

  • Точность — ±0,5 °C макс. при −20…100 °C, ±1 °C макс. при −40…125 °C, ±0,25 °C тип. (VDD = 3,3 В).
  • Разрешение — 0,5; 0,25; 0,125 или 0,0625 °C, преобразование 30–250 мс тип.
  • Питание — 2,7–5,5 В; ток 200 мкА тип. (400 мкА макс.), в режиме Shutdown — 0,1 мкА тип.
  • Интерфейс — I²C/SMBus до 400 кГц, адреса 0x18–0x1F по выводам A2–A0.
  • Alert — открытый сток, три порога, гистерезис 0; 1,5; 3 или 6 °C.
  • Корпуса — DFN-8 2 × 3 мм (с площадкой) и MSOP-8; θJA — 68 и 211 °C/Вт.

Выводы

DFN-8 / MSOP-8ОбозначениеНазначение
1SDAданные I²C, нужна подтяжка
2SCLтактовый сигнал I²C
3Alertвыход тревоги, открытый сток, нужна подтяжка
4GNDобщий
5A2старший задаваемый бит адреса
6A1бит адреса
7A0младший бит адреса
8VDDпитание 2,7–5,5 В
9 (только DFN)EPплощадка снизу, соединена с GND внутри; подключить к GND

Нумерация в обоих корпусах одинаковая. Между VDD и GND Microchip рекомендует керамический конденсатор 0,1–1 мкФ вплотную к выводам. Для хорошего теплового контакта с платой под выводами DFN-корпуса делают полигон земли (рис. 6-1).

Параметры

По таблицам на с. 3–5 даташита: VDD = 2,7–5,5 В, −40…125 °C, если не указано иное.

ПараметрМин.Тип.Макс.Условия
Точность при −20 < TA ≤ 100 °C−0,5 °C±0,25 °C+0,5 °CVDD = 3,3 В, с учётом дрейфа за срок службы
Точность при −40 < TA ≤ 125 °C−1,0 °C±0,25 °C+1,0 °C
Дрейф точности—+0,05 °C—ускоренные испытания, эквивалент 12 лет при +55 °C
Повторяемость—±0,0625 °C—48 часов при +55 °C
Влияние питания—−0,1 °C/В—2,7–5,5 В, 25 °C
Ток потребления—200 мкА400 мкА
Ток в режиме Shutdown—0,1 мкА2 мкА
Порог сброса VPOR—2,2 В—при снижении VDD
Тепловой отклик (63 %)—0,7 с / 1,4 с—DFN / MSOP, из воздуха 25 °C в масло 125 °C
Низкий уровень входа VILGND—0,3 VDD
Высокий уровень входа VIH0,7 VDD—VDD
Выход SDA и Alert——0,4 Вток 3 мА
Частота SCL0—400 кГц
Тайм-аут шины25 мс—35 мсSCL дольше этого в одном уровне — сброс интерфейса

Предельные режимы: VDD до 6,0 В, на любом выводе — от GND − 0,3 В до 6,0 В. Наш вывод из тайм-аута SMBus: программная эмуляция I²C с паузами длиннее 25 мс (например, при отладке по шагам) с датчиком работать не будет. Растяжения SCL MCP9808 не делает.

Адрес и регистры

Адрес — 0011 A2 A1 A0 в двоичном виде, то есть 0x18–0x1F; подробнее о том, как складывается адрес I²C, — в глоссарии. Регистр выбирают указателем — первым байтом после адреса при записи; указатель сохраняется, поэтому повторное чтение того же регистра его не требует. Последовательного чтения нескольких регистров подряд нет: каждый адресуют отдельно.

УказательРегистрПосле включения
0x01CONFIG — гистерезис, Shutdown, блокировки, настройка Alert0x0000
0x02 / 0x03 / 0x04TUPPER / TLOWER / TCRIT — пороги с шагом 0,25 °C0x0000
0x05TA — температура и флаги порогов, только чтение0x0000
0x06Manufacturer ID0x0054
0x07Device ID / ревизия0x0400 (ID = 0x04)
0x08Resolution: 00 — 0,5 °C, 01 — 0,25 °C, 10 — 0,125 °C, 11 — 0,0625 °C0x03

Регистр TA: бит 15 — TA ≥ TCRIT, бит 14 — TA > TUPPER, бит 13 — TA < TLOWER, бит 12 — знак, биты 11–0 — температура в дополнительном коде с весом младшего бита 0,0625 °C. Пересчёт: температура = (старший байт & 0x0F) × 16 + младший байт / 16, а при единице в бите знака из результата вычитают 256.

Наш расчёт по рис. 5-5 даташита: прочитаны байты 0x01 и 0x94. Флагов и знака нет, температура = 1 × 16 + 148 / 16 = 16 + 9,25 = +25,25 °C. Отрицательный пример — тоже наш: байты 0x1F и 0xF0 (флаги сброшены, знак установлен) дают 15 × 16 + 240 / 16 = 255, а 255 − 256 = −1,0 °C.

Выход Alert

Выход Alert включают битом 3 регистра CONFIG; по умолчанию он выключен, работает в режиме компаратора и активен низким уровнем. Пример из даташита: запись 0x00 0x08 в CONFIG (указатель 0x01) включает выход. Режимов три:

  • компаратор — Alert активен, пока температура выше TUPPER или ниже TLOWER, и сам возвращается с учётом гистерезиса; подходит для термостата и вентилятора;
  • прерывание — Alert срабатывает при пересечении порогов и сбрасывается записью бита 5 (Interrupt Clear);
  • только критический порог — бит 2: Alert реагирует лишь на TA ≥ TCRIT (так сформулированы бит 15 регистра температуры и пример кода; в описании бита 2 регистра конфигурации стоит «TA > TCRIT»). При достижении TCRIT выход в любом случае переходит в режим компаратора.

Гистерезис (биты 10–9) действует только при снижении температуры. Биты 7 и 6 блокируют пороги от случайной перезаписи до сброса питания. Бит 8 переводит датчик в режим Shutdown: преобразования прекращаются, регистры остаются доступными, ток падает до 0,1 мкА тип.

Самонагрев

Microchip оценивает самонагрев уравнением 6-1: ΔT = θJA × (VDD × IDD + VOL × IOL для Alert + VOL × IOL для SDA). Наш расчёт для худшего случая — VDD = 3,3 В, IDD = 400 мкА, оба выхода держат ноль при 3 мА и 0,4 В: мощность 1,32 + 1,2 + 1,2 = 3,72 мВт, нагрев 0,25 °C в DFN (68 °C/Вт) и около 0,78 °C в MSOP (211 °C/Вт). Без нагрузки на выходах остаются 1,32 мВт — 0,09 и 0,28 °C. Наш вывод: в MSOP-корпусе для точности ±0,5 °C подтяжки выбирают так, чтобы ток в нуле был заметно меньше 3 мА, и Alert без нужды не держат активным.

Сравнение с DS18B20 и LM35

MCP9808DS18B20LM35
ВыходI²C/SMBus1-Wireаналоговый, 10 мВ/°C
Питание2,7–5,5 В3,0–5,5 В4–30 В
Точность±0,5 °C макс. при −20…100 °C±0,5 °C при −10…+85 °C±0,5 °C при 25 °C
Шаг0,0625 °C0,0625 °C (12 бит)непрерывный сигнал
Время измерения250 мс тип. при 0,0625 °Cдо 750 мс при 12 битах—
Ток200 мкА тип.1 мА тип. при измерениименьше 60 мкА
Пороги и тревогатри порога, выход Alertпороги в памяти, флаг тревогинет

Данные — из даташитов каждой микросхемы. Наш вывод: MCP9808 удобен на плате рядом с микроконтроллером, где важны гарантированная точность и аппаратный термостат. DS18B20 лучше для выносных датчиков на кабеле, а LM35 — когда нужен аналоговый сигнал и нет свободной шины; его точность к тому же зависит от АЦП микроконтроллера.

Расхождения в документации

  • Разрешение после включения. Разделы 5.1.6, 5.2.4 и таблицы 5-2, 5-3 называют значением по умолчанию 0,0625 °C (Resolution = 0x03), а примечание 2 к регистру 5-4 — 0,25 °C с нулевыми битами 1 и 0. Наш вывод: при старте не полагайтесь ни на одно из них — запишите нужное значение в регистр 0x08.
  • Формула для отрицательной температуры. Уравнение 5-1 и пример 5-1 предлагают для TA < 0 °C вычислять 256 − (старший байт × 16 + младший байт / 16). Наша проверка: для −1,0 °C (байты 0x1F 0xF0) это даёт +1,0 — модуль без знака. Правильное значение со знаком — (старший байт × 16 + младший байт / 16) − 256 после сброса бита знака.
  • Пример самонагрева. Раздел 6.2 считает с «максимальным IDD = 500 мкА», хотя в таблице максимум 400 мкА, и упоминает корпус TSSOP-8, которого у MCP9808 нет — только DFN-8 и MSOP-8.
  • Мелочи. Раздел 5.1.6 ссылается на несуществующий у MCP9808 регистр Capability; раздел 5.1.3.1 предлагает сдвинуть старший байт «вправо на 4 бита (или умножить на 2⁴)», хотя умножению соответствует сдвиг влево; блокировки CONFIG снимаются, по одному описанию, «внутренним сбросом», по другому — сбросом при включении питания; площадку EP таблица 3-1 требует соединить с GND, а раздел 3.7 говорит, что её «можно» соединить.

Частые вопросы

Какой адрес I²C у MCP9808?

Старшие четыре бита фиксированы — 0011, младшие три задают выводы A2, A1, A0, подключённые к GND или VDD. Получаются адреса от 0x18 (все на GND) до 0x1F (все на VDD) — восемь датчиков на одной шине. Есть и заводской вариант с кодом 1001, то есть 0x48–0x4F, но его заказывают отдельно через Microchip.

Как перевести показания MCP9808 в градусы?

Прочитать два байта регистра 0x05, обнулить три старших бита флагов (& 0x1F) и сложить: старший байт × 16 + младший байт / 16. Если бит знака (0x10 в старшем байте) равен 1, температура отрицательная: из результата, посчитанного без бита знака, вычитают 256. Пример из даташита: байты 0x01 и 0x94 — это 16 + 9,25 = +25,25 °C.

Сколько длится одно измерение MCP9808?

Зависит от разрешения: 30 мс при 0,5 °C, 65 мс при 0,25 °C, 130 мс при 0,125 °C и 250 мс при 0,0625 °C (типичные значения). Датчик измеряет непрерывно, а регистр температуры обновляется по окончании каждого преобразования, поэтому его можно читать в любой момент. Разрешение после включения большинство разделов даташита называют равным 0,0625 °C, но в одном месте указано 0,25 °C — надёжнее записать нужное значение в регистр 0x08.

Чем MCP9808 лучше DS18B20?

У MCP9808 ±0,5 °C — максимум при −20…100 °C, у DS18B20 ±0,5 °C — при −10…+85 °C. MCP9808 быстрее (250 мс тип. против 750 мс макс. при шаге 0,0625 °C), потребляет 200 мкА против 1 мА при измерении и сам выдаёт сигнал при выходе за пороги. DS18B20 выигрывает однопроводной шиной 1-Wire, уникальным 64-битным номером каждого датчика и паразитным питанием по линии данных.

Источники

  1. Microchip. MCP9808 ±0.5°C Maximum Accuracy Digital Temperature Sensor (DS20005095B, 2011–2018) — с. 1 — особенности, корпуса DFN-8 2 × 3 и MSOP-8, выводы; с. 3 — предельные режимы, точность, дрейф, повторяемость, время преобразования, питание, ток, VPOR, выход Alert, тепловой отклик; с. 4 — уровни входов и выхода SDA, θJA 68 и 211 °C/Вт; с. 5 — тайминги I²C до 400 кГц, тайм-аут 25–35 мс, без растяжения SCL; с. 11, табл. 3-1 и 3-2 — выводы и адрес 0011 A2 A1 A0; с. 14 — нет последовательного чтения регистров; с. 16–29 — указатель регистров, CONFIG, пороги, регистр TA и уравнение 5-1, рис. 5-5 (+25,25 °C), ID 0x0054 и 0x04, разрешение; с. 30–33 — режим Shutdown, гистерезис, Alert, табл. 5-2 и 5-3; с. 35 — конденсатор 0,1–1 мкФ, самонагрев (уравнение 6-1)
  2. Maxim Integrated (Analog Devices). DS18B20 Programmable Resolution 1-Wire Digital Thermometer (19-7487, Rev 6, 7/19) — для сравнения: ±0,5 °C при −10…+85 °C, 9–12 бит, до 750 мс при 12 битах, питание 3,0–5,5 В, ток при преобразовании 1 мА тип. и 1,5 мА макс. (с. 1–3)
  3. Texas Instruments. LM35 Precision Centigrade Temperature Sensors (SNIS159H, revised December 2017) — для сравнения: аналоговый выход 10 мВ/°C, «0,5 °C Ensured Accuracy (at 25 °C)», питание 4–30 В, ток меньше 60 мкА (разд. 1)

Нашли ошибку?