
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 VDD | 5V | UNO R3; вариант AAA 5 В. Конденсатор 100 нФ между VDD и VSS рядом с корпусом. |
| Pin 4 VSS | GND | Общая земля. Металлический корпус связан с VSS. |
| Pin 2 SDA / PWM | A4 / SDA | Отдельный резистор 10 кОм от SDA к 5 В. |
| Pin 1 SCL / Vz | A5 / 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-битный адрес, если ранее не изменён.
- Частота шины
100000100 кГц, 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 нФ нужны дополнительно; фотография сенсора не означает наличие платы обвязки.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.
