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 | Обозначение | Назначение |
|---|---|---|
| 1 | SDA | данные I²C, нужна подтяжка |
| 2 | SCL | тактовый сигнал I²C |
| 3 | Alert | выход тревоги, открытый сток, нужна подтяжка |
| 4 | GND | общий |
| 5 | A2 | старший задаваемый бит адреса |
| 6 | A1 | бит адреса |
| 7 | A0 | младший бит адреса |
| 8 | VDD | питание 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 °C | VDD = 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 |
| Низкий уровень входа VIL | GND | — | 0,3 VDD | |
| Высокий уровень входа VIH | 0,7 VDD | — | VDD | |
| Выход SDA и Alert | — | — | 0,4 В | ток 3 мА |
| Частота SCL | 0 | — | 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, — в глоссарии. Регистр выбирают указателем — первым байтом после адреса при записи; указатель сохраняется, поэтому повторное чтение того же регистра его не требует. Последовательного чтения нескольких регистров подряд нет: каждый адресуют отдельно.
| Указатель | Регистр | После включения |
|---|---|---|
| 0x01 | CONFIG — гистерезис, Shutdown, блокировки, настройка Alert | 0x0000 |
| 0x02 / 0x03 / 0x04 | TUPPER / TLOWER / TCRIT — пороги с шагом 0,25 °C | 0x0000 |
| 0x05 | TA — температура и флаги порогов, только чтение | 0x0000 |
| 0x06 | Manufacturer ID | 0x0054 |
| 0x07 | Device ID / ревизия | 0x0400 (ID = 0x04) |
| 0x08 | Resolution: 00 — 0,5 °C, 01 — 0,25 °C, 10 — 0,125 °C, 11 — 0,0625 °C | 0x03 |
Регистр 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
| MCP9808 | DS18B20 | LM35 | |
|---|---|---|---|
| Выход | I²C/SMBus | 1-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 °C | 0,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-битным номером каждого датчика и паразитным питанием по линии данных.
Источники
- 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)
- 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)
- 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)
Нашли ошибку?
Смотрите также
- Микросхемы датчиковТок, давление, влажность, температура, свет, ИК: карточки и статьи
- Датчики температуры: NTC, Pt100, термопара, DS18B20, TMP117Термистор, Pt100, термопара, микросхемы и датчик МК: точность, подключение, самонагрев
- DS18B20Датчик температуры 1-Wire: выводы, точность, 9–12 бит, паразитное питание
- LM3510 мВ/°C: выводы, точность, питание от 4 В, минус, пересчёт АЦП
- Дополнительный кодTwo's complement: запись отрицательных целых
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- SMBusШина на основе I²C: таймаут, пороги, PEC
- Открытый стокВыход только с транзистором к земле, единицу даёт подтяжка
- Самонагрев датчикаДатчик греется током измерения: ΔT = P/δ
- ГистерезисДва порога переключения против дребезга, триггер Шмитта
- Опорное напряжение bandgapИсточник опорного напряжения на основе ширины запрещённой зоны кремния
- MSOP-8Шаг 0,65 мм, корпус 3 × 3 мм, по выводам 4,9 мм, высота до 1,1 мм
- DFN-8 2×3Шаг 0,5 мм, корпус 2,00 × 3,00 мм, площадка 1,30–1,55 × 1,50–1,75 мм, высота до 1,0 мм