По многим причинам иногда довольно сложно использовать датчик температуры (например, DS18b20), например, соприкоснуться им с объектом, температуру которого нужно измерить. Стало очень интересно попробовать этот симпатичный бесконтактный датчик температуры MLX90614, который измеряет 2 вида температур - температуру окружающей среды и температуру объекта на расстоянии.
Спецификация
Остановимся на характеристиках сенсора MLX90614:
- -40°C ... + 125°C для температуры окружающей среды;
- -70°C ... + 380°C для температуры объекта;
- высокая точность 0,5°C в широком диапазоне температур (0°C ... + 50° C для обоих вариантов);
- разрешение измерения 0,02°C;
- I2C связь;
- высокая (медицинская) точность калибровки;
- при измерении температуры соблюдайте дистанцию измерения 1 см.
Это довольно хороший датчик определения температуры для горячих объектов, таких как приготовленная пища или чипы на материнских платах. Кроме того, датчик MLX90614 также хорошо для холода, если, например, вы хотите измерить температуру мороженого. Отсутствие контакта с пищей при измерениях делает этот сенсор очень ценным устройством. И, конечно, вы можете использовать этот датчик для измерения температуры окружающей среды (проект метеостанции).
Комплектующие
Для понимания работы датчика MLX90614 нам хорошо бы иметь под рукой ряд комплектующих:
- Arduino Nano (или любой Arduino или микроконтроллер)
- USB-кабель для Arduino Nano
- Датчик MLX90614
- Перемычки
- Макетная плата
Схема соединения
Схема соединения датчика и Arduino Nano представлена ниже:
Схема проста, так как датчик использует связь I2C:
- Подключите Vin к 3,3 Вольт или 5 Вольт.
- Подключите GND к GND Arduino.
- Подключите SDA к A4 на Arduino.
- Подключите SCL к A5 на Arduino.
Также мы приводим схему нашего устройства измерения температуры:
Код
Код для проекта измерителя температуры на основе датчика MLX90614 прост. Во-первых, вам нужна библиотека Adafruit:
Откройте папку библиотеки и разархивируйте ее.
В функции настройки с помощью mlx.begin() вы инициализировали датчик. В функции цикла мы используем Serial Monitor (последовательный монитор). Для чтения температуры окружающей среды вы используете mls.readAmbientTempC(). Для бесконтактных измерений mlx.readObjectTempC().
Если вы хотите получать температуру в градусах Фаренгейта, просто замените «C» на «F», т.е. используем mls.readAmbientTempF() и mls.readAmbientTempF().
#include <Wire.h> #include <Adafruit_MLX90614.h> mlx = Adafruit_MLX90614(); void setup() { Serial.begin(9600); mlx.begin(); } void loop() { Serial.println("Temperature from MLX90614:"); Serial.print("Ambient: "); // Окружающая среда Serial.print(mlx.readAmbientTempC()); Serial.println(" °C"); Serial.print("Contactless: "); // Бесконтактное измерение температуры объекта Serial.print(mlx.readObjectTempC()); Serial.println(" °C"); Serial.println(); delay(1000); }
Таким образом мы увидим в процессе измерения следующие данные (нажмите на картинку для увеличения):
Отрицательные значения температуры - это измерения температуры мороженого. Главное, проводить измерения не слишком близко и не слишком далеко от объекта. Также проверяйте, направлен ли датчик на объект.
2 февраля 2021 в 14:28
При запуске данного куска кода вылезает ошибка error: ‘mlx’ does not name a type; did you mean ‘max’?
5 августа 2021 в 11:48
Допиши так Adafruit_MLX90614 mlx = Adafruit_MLX90614();