MLX90614 GY-906 Бесконтактный датчик температуры
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 Бесконтактный датчик температуры отзывы
Оставьте отзыв об этом товаре первым!