ДатчикиПогода

MLX90614

Melexis · MLX90614ESF-AAA, TO-39, 5 В; Adafruit PID 1748

Бесконтактная температура поверхности. Пример для 5-вольтового MLX90614ESF-AAA в корпусе TO-39 (Adafruit PID 1748), без breakout.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает MLX90614ESF-AAA, TO-39, 5 В; Adafruit PID 1748

MLX90614 оценивает температуру объекта по тепловому инфракрасному излучению и отдельно сообщает температуру собственного чувствительного узла (ambient). Ambient не обязательно равна температуре воздуха в комнате.

Пример относится к MLX90614ESF-AAA: 5-вольтовому сенсору в металлическом корпусе TO-39, поставлявшемуся как Adafruit PID 1748. У него широкое поле зрения около 90°. Другие суффиксы MLX90614 отличаются напряжением, оптикой и калибровкой; не переносите параметры AAA на весь модельный ряд.

Объект должен заполнять поле зрения, иначе в результат попадёт окружающий фон. Отражающий металл и низкая излучательная способность могут давать температуру отражённых источников. Обычное стекло не является прозрачным окном для такой термометрии. Перед оценкой дождитесь теплового равновесия сенсора и избегайте его нагрева платой контроллера.

Фабричная калибровка и цифровое разрешение не отменяют погрешность установки. Проверяйте коэффициент излучения и результат по подходящему эталону; не переписывайте EEPROM наугад. Данный вариант и пример не являются клиническим термометром или средством диагностики.

На фото только MLX90614 в четырёхвыводном корпусе TO-39; отдельные резисторы исключены. Суффикс и напряжение по внешнему виду не определяются. MLX90614. Фото: lady ada / Adafruit. Оригинал: https://learn.adafruit.com/assets/14657 . Лицензия фотографии: CC BY-SA 3.0, https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: Выделен только реальный четырёхвыводный сенсор TO-39; два отдельных резистора из комплекта исключены. Удалены исходный фон и падающая тень. Пропорциональное масштабирование, размещение на предоставленном фоне и JPEG-сжатие. Геометрия, цвет, маркировка и видимые детали не перерисовывались. Адаптация фотографии распространяется по той же лицензии.

Схема распиновки

Авторская распиновка SLDV LAB для MLX90614ESF-AAA (5 В), вид снизу, выводами к наблюдателю, ключ сверху. Перед подачей питания проверьте полный суффикс; внешний вид корпуса не подтверждает напряжение.

Источники: 1, 2, 3, 4. Авторская схема SLDV LAB по фактам документации.

Характеристики

Диапазон температуры объекта
-70–380 °C
Диапазон температуры сенсора AAA
-40–85 °C
Номинальное поле зрения AAA
90 °
Шаг цифровой температуры SMBus
0.02 °C
Заводской адрес SMBus
0x5A; может быть перепрограммирован в EEPROM
Исполнение примера
TO-39, 4 вывода; без регулятора
Точность
См. температурную диаграмму datasheet; шаг 0,02 °C не равен погрешности
Интерфейс
I²C
Питание модуля
MLX90614ESF-AAA: VDD 4,5–5,5 В; пример UNO R3 — 5 В и отдельные подтяжки SDA/SCL по 10 кОм к 5 В. Это голый четырёхвыводный сенсор, не плата со стабилизатором. Варианты Bxx на 3 В и модули GY-906 требуют другой проверки питания/подтяжек.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
Pin 3 VDD5VUNO R3; вариант AAA 5 В. Конденсатор 100 нФ между VDD и VSS рядом с корпусом.
Pin 4 VSSGNDОбщая земля. Металлический корпус связан с VSS.
Pin 2 SDA / PWMA4 / SDAОтдельный резистор 10 кОм от SDA к 5 В.
Pin 1 SCL / VzA5 / SCLОтдельный резистор 10 кОм от SCL к 5 В. Нумерация по виду снизу в datasheet, проверить ключ корпуса.

Подходит для Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать MLX90614. Уточни полный суффикс, голый сенсор или breakout, питание, контроллер, материал объекта и расстояние. Основа: MLX90614ESF-AAA 5 В (Adafruit1748), UNO R3, A4/A5, две подтяжки 10 кОм к 5 В, 100 нФ у VDD, 0x5A, Adafruit MLX90614 2.1.6. Дай полный пример с ACK, длиной, проверкой PEC и флагом ошибки данных. Объясни поле зрения 90° именно AAA, emissivity, тепловое равновесие и отличие температуры сенсора от воздуха. Не меняй EEPROM без конкретного плана калибровки и не обещай медицинскую точность.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Библиотека
Adafruit MLX90614 Library 2.1.6

Зависимость Adafruit BusIO; пример использует begin, чтение усилено собственной проверкой PEC.

Адрес SMBus
0x5A

Заводской 7-битный адрес, если ранее не изменён.

Частота шины
100000

100 кГц, repeated start поддерживается Wire UNO R3.

Регистры температуры
0x06 ambient / 0x07 object 1

Слова little-endian; raw × 0,02 − 273,15 даёт °C.

Arduino UNO R3 · полный скетч

cpp
#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx;
const uint8_t ADDRESS = 0x5A;

uint8_t crc8(const uint8_t *data, uint8_t count) {
  uint8_t crc = 0;
  for (uint8_t i = 0; i < count; ++i) {
    crc ^= data[i];
    for (uint8_t b = 0; b < 8; ++b) {
      crc = (crc & 0x80) ? uint8_t((crc << 1) ^ 0x07) : uint8_t(crc << 1);
    }
  }
  return crc;
}

bool readTemperature(uint8_t reg, float &temperature) {
  Wire.beginTransmission(ADDRESS);
  Wire.write(reg);
  if (Wire.endTransmission(false) != 0) return false;
  if (Wire.requestFrom(ADDRESS, uint8_t(3)) != 3) {
    while (Wire.available()) Wire.read();
    return false;
  }
  const uint8_t low = Wire.read();
  const uint8_t high = Wire.read();
  const uint8_t pec = Wire.read();
  const uint8_t packet[] = {uint8_t(ADDRESS << 1), reg,
                           uint8_t((ADDRESS << 1) | 1), low, high};
  if (crc8(packet, sizeof(packet)) != pec || (high & 0x80)) return false;
  const uint16_t raw = uint16_t(low) | (uint16_t(high) << 8);
  temperature = raw * 0.02f - 273.15f;
  return true;
}

void setup() {
  Serial.begin(115200);
  Wire.begin();
  Wire.setClock(100000);
  Wire.setWireTimeout(25000, true);
  delay(500);
  if (!mlx.begin(ADDRESS, &Wire)) {
    Serial.println(F("MLX90614 not found"));
    while (true) delay(1000);
  }
}

void loop() {
  float ambient, object;
  if (!readTemperature(0x06, ambient) || !readTemperature(0x07, object)) {
    Serial.println(F("MLX90614 transfer, PEC or sensor data error"));
  } else if (ambient < -40 || ambient > 85 || object < -70 || object > 380) {
    Serial.println(F("Reading outside AAA specified range"));
  } else {
    Serial.print(F("Sensor_C=")); Serial.print(ambient, 2);
    Serial.print(F(" Object_C=")); Serial.println(object, 2);
  }
  delay(1000);
}

Полный скетч UNO R3, Arduino AVR Boards 1.8.6, Adafruit MLX90614 Library 2.1.6. API begin проверен; собственное чтение SMBus добавляет PEC CRC-8 (полином 0x07) и проверку старшего бита ошибки, которые нельзя приписывать обычному readObjectTempC этой версии: библиотека при чтении PEC игнорирует. Протокол статически сверен с datasheet. Компиляция и аппаратный тест не выполнялись. Serial Monitor: 115200 бод. Проверяйте большую матовую поверхность при стабильной температуре и с известной излучательной способностью, а не маленькое пятно внутри широкого поля зрения. EEPROM и emissivity скетч не изменяет. Резисторы подтяжки и 100 нФ нужны дополнительно; фотография сенсора не означает наличие платы обвязки.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты