Бесконтактные ИК-термометры и тепловизионные матрицы 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):
где ε — излучательные способности, α — поглощательная способность датчика, σ — постоянная Стефана — Больцмана, 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). За этими направлениями чувствительность не нулевая, поэтому пятно по формуле
— оценка снизу: часть сигнала приходит из кольца вокруг него. Чтобы фон не влиял, предмет берут заметно больше расчётного пятна.
| Исполнение MLX90614 | Поле зрения | Пятно на 10 см (наш расчёт) |
|---|---|---|
| xAA | 90° | около 20 см |
| xBA (две зоны) | 70° на каждую зону | — |
| xCC | 35° | около 6,3 см |
| xCK | 13° | около 2,3 см |
| xCF, xCH | 10° | около 1,8 см |
| xCI | 5° | около 0,9 см |
Если предмет меньше пятна, в среднее попадает фон, и показание сдвигается к его температуре. Для MLX90640 Melexis прямо оговаривает: точность действительна, только если объект целиком заполняет поле зрения (разд. 12.1).
Тепловые градиенты
Точность датчика гарантирована только в тепловом равновесии, когда по его корпусу нет перепада температуры. Горячая электроника позади датчика, нагреватель или охладитель рядом, горячий или холодный предмет вплотную нагревают не только чувствительный элемент, но и корпус — и показание уходит. Сильнее всего это сказывается на исполнениях с узким полем зрения (xxI, xxF, xxK): от объекта приходит меньше энергии. В исполнениях xCx градиент измеряется внутри и компенсируется, но не полностью (MLX90614, разд. 1). Практические меры:
- держать датчик подальше от стабилизаторов, процессора и силовых элементов, не прижимать к тёплой плате;
- не допускать резких перепадов: после включения или переноса дать датчику прийти в равновесие;
- металлический корпус MLX90614 соединять только через VSS — Melexis не рекомендует других электрических соединений с ним по причинам ЭМС и изотермичности;
- держать окно чистым: загрязнение фильтра даёт неизвестную дополнительную фильтрацию и ошибки (разд. 5.7);
- следить, чтобы в поле зрения не попадали края отверстия в корпусе прибора: они тоже излучают.
MLX90614: одна точка по SMBus
MLX90614 — термометр в корпусе TO39 с четырьмя выводами: термобатарея, малошумящий усилитель, 17-битный АЦП и процессор обработки. С завода он откалиброван и выдаёт готовую температуру.
| Параметр по даташиту Rev 021 | MLX90614Axx | MLX90614Bxx |
|---|---|---|
| Питание | 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 по SMBus | 0,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 В.
Шина. 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 К, старший бит — флаг ошибки:
Пример из даташита: 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. 12 | MLX90640BAA | MLX90640BAB |
|---|---|---|
| Поле зрения | 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 для диагноза не годится.
Источники
- 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
- 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 мкФ у выводов питания
Нашли ошибку?
Смотрите также
- ДатчикиТок, температура, газы, вес, движение, ИК и звук: подключение к МК, расчёт и калибровка
- Датчики температуры: NTC, Pt100, термопара, DS18B20, TMP117Термистор, Pt100, термопара, микросхемы и датчик МК: точность, подключение, самонагрев
- PIR-датчики движенияПироэлектрический принцип, зоны линзы, EKMC и EKMB: дальность, ток, выход, помехи, монтаж
- SMBusШина на основе I²C: таймаут, пороги, PEC
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины
- ТермопараДатчик температуры из двух разнородных проводников
- Блокировочный конденсаторМестный запас заряда у выводов питания: ёмкость, тип, разводка
- Какую версию MLX90614 выбрать?Буквы кода: питание (A, B, D), зоны и компенсация (A, B, C), поле зрения (A, C, F, H, I, K)
- Как подключить два MLX90614 к одной шине I²C?Сменить адрес одного датчика в EEPROM 0x0E (команда 0x2E), выключить и включить питание