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

Бесконтактные ИК-термометры и тепловизионные матрицы MLX90614 и MLX90640

Инфракрасный термометр измеряет не температуру предмета, а поток теплового излучения, и показывает среднее по всему полю зрения с поправкой на излучательную способность поверхности. Разбираем по даташитам Melexis, как подключить и читать MLX90614 и матрицу MLX90640, какое пятно видит датчик на заданном расстоянии и почему полированный алюминий и тёплая плата рядом портят измерение.

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

Бесконтактный инфракрасный термометр измеряет поток теплового излучения от предмета на термобатарею (thermopile) и пересчитывает его в температуру с учётом температуры самого датчика. Melexis подчёркивает главное следствие: результат — средняя температура всего, что попало в поле зрения датчика (MLX90614, разд. 1). Тепловизионная матрица делает то же самое для сотен маленьких полей зрения сразу и даёт картинку.

Коротко

  • ИК-термометр показывает среднюю температуру всего в поле зрения; поле зрения Melexis задаёт по уровню 50 % чувствительности, поэтому пятно 2 · L · tg(FOV/2) — оценка снизу.
  • MLX90614 откалиброван для излучательной способности ε = 1; у металлов она бывает 0,18–0,30, и датчик видит отражённое излучение окружения: при более холодном окружении показания занижены, при более тёплом — завышены.
  • Точность ±0,5 °C у MLX90614 гарантирована только в тепловом равновесии, без перепадов температуры по корпусу датчика.
  • MLX90614: SMBus 10–100 кГц, адрес 0x5A, объект в RAM 0x07, температура = код · 0,02 К; исполнения на 5 В (Axx) и 3 В (Bxx).
  • MLX90640: 32 × 24 пикселя, I²C до 1 МГц, адрес 0x33, 0,5–64 кадра/с; точность кадра ±1 °C только при объекте 0…+100 °C и датчике 0…+50 °C, средний NETD 0,14 К (BAA) и 0,25 К (BAB).
  • EEPROM MLX90640 рассчитана всего на 10 циклов записи.

Как ИК-термометр меряет температуру

Любое тело излучает тепловую энергию, тем больше, чем выше его абсолютная температура. Melexis записывает теплообмен излучением между датчиком и предметом через закон Стефана — Больцмана (MLX90614, разд. 5.8):

q=ε1α1σA1Fa−bT14−ε2σA2T24,q = \varepsilon_1 \alpha_1 \sigma A_1 F_{a-b} T_1^4 - \varepsilon_2 \sigma A_2 T_2^4,

где ε — излучательные способности, α — поглощательная способность датчика, σ — постоянная Стефана — Больцмана, A — площади, Fa−b — коэффициент формы, T — абсолютные температуры. Датчик знает собственную температуру (у него встроен откалиброванный датчик кристалла) и по потоку находит температуру объекта.

Перед термобатареей MLX90614 стоит длинноволновый фильтр с полосой пропускания 5,5–14 мкм: он отсекает видимый свет и ближний ИК, чтобы на результат не влияли солнце и освещение (исключения — исполнения xCH и xCI с непокрытой кремниевой линзой).

Излучательная способность

Излучательная способность ε показывает, какую долю излучения абсолютно чёрного тела той же температуры даёт поверхность. Для непрозрачного в ИК материала её дополняет отражательная способность: ρ = 1 − ε (сумма излучательной, отражательной и пропускательной способностей равна 1). Поверхность с малой ε излучает мало и отражает излучение окружающих предметов, и датчик не может отделить одно от другого. Melexis приводит типичные значения (разд. 5.8):

Поверхностьε
Алюминий, грубо полированныйоколо 0,18
Алюминий, сильно окисленныйоколо 0,30
Пластмассы0,84–0,95
Масляные краски0,85–0,95

Отсюда два правила: «чёрное на вид» не обязательно чёрное в ИК — даже сильно окисленный алюминий имеет ε всего 0,30; и чем больше разница температур предмета и окружения при данной отражательной способности, тем больше ошибка. Металлические детали меряют через пятно краски или матовой ленты с известной ε.

MLX90614 хранит ε в ячейке EEPROM 0x04 как round(65535 · ε), по умолчанию 0xFFFF (ε = 1,0); допустимо 0,1…1,0. Например, для ε = 0,95 — 62 258 = 0xF332 (наш расчёт). Ячейку перед записью стирают (пишут 0), запись занимает 5 мс. Melexis описывает смену коэффициента в отдельной инструкции и предупреждает, что ячейки 0x04, 0x0F и 0x19 нельзя менять произвольно, иначе заводская калибровка теряет смысл, — поэтому ε меняют строго по методике производителя.

Поле зрения и размер пятна

Поле зрения (FOV) Melexis определяет так: точечный источник тепла обходят по дуге, и полный угол между направлениями, где чувствительность падает до 50 % от максимума, — это FOV (MLX90614, рис. 27; MLX90640, рис. 24). За этими направлениями чувствительность не нулевая, поэтому пятно по формуле

D≈2Ltg⁡FOV2.D \approx 2 L \operatorname{tg}\frac{\text{FOV}}{2}.

— оценка снизу: часть сигнала приходит из кольца вокруг него. Чтобы фон не влиял, предмет берут заметно больше расчётного пятна.

Исполнение MLX90614Поле зренияПятно на 10 см (наш расчёт)
xAA90°около 20 см
xBA (две зоны)70° на каждую зону—
xCC35°около 6,3 см
xCK13°около 2,3 см
xCF, xCH10°около 1,8 см
xCI5°около 0,9 см

Если предмет меньше пятна, в среднее попадает фон, и показание сдвигается к его температуре. Для MLX90640 Melexis прямо оговаривает: точность действительна, только если объект целиком заполняет поле зрения (разд. 12.1).

Тепловые градиенты

Точность датчика гарантирована только в тепловом равновесии, когда по его корпусу нет перепада температуры. Горячая электроника позади датчика, нагреватель или охладитель рядом, горячий или холодный предмет вплотную нагревают не только чувствительный элемент, но и корпус — и показание уходит. Сильнее всего это сказывается на исполнениях с узким полем зрения (xxI, xxF, xxK): от объекта приходит меньше энергии. В исполнениях xCx градиент измеряется внутри и компенсируется, но не полностью (MLX90614, разд. 1). Практические меры:

  • держать датчик подальше от стабилизаторов, процессора и силовых элементов, не прижимать к тёплой плате;
  • не допускать резких перепадов: после включения или переноса дать датчику прийти в равновесие;
  • металлический корпус MLX90614 соединять только через VSS — Melexis не рекомендует других электрических соединений с ним по причинам ЭМС и изотермичности;
  • держать окно чистым: загрязнение фильтра даёт неизвестную дополнительную фильтрацию и ошибки (разд. 5.7);
  • следить, чтобы в поле зрения не попадали края отверстия в корпусе прибора: они тоже излучают.

MLX90614: одна точка по SMBus

MLX90614 — термометр в корпусе TO39 с четырьмя выводами: термобатарея, малошумящий усилитель, 17-битный АЦП и процессор обработки. С завода он откалиброван и выдаёт готовую температуру.

Параметр по даташиту Rev 021MLX90614AxxMLX90614Bxx
Питание4,5–5,5 В2,6–3,6 В
Ток1,3 мА, до 2,5 мА1,3 мА, до 2,5 мА; во сне 2 мкА, до 6 мкА
Температура объекта−70…+380 °C−70…+380 °C
Температура датчика−40…+125 °C (ESF — до +85 °C)то же
Точность±0,5 °C при 0…+50 °C для объекта и датчикато же
Разрешение0,02 °C по SMBus0,02 °C по SMBus
ИнтерфейсSMBus 10–100 кГц, адрес 0x5A; ШИМ 10 битто же
Первое измерениечерез 250 мс после включениято же

Исполнение по напряжению видно по букве в обозначении: Axx — 5 В, Bxx — 3 В. Режим сна есть только у 3-вольтового исполнения. Исполнение на 5 В можно питать от 8–16 В с внешним транзистором через встроенный стабилитрон 5,7 В на выводе SCL/Vz (разд. 5.5), но тогда шина работает, только если на VDD принудительно поданы стабилизированные 5 В.

Подключение MLX90614 к микроконтроллеру по SMBusПитание 3 В (исполнение MLX90614Bxx) подаётся на вывод 3 (VDD); рядом с ним между питанием и общим проводом стоит конденсатор C1 100 нФ, вывод 4 (VSS) — на общем проводе. Вывод 2 (SDA) соединён с микроконтроллером и подтянут резистором R1 к тому же питанию, вывод 1 (SCL) — тоже, через резистор R2. Металлический корпус соединён только с VSS.MLX90614TO39VDD3SDA2SCL1VSS4МКSDASCL3 В (Bxx)C1100 нФR1R2Axx — 4,5–5,5 В,Bxx — 2,6–3,6 Вадрес 0x5A, такт SMBus 10–100 кГц;корпус соединяют только через VSS
MLX90614Bxx на шине SMBus по рис. 35 даташита Melexis: питание 3 В на вывод 3, конденсатор 100 нФ, подтяжки SDA и SCL к тому же питанию, корпус — только через VSS

Шина. SMBus совместима с I²C по уровням и форме обмена, но с двумя отличиями, которые важны для MLX90614: частота такта — не ниже 10 кГц и не выше 100 кГц, а низкий уровень на SCL дольше 27–33 мс сбрасывает обмен по таймауту. Значения подтяжек подбирают по ёмкости линий в калькуляторе подтяжек I²C. Выводы SDA и SCL имеют диоды на VDD, поэтому неработающий, обесточенный датчик нагружает шину — его нельзя оставлять без питания на общей шине с другими устройствами (разд. 5.1). Адрес хранится в EEPROM (ячейка 0x0E), так что на одну шину можно поставить до 127 датчиков, предварительно назначив каждому свой адрес; двух с одинаковым адресом на шине быть не должно.

Регистры. Команда — это адрес ячейки с префиксом: 000x xxxx — RAM, 001x xxxx — EEPROM, 0xFF — уход в сон. Температура датчика — в RAM 0x06, объекта — в RAM 0x07 (у двухзонного — ещё 0x08). Чтение слова идёт младшим байтом вперёд, за ним байт PEC — контрольная сумма SMBus.

Пересчёт. Единица кода — 0,02 К, старший бит — флаг ошибки:

T [∘C]=0,02⋅N−273,15.T\ [^\circ\text{C}] = 0{,}02 \cdot N - 273{,}15.

Пример из даташита: 0x3AF7 = 15 095, 15 095 · 0,02 = 301,9 К = 28,75 °C. Максимум, который датчик может вернуть, — 0x7FFF, это 382,19 °C.

// MLX90614: object temperature from RAM 0x07 (Melexis datasheet, section 4.1.8)
// i2c_read_reg() is your platform's I2C/SMBus read; the bus clock must be 10..100 kHz.
#define MLX90614_ADDR    0x5A
#define MLX90614_TOBJ1   0x07   // RAM access opcode 000x xxxx

int mlx90614_read_object(float *celsius) {
    uint8_t buf[3];   // LSB, MSB, PEC
    if (i2c_read_reg(MLX90614_ADDR, MLX90614_TOBJ1, buf, 3) != 0) return -1;
    uint16_t raw = (uint16_t)(buf[1] << 8 | buf[0]);
    if (raw & 0x8000) return -2;          // MSB set: error flag
    *celsius = raw * 0.02f - 273.15f;     // 0.02 K per LSB
    return 0;
}

ШИМ и термореле. Вывод SDA можно перевести в режим ШИМ: по умолчанию 10-битный ШИМ передаёт температуру объекта в диапазоне −20…+120 °C с шагом 0,14 °C; диапазон меняют двумя ячейками EEPROM. В режиме термореле тот же вывод переключается при заданной температуре — простой термостат без микроконтроллера. Заводской режим после включения — SMBus.

MLX90640: тепловизионная матрица 32 × 24

MLX90640 — матрица из 768 термочувствительных пикселей в таком же корпусе TO39, с датчиками температуры кристалла и напряжения питания. Сырые данные и калибровочные коэффициенты лежат в памяти, а температуру каждого пикселя вычисляет микроконтроллер по формулам даташита; Melexis выкладывает драйвер на GitHub (mlx90640-library).

Параметр по даташиту Rev. 12MLX90640BAAMLX90640BAB
Поле зрения110° × 75°55° × 35°
Шум NETD при 1 Гц, в среднем по пикселям0,14 К (минимум 0,1)0,25 К (минимум 0,2)
Точность кадра (среднее всех пикселей), объект 0…+100 °C, датчик 0…+50 °C±1 °C±1 °C
Неоднородность пикселей в той же области±0,5 °C в зоне 1, ±1 °C в зоне 2, ±2 °C ± 2 % · |To − Ta| в зоне 3±1 °C в зоне 1, ±2 °C в зоне 2
Точность кадра при датчике ниже 0 °C или выше +50 °C (объект 0…+100 °C)±2 °Cне нормирована (TBD)
Точность кадра при объекте и датчике ниже 0 °C±5 °C (в даташите помечено TBD)не нормирована (TBD)
Частота кадров0,5–64 Гц0,5–64 Гц
Питание3,0–3,6 В, лучше 3,3 ± 0,05 Вто же
Ток15–20–25 мАто же
ИнтерфейсI²C до 1 МГц (FM+), адрес 0x33то же
Температура объекта / датчика−40…+300 °C / −40…+85 °Cто же

Выводы: 1 — SDA, 2 — VDD, 3 — GND, 4 — SCL. Питание Melexis рекомендует держать как можно точнее 3,3 В, ставить 100 нФ и 10 мкФ керамики у выводов VDD и VSS и делать короткими обе дорожки — и к VDD, и к VSS. При долговременном (годы) дрейфе к точности добавляется до ±3 °C для объектов около комнатной температуры.

Где действует точность. Рис. 17 даташита делит плоскость «температура объекта To — температура датчика Ta» на области. Паспортные ±1 °C по кадру и малая неоднородность — только в центральной области: To от 0 до +100 °C при Ta от 0 до +50 °C. У BAA при Ta ниже 0 или выше +50 °C точность кадра — ±2 °C, а неоднородность растёт ещё на 2 % от |To − Ta|; при To и Ta ниже нуля — ±5 °C (с пометкой TBD, остальные области ниже нуля не нормированы); выше +100 °C Melexis просит обращаться к нему, а у BAB за пределами центральной области значения не определены. Кроме того, после включения датчику нужно до 4 мин на тепловую стабилизацию, прежде чем он выйдет на паспортную точность (разд. 12.2.2): первые кадры электрически правильные, но ещё неточные.

Подстраницы и шахматный режим. Матрица измеряется в две подстраницы. По умолчанию — в шахматном порядке, и в нём же матрица откалибрована; Melexis советует этот режим как дающий меньший фиксированный шум. Каждая подстраница обновляется с частотой из регистра 0x800D, полный кадр складывается из двух подстраниц, а температура кристалла Ta обновляется вдвое реже заданной частоты.

Объём обмена. Данные одной подстраницы со служебными словами занимают RAM с 0x0400 по 0x073F — 832 слова, 1664 байта. На шине это около 15 мс при 1 МГц и около 37 мс при 400 кГц, если считать 9 тактов на байт и не учитывать адресацию (наш расчёт). При 64 Гц подстраница обновляется каждые 15,6 мс, поэтому высокие частоты кадров требуют шины на 1 МГц, а на 400 кГц чтение успевает за подстраницей примерно до 16 Гц (подстраница раз в 62,5 мс; наш расчёт). Калибровочные константы лежат в EEPROM с 0x2400 по 0x273F — их читают один раз при старте (с EEPROM Melexis советует работать на 400 кГц) и раскладывают в оперативной памяти микроконтроллера.

EEPROM — не для записи. Ресурс EEPROM MLX90640 — 10 циклов записи. Частоту кадров при каждом включении задают в регистре 0x800D, а не в EEPROM; записывать EEPROM имеет смысл один раз, если датчик должен стартовать с другой частотой без настройки.

Шина на 1 МГц. Ёмкость линий ухудшает обмен. Melexis предлагает уменьшить сопротивление подтяжек (увеличить ток), поставить источники тока или ускорители шины, а если не помогает — снизить частоту; входы матрицы с триггерами Шмитта мало чувствительны к фронтам (разд. 14). Ток стока SDA ограничен 10 мА вместо 20 мА по стандарту FM+ — единственное отступление от спецификации.

Типичные ошибки

  • Исполнение на 5 В от 3,3 В. MLX90614Axx рассчитан на 4,5–5,5 В; на плате с 3,3 В нужен Bxx.
  • Частота шины 400 кГц для MLX90614. Его SMBus — не выше 100 кГц; на общей шине с быстрыми датчиками скорость понижают.
  • Блестящая поверхность. Полированный металл показывает температуру окружения, а не свою; нужна метка с известной ε.
  • Далеко от маленького предмета. Пятно больше предмета — в результат попадает фон.
  • Датчик над тёплой платой. Градиент по корпусу даёт ошибку больше паспортной; датчик выносят и экранируют.
  • Запись частоты кадров в EEPROM MLX90640 при каждом старте. Через десять включений ресурс исчерпан.

Контактные датчики температуры — термисторы, Pt100, термопары и цифровые — разобраны в статье «Датчики температуры», обнаружение людей по тепловому излучению — в статье «PIR-датчики движения».

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

Как подключить MLX90614 к Arduino или ESP32?

По двум проводам SMBus, совместимой с I²C: SDA (вывод 2) и SCL (вывод 1) с подтягивающими резисторами к питанию, конденсатор 100 нФ между VDD и VSS. Важно взять исполнение под своё питание: MLX90614Axx — на 4,5–5,5 В, Bxx — на 2,6–3,6 В. Адрес по умолчанию 0x5A, частота шины — от 10 до 100 кГц, температура объекта — в регистре RAM 0x07.

Почему MLX90614 неправильно меряет температуру металла?

Из-за излучательной способности. Датчик откалиброван для ε = 1, а у грубо полированного алюминия по Melexis она около 0,18, у сильно окисленного — около 0,30. Такая поверхность излучает мало и отражает излучение окружающих предметов, и датчик видит смесь. Помогает краска или матовая лента с известной излучательной способностью на месте измерения — у масляных красок 0,85–0,95.

Какое пятно видит ИК-термометр на расстоянии?

Диаметр пятна D ≈ 2 · L · tg(FOV/2), где L — расстояние, FOV — полный угол поля зрения. У MLX90614 с полем 35° на 10 см это около 6,3 см, с полем 10° — около 1,8 см. Melexis задаёт поле зрения по уровню 50 % чувствительности, так что излучение собирается и из-за края этого пятна — реальная область больше. Датчик показывает среднюю температуру всего, что попало в пятно, поэтому маленький предмет нужно измерять с близкого расстояния или датчиком с узким полем зрения.

Что выбрать: MLX90614 или MLX90640?

MLX90614 — одна точка (или две зоны у xBA): среднее по полю зрения, разрешение 0,02 °C и точность ±0,5 °C около комнатной температуры, ток около 1,4 мА, простой обмен. MLX90640 — матрица 32 × 24 точки, то есть маленькая тепловизионная картинка, но с точностью кадра ±1 °C, током до 25 мА, обменом на 1 МГц и тяжёлым расчётом на микроконтроллере.

Можно ли MLX90614 мерить температуру тела?

Melexis выпускает медицинское исполнение с точностью ±0,2 °C в узком диапазоне около температуры тела; стандартное — ±0,5 °C при 0…+50 °C. Но любой ИК-термометр ошибается от тепловых градиентов, расстояния и излучательной способности, а медицинский термометр должен быть сертифицированным прибором. Самодельное устройство на MLX90614 для диагноза не годится.

Источники

  1. Melexis. MLX90614 Single and dual zone IR sensor in TO39: Datasheet (DOC#3901090614, Datasheet Rev 021, 02-Jun-2026) — Features — калибровка −40…+125 °C для датчика и −70…+380 °C для объекта, точность 0,5 °C при 0…+50 °C, медицинское исполнение, разрешение 0,02 °C, SMBus и 10-битный ШИМ (по умолчанию −20…+120 °C с шагом 0,14 °C), питание 3 и 5 В, ток около 1,4 мА; разд. 1 — результат — средняя температура всего в поле зрения, ±0,5 °C около комнатной, медицинское ±0,2 °C, точность только в тепловом равновесии без градиентов по корпусу, исполнения xCx с компенсацией градиентов, калибровка для ε = 1, настройка 0,1…1,0, фильтр 5,5–14 мкм; разд. 2, табл. 2 — выводы 1 SCL/Vz, 2 SDA/PWM, 3 VDD, 4 VSS, корпус только через VSS; табл. 4–7 — Axx 4,5–5,5 В, Bxx 2,6–3,6 В, ток 1,3 мА, до 2,5 мА, сон 2 мкА (только 3 В), SMBus 10–100 кГц, адрес 0x5A, результат через 250 мс после включения, запись ячейки EEPROM 5 мс, 100 000 циклов при 25 °C; примечание 3 — до 127 устройств; табл. 8 — EEPROM: 0x04 — излучательная способность, round(65535 · ε), по умолчанию 0xFFFF, стирание перед записью; табл. 9 — ячейки 0x04, 0x0F, 0x19 менять только по методике Melexis; RAM: 0x06 Ta, 0x07 Tobj1, 0x08 Tobj2; коды команд 000x xxxx (RAM), 001x xxxx (EEPROM), 0xFF — сон; рис. 6 — чтение RAM 0x07 → 0x3AD2; разд. 4.1.8 — 0,02 К на единицу, старший бит — флаг ошибки, пример 0x3AF7 → 28,75 °C; табл. 19 — поле зрения xAA 90°, xBA 70° (две зоны), xCC 35°, xCF 10°, xCH 10°, xCI 5°, xCK 13°; разд. 5.1 — диоды SDA/SCL на VDD, без питания датчик нагружает шину; разд. 5.5 — питание 8–16 В через Vz; разд. 5.7 — загрязнение окна и тепловые градиенты; разд. 5.8 — алюминий около 0,18, окисленный 0,30, пластмассы 0,84–0,95, масляные краски 0,85–0,95, ε + ρ + τ = 1
  2. Melexis. MLX90640 32x24 IR array: Datasheet (3901090640, Revision 12, December 3, 2019) — разд. 1 — 32 × 24 пикселя, NETD 0,1 К ср. кв. при 1 Гц, частота кадров 0,5–64 Гц, 3,3 В, ток меньше 23 мА, поле зрения 55° × 35° и 110° × 75°, −40…+85 °C, объекты −40…+300 °C, драйвер на GitHub; разд. 3 — 768 пикселей, датчики Ta и VDD, данные в RAM; табл. 3 — 1 SDA, 2 VDD, 3 GND, 4 SCL; табл. 4 — рабочий максимум 3,6 В, перенапряжение 5 В; табл. 5 — 3,0–3,3–3,6 В, ток 15–20–25 мА, адрес 0x33 по умолчанию (0x00 не использовать), I²C до 1 МГц, EEPROM — 10 циклов записи, 5 мс на ячейку, операции с EEPROM на 400 кГц; примечание 1 — 3,3 ± 0,05 В; разд. 10.4 — частота задаётся в 0x800D, подстраницы, Ta обновляется вдвое реже; разд. 10.5 — шахматный режим по умолчанию, калибровка в нём; рис. 10–15 — RAM 0x0400–0x07FF (данные 0x0400–0x073F), EEPROM 0x2400–0x273F; разд. 12.1 — точность только в установившемся изотермическом режиме и если объект заполняет поле зрения, ±1 °C по кадру, однородность ±1 °C (зона 1) и ±2 °C (зона 2), долговременный дрейф до ±3 °C около комнатной; табл. 14 — NETD при 1 Гц: BAA 0,14 К (не меньше 0,1), BAB 0,25 К (не меньше 0,2); табл. 15 — BAA 110° × 75°, BAB 55° × 35°; разд. 14 — загрязнение, градиенты, нагрев корпуса, ёмкость шины и подтяжки, 100 нФ и 10 мкФ у выводов питания

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