Инфракрасный термометр на Ардуино с датчиком MLX90614

Большинство методов измерения температуры требуют некий физический контакт температурного датчика с объектом, температура которого должна быть измерена.

Но по мере развития технологий меняется и способ измерения температуры. Как быть если нам необходимо измерить температуру объекта без физического контакта с ним? В этом нам окажет помощь инфракрасный термометр.

Принцип работы инфракрасных термометров прост - все тела при температуре выше 0° Кельвина (абсолютный ноль) в той или иной степени излучают инфракрасную энергию, которая может быть обнаружена датчиком инфракрасного термометра.

Конструкция инфракрасного термометра имеет оптическую систему, которая фокусирует инфракрасную энергию, излучаемую объектом. Далее инфракрасный датчик преобразует энергию в электрический сигнал, который затем может быть передан в микроконтроллер для интерпретации и отображения в единицах температуры.

Сегодня мы соберем термометр, используя инфракрасный датчик MLX90614, Arduino Uno и LCD дисплей Nokia 5110 для отображения измеренной температуры.

MLX90614 представляет собой инфракрасный датчик для измерения температуры бесконтактным способом. Он может измерять температуру в диапазоне от -70 до 380 градусов Цельсия с точностью около 0,5°C.

фото датчика MLX90614

Ниже перечислены некоторые особенности датчика MLX90614:

  • Малый размер и низкая стоимость.
  • Легко интегрировать.
  • Заводская калибровка в широком температурном диапазоне: от -40°C до 125°C для температуры окружающей среды и от -70°C до 380°C для температуры объекта.
  • Высокая точность: 0,5°C в широком температурном диапазоне 0 .. + 50°C
  • Разрешение измерения: 0,02 ° C
  • Настраиваемый выход ШИМ для непрерывного чтения
  • Датчик доступен в версиях с питанием от 3В и 5В

Схема подключения MLX90614 к Ардуино

Схема подключения очень проста, потому что дисплей используется в виде шилда для Ардуино, который избавит нас от необходимости подключения его с помощью соединительных проводов, и все, что нам нужно сделать, это подключить дисплей к Ардуино.

NOKIA 5110 SHIELD

Соединение Ардуино и датчика температуры показано на схеме ниже.

Схема подключения MLX90614 к Ардуино

MLX90614-Arduino Uno

  • VCC-5V
  • GND-GND
  • SCL-A5
  • SDA-A4

Скетч инфракрасного термометра

Наша цель сегодня - измерить температуру, обработать ее и отобразить на LCD дисплее. Для того чтобы мы могли легко общаться с температурным датчиком MLX90614, мы используем библиотеку температурного датчика mlx90614 от Adafruit и для удобного вывода текста на экран графическую библиотеку Nokia 5110.

Мы начинаем, как обычно, с подключения всех библиотеки, которые нам понадобятся в работе:

#include <LCD5110_Graph.h>
#include <Wire.h>
#include <Adafruit_MLX90614.h>

Затем создадим объект библиотеки LCD, определяя контакты Ардуино к которым подключены контакты LCD:

LCD5110 lcd(2,3,4,6,5); // при использовании шилда Nokia 5110
// LCD5110 lcd(8,9,10,12,11); //при использовании обычного дисплея Nokia 5110

После этого мы пропишем переменные для шрифтов и других элементов, необходимых для отображения, после чего создадим экземпляр датчика температуры:

char TEMPERATURE = 'C';
extern uint8_t SmallFont[];
extern uint8_t BigNumbers[];
extern uint8_t uic[];
extern uint8_t uif[];
extern uint8_t splash[];
Adafruit_MLX90614 mlx = Adafruit_MLX90614();

Далее напишем функцию void setup(). Начнем с кода, инициализирующий LCD-дисплей и датчик температуры, после чего используем LCD.drawbitmap() для создания пользовательского интерфейса на дисплее.

Интерфейс уже был разработан и преобразован в C-файл и уже прикреплен к коду. Причина использования пользовательского интерфейса заключается в возможности отображения данных более удобным и эффективным способом:

void setup()
{
Serial.begin(9600);
lcd.InitLCD(60);
mlx.begin();
lcd.drawBitmap(0, 0, splash, 84, 48);
lcd.update();
delay(3000);
}

Далее идет функция void loop(). Работа функции void loop() проста. Мы начинаем с определения единицы измерения, в которой должна отображаться температура (в градусах Цельсия или Фаренгейта), затем мы читаем температуру от датчика температуры и выводим на экран.

void loop()
{
String temperature="";
lcd.clrScr();
if(TEMPERATURE == 'C')
{
temperature = String(mlx.readObjectTempC(),1);
lcd.drawBitmap(0, 0, uic, 84, 48);
}else
{
temperature = String(mlx.readObjectTempF(),1);
lcd.drawBitmap(0, 0, uif, 84, 48);
}
if(temperature.length()>4)
{
temperature.remove(3,2);
}
Serial.println(temperature);
lcd.setFont(BigNumbers);
if(temperature.length()==4)
{
lcd.print(temperature,5,19);
}else
{
lcd.print(temperature,15,19);
}

Полный код проекта:

Инфракрасный термометр Arduino/MLX90614 (658 b, скачано: 86)

Скопируйте код и загрузите его в Ардуино, затем направьте датчик температуры на объект, температуру которого вы хотите измерить. Через некоторое время температура этого объекта будет показана на экране.

редактор

Добавить комментарий

Ваш электронный адрес не будет опубликован.

*