MLX90614 - датчик температуры, измеряет температуру объекта бесконтактным способом и температуру окружающей среды на кристалле датчика. Интерфейс I2C/PWM.
Датчик MLX90614 может измерять температуру на кристалле датчика в пределах -40°C...+125 ̊C и температуру объекта бесконтактным способом в пределах -70°C...+380 ̊C с точностью 0.02°C. Для этого используется 17-битный АЦП.
Датчик может быть перепрограммирован для непрерывного измерения температуры с передачей показаний в виде ШИМ сигнала. В режиме ШИМ (PWM) в диапазоне температур -20...120 ̊C, достигается точность показаний 0.14 ̊C за счёт применения 10-битного PWM таймера-счётчика.
На принципиальной электрической схеме, см. рис. 1, два устройства с интерфейсом I2C (Датчик температуры MLX90614 и дисплей SSD1306) подключены к микроконтроллеру ATMega 328. Резисторы R1 и R2 подтягивающие.
Рис. 1. Принципиальная электрическая схема термометра.
#include <Adafruit_GFX.h> // Библиотека для работы с дисплеем
#include <Adafruit_SSD1306.h> // Библиотека дисплея SSD_1306
#define OLED_RESET 7
#include <Wire.h> // Библиотека для работы по протоколу I2C
#include <Adafruit_MLX90614.h> // Библиотека термометра MLX90614
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); // Создаём объект датчик температуры mlx
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET); // создаём объект "дисплей"
void setup() {
mlx.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2C адрес 0x3C
display.setRotation(0); // поворот дисплея
display.fillScreen(1); // заливка дисплея цветом
display.setTextSize(5); // размер шрифта
display.setTextColor(0, 1); // цвет текста, и фона
display.setCursor(0, 0); // позиция курсора X,Y
display.display(); // вывод на экран
}
void loop() {
int t = mlx.readObjectTempC() * 10 + 34; // Округляем и корректируем показания температуры бесконтактного датчика
if (t < 320) {
t = mlx.readAmbientTempC() *10; // Округляем показания температуры датчика температуры корпуса микросхемы
}
display.setCursor(6, 16);
display.print (t/10);
display.print (".");
display.print (t%10);
display.display();
delay(500);
}
Рис. 2. Листинг программы термометра, измеряющего температуру воздуха и бесконтактно температуру тела человека.
Скетч использует 14246 байт (46%) памяти устройства. Всего доступно 30720 байт. Глобальные переменные используют 341 байт (16%) динамической памяти, оставляя 1707 байт для локальных переменных. Максимум: 2048 байт.