MLX90614 GY-906 Бесконтактный датчик температуры

Купить MLX90614 GY-906 Бесконтактный датчик температуры

Бесконтактный инфракрасный сенсор

2-7-12
Нет в наличии
795

MLX90614 - это инфракрасный датчик с бесконтактным считыванием температуры. В модуле GY906 имеется три режима: SMBus, термостат и ШИМ(PWM). По умолчанию установлен режим SMBus, он совместим с протоколом I2C. Режим ШИМ пропорционально температуре изменяет скважность. Подходит для подключения к любым микроконтроллерам и Arduino.

Характеристики модуля GY-906:

Компания производитель сенсора Melexis Microelectronics Integrated system
Интерфейс I2C (IIC)
Адрес на шине I2C 0x5A
Встроенный ШИМ(PWM) 10 бит
Встроенный аналого-цифровой преобразователь АЦП(ADC) 17 бит
Диапазон измерения температуры -70 ℃ .. +382 ℃
Погрешность измерений при комнатной температуре ± 0,5 ℃
Разрешение 0,02 ℃
Температура хранения -40℃ .. +125 ℃
Рабочее напряжение 3,3 В
Режим сна Да

Проверочный код:

#include <wire.h>

#define MLX90614_I2CADDR 0x5A // Стандартный I2C адрес датчика

void setup() {
  Serial.begin(115200);
  while (!Serial); 
  
  Wire.begin();
  Serial.println("--- Тест MLX90614 (Без NAN) ---");
}

void loop() {
  float objectTemp = readTemperature(0x07);  // Температура объекта
  float ambientTemp = readTemperature(0x06); // Температура датчика

  // ПРОСТАЯ ПРОВЕРКА: если функция вернула -999.0, значит была ошибка
  if (objectTemp == -999.0 || ambientTemp == -999.0) {
    Serial.println("Ошибка: Датчик не отвечает! Проверьте провода или питание.");
  } else {
    Serial.print("Окружающая среда: ");
    Serial.print(ambientTemp, 2);
    Serial.print(" °C | Объект: ");
    Serial.print(objectTemp, 2);
    Serial.println(" °C");
  }

  delay(1000); 
}

// Функция чтения, которая возвращает -999.0 в случае любой ошибки
float readTemperature(uint8_t reg) {
  Wire.beginTransmission(MLX90614_I2CADDR);
  Wire.write(reg);
  
  // Repeated Start (важно для новых чипов)
  uint8_t error = Wire.endTransmission(false); 
  if (error != 0) {
    return -999.0; // Ошибка: датчик не отозвался на шине
  }

  // Запрашиваем данные
  uint8_t bytesReceived = Wire.requestFrom(MLX90614_I2CADDR, 3);
  if (bytesReceived < 2) {
    return -999.0; // Ошибка: датчик не прислал байты температуры
  }

  uint8_t dataLow = Wire.read();
  uint8_t dataHigh = Wire.read();
  
  if (bytesReceived == 3) {
    Wire.read(); // Просто очищаем буфер от байта PEC
  }

  // Собираем 16-битное число
  uint16_t rawData = (dataHigh << 8) | dataLow;

  // Считаем температуру по формуле Melexis
  float tempCelsius = (rawData * 0.02) - 273.15;

  // Фильтр диких значений (если клон завис и шлет мусор)
  if (tempCelsius < -70.0 || tempCelsius > 380.0) {
    return -999.0; 
  }

  return tempCelsius;
}
Размеры 17 × 12 × 6 мм
Вес 7 г
Цвет синий

Категории: Датчики фотоэлектрические Электронные модули Датчики

MLX90614 GY-906 Бесконтактный датчик температуры отзывы

Оставьте отзыв об этом товаре первым!