цифровая электроника
вычислительная техника
встраиваемые системы

 

Инфракрасный термометр на Arduino и MLX90614 своими руками

Автор: Mike(admin) от 27-04-2020, 03:55

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


Инфракрасный термометр на Arduino и MLX90614 своими руками

В этом проекте мы создадим бесконтактный ИК термометр используя Arduino и инфракрасный температурный датчик. Эта конструкция будет создана с использованием бесконтактного датчика температуры под названием MLX90614; следовательно, его можно использовать не только для измерения температуры тела, но также для измерения температуры компонентов, температуры поверхности, в системах вентиляции с подогревом и многого другого. Конечно, эти тепловые пистолеты легко доступны на рынке от известных производителей, таких как Fluke, Flir и т. д. но они довольно дорогие и, кроме того, интереснее, создавать свои собственные гаджеты.


Перед тем как приступить к проекту, важно знать, как работает датчик MLX90614. На рынке доступно много датчиков температуры, и мы широко используем датчики DHT11 и LM35 для многих применений, где необходимо измерять температуру воздуха. Но здесь для теплового пистолета нам нужен датчик, который мог бы измерять температуру конкретного объекта (не окружающей среды) без непосредственного контакта с объектом. Для этого у нас есть бесконтактные датчики температуры, которые используют лазер или ИК для расчета температуры объекта. MLX90614 – один из таких датчиков, который использует ИК-энергию для определения температуры объекта.


MLX90614

Датчик MLX90614 компанией Melexis Microelectronics, в него встроено два устройства: одно – инфракрасный термобатарея (датчик), а другое – устройство обработки сигналов DSP (вычислительный модуль). Он работает на основе закона Стефана-Больцмана, который гласит, что все объекты излучают инфракрасную энергию, и интенсивность этой энергии будет прямо пропорциональна температуре этого объекта. Чувствительный элемент в датчике измеряет, сколько ИК-энергии излучается целевым объектом, и вычислительный модуль преобразует ее в значение температуры с использованием встроенного 17-разрядного АЦП и выводит данные через протокол связи I2C. Датчик измеряет как температуру объекта, так и температуру окружающей среды для калибровки значения температуры объекта. Особенности датчика MLX90614 следующие.


  • Рабочее напряжение: от 3,6 В до 5 В
  • Диапазон температур объекта: от -70° C до 382,2° C
  • Диапазон температур окружающей среды: от -40° C до 125° C
  • Разрешение / Точность: 0,02° C

Одним из вопросов, на который технические характеристики не дают прямого ответа, является измерение расстояния между датчиком и объектом. Значение этого расстояния задается термином Поле зрения (FOV), для нашего датчика поле зрения составляет около 80°.


MLX90614

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


Принципиальная схема подключения компонентов инфракрасного термометра довольно проста и приведена далее.


Инфракрасный термометр на Arduino и MLX90614 своими руками

Вся схема питается от батареи 9 В через кнопку. При нажатии кнопки батарея 9 В подключается к выводу RAW Arduino, который затем регулируется до 5 В с помощью встроенного регулятора напряжения. Эти 5 В затем используется для питания модуля OLED, датчика и лазерного диода.


Инфракрасный термометр на Arduino и MLX90614 своими руками

Для упрощения конструирования корпуса термометра можно воспользоваться 3D моделью (https://www.thingiverse.com/thing:3706609).


Инфракрасный термометр на Arduino и MLX90614 своими руками

Программа для Arduino должна прочитать значение температуры с MLX90614 и отобразить его на OLED-дисплее. К счастью для нас, программа будет очень простой, поскольку Adafruit предоставила нам библиотеку (https://github.com/sparkfun/SparkFun_MLX90614_Arduino_Library) для удобного чтения данных с MLX90614. Полный код инфракрасного термометра на Arduino представлен далее.



#include <Wire.h> 
#include <SparkFunMLX90614.h> 

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

IRTherm therm;

void setup() 
{
  Serial.begin(9600); 
  therm.begin(); 
  therm.setUnit(TEMP_C); 

   display.begin(SSD1306_SWITCHCAPVCC);
   display.clearDisplay();
   display.setRotation(2);
  
}

String temperature; 
char runner;

void loop() 
{
  if (therm.read())
  {
    temperature = String(therm.object(), 2);
    Serial.print("Object: ");
    Serial.print(temperature); Serial.println("C");
    display.clearDisplay();
    runner++;
    delay(5);
  }

  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(display.width()/4,display.height()/12);
  
  if (therm.object()>=100)
  display.setCursor(display.width()/4,display.height()/12);
  
  display.println(temperature);

  display.drawLine(display.width()/runner,display.height() - display.height()/2.5, display.width()/runner+1, display.height() - display.height()/2.5, WHITE);

  display.setCursor(0,display.height()-display.height()/4);
  display.setTextSize(1);
  display.println("   Arduino Thermlgun");
  display.setCursor(display.width()- display.width()/4,display.height()/12);
  display.println("deg C");
  display.display();

  if (runner>20)
  runner=0;
}

Как только код Arduino будет готов, мы можем загрузить его в наше оборудование с помощью внешнего программатора TTL или платы FTDI, поскольку у Arduino pro mini нет встроенного программатора. Затем просто нажмите кнопку, чтобы активировать тепловую пушку, и вы заметите, что лазерный луч падает на объект, а температура объекта отображается на OLED-экране, как показано на следующем изображении.


Инфракрасный термометр на Arduino и MLX90614 своими руками



© digitrode.ru


Теги: Arduino, датчик температуры




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий