Serwisy partnerskie:
Close icon
Serwisy partnerskie

Termometr na podczerwień z Arduino i czujnikiem temperatury MLX90614

Article Image
Elmax
Większość technik pomiaru temperatury wymaga pewnego rodzaju fizycznego kontaktu pomiędzy czujnikiem temperatury a obiektem lub środowiskiem, którego temperatura ma być mierzona, ale wraz z postępem technologicznym to również uległo zmianie. Pojawiła się potrzeba możliwości pomiaru temperatury obiektu bez kontaktu fizycznego. Potrzeba ta przyniosła pomiar temperatury za pomocą czujników podczerwieni.

Zasada działania termometrów na podczerwień jest prosta, wszystkie ciała o temperaturze powyżej 0 Kelwinów (zero absolutne) emitują energię podczerwoną, która może być wykryta przez czujnik temperatury na podczerwień. W jego konstrukcji znajduje się soczewka, która skupia energię podczerwieni emitowaną przez obiekt przed detektorem. Detektor przekształca tę energię w sygnał elektryczny, który następnie może być przekazany do mikrokontrolera w celu interpretacji i wyświetlenia w jednostkach temperatury po skompensowaniu zmian temperatury otoczenia. W tym projekcie zbudujemy termometr na podczerwień, używając Arduino Uno, czujnika temperatury MLX90614 IR oraz wyświetlacza LCD Nokia 5110 do wyświetlania zmierzonej temperatury.

MLX90614 to czujnik temperatury na podczerwień do bezdotykowego pomiaru temperatury. Może on mierzyć temperaturę w zakresie od -70 do 380°C z dokładnością do około 0,5°C w temperaturze pokojowej.

Niektóre z cech tego czujnika są wymienione poniżej:

  1. Mały rozmiar i niski koszt
  2. Łatwy do integracji
  3. Fabrycznie skalibrowany w szerokim zakresie temperatur: -40 do 125°C dla temperatury czujnika i -70 do 380°C dla temperatury obiektu
  4. Wysoka dokładność 0,5°C w szerokim zakresie temperatur (0…+50°C zarówno dla Ta jak i To)
  5. Rozdzielczość pomiaru 0,02°C
  6. Wersje jedno i dwustrefowe
  7. Interfejs cyfrowy zgodny z SMBus do szybkiego odczytu temperatury i budowy sieci czujników
  8. Wyjście PWM dostosowane do ciągłego odczytu
  9. Dostępny w wersjach 3 V i 5 V
Shield z wyświetlaczem Nokia 5110

W tym projekcie po raz pierwszy użyjemy shielda LCD Nokii 5110, o ile kilka razy używaliśmy innej wersji wyświetlacza, o tyle nigdy nie używaliśmy wersji shielda. Do shielda dołączony jest joystick oraz przycisk. Jest on kompatybilny z Arduino Uno i większością innych płytek Arduino.

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić

Schemat

Schemat tego projektu jest bardzo prosty, ponieważ wyświetlacz jest dostarczany jako shield, co eliminuje potrzebę łączenia go przewodem i wszystko co musimy zrobić to podłączyć wyświetlacz do Arduino. Połączenie pomiędzy Arduino a czujnikiem temperatury pokazane jest na schemacie poniżej.

Schemat podłączenia czujnika IR

Aby ułatwić śledzenie połączeń, poniżej zostały one dokładniej opisane.

Podłączenie czujnika IR z Arduino
MLX90614
Arduino Uno
VCC
5V
SCL
A5
SDA
A4
GND
GND

Przejrzyj jeszcze raz połączenia, aby upewnić się, że wszystko jest tak, jak powinno być.

Kod

Naszym celem w tym projekcie jest pomiar temperatury, przetworzenie jej i wyświetlenie na wyświetlaczu LCD. Aby umożliwić łatwą komunikację z czujnikiem temperatury mlx90614, użyjemy biblioteki czujnika temperatury mlx90614 od Adafruit oraz biblioteki grafu LCD Nokii 5110 do łatwego wyświetlania tekstu na ekranie. Biblioteki te można pobrać poprzez link dołączony do każdej z nich w zdaniu powyżej.

Aby pokrótce wyjaśnić kod projektu, zaczynamy jak zwykle od włączenia wszystkich bibliotek, które będą potrzebne w kodzie.

# Written by Nick Koumaris
# info@educ8s.tv

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

Następnie tworzymy obiekt biblioteki LCD, podając piny Arduino, do których podłączone są piny LCD.

LCD5110 lcd(2,3,4,6,5); //Use this line with the shield

Po wykonaniu tych czynności tworzymy zmienne dla czcionek i innych elementów potrzebnych do wyświetlania, a następnie tworzymy instancję czujnika temperatury.

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();

Następnie piszemy funkcję void setup. Rozpoczynamy kod od inicjalizacji wyświetlacza LCD i czujnika temperatury, po czym używamy funkcji LCD.drawbitmap() do stworzenia interfejsu użytkownika na wyświetlaczu. Interfejs został już zaprojektowany i przekonwertowany do pliku C i jest już dołączony do kodu. Powodem użycia UI jest możliwość wyświetlania danych w bardziej przyjazny i efektywny sposób. W przeszłości stworzyliśmy wiele tutoriali pokazujących jak tworzyć własne grafiki dla wyświetlacza LCD Nokii 5110. Jeden z takich poradników jest dostępny tutaj.

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

Kolejną funkcją jest funkcja void loop. Zakres działania funkcji void loop jest prosty. Zaczynamy od określenia jednostki miary w jakiej ma być wyświetlana temperatura albo w Celsjuszach albo w Fahrenheitach, następnie odczytujemy temperaturę z czujnika temperatury i wyświetlamy ją na wyświetlaczu. Dla dokładności, pomiędzy odczytami wstawiamy opóźnienie czasowe 1000 ms, aby zapewnić i zapobiec zderzeniu się żądań odczytu.

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);
  }

Kompletny kod projektu znajduje się w sekcji download .

Demo

Upewnij się, że projekt jest podłączony zgodnie z opisem w sekcji schematy. Skopiuj kod i załaduj go na płytkę Arduino, a następnie skieruj czujnik temperatury na obiekt, którego temperaturę chcesz zmierzyć. Po chwili na ekranie pojawi się temperatura tego obiektu.

Termometr na podczerwień z Arduino i czujnikiem temperatury MLX90614

Oprócz bezkontaktowego pomiaru temperatury, czujnik temperatury MLX90614 IR może być również użyty do pomiaru temperatury otoczenia, ale nie będziemy się tym zajmować w tym projekcie.

Niektóre z głównych zastosowań tego projektu obejmują:

  1. Ogrzewanie i klimatyzacja
  2. Monitorowanie systemów - monitorowanie wydajności systemów chłodzenia, pracy kotłów, systemów parowych oraz wykrywanie gorących punktów w systemach elektrycznych/elektronicznych i panelach.
  3. Rolnictwo - monitorowanie temperatury, w której przetwarzana i przechowywana jest żywność. Wersja wideo tego projektu może być obejrzana na youtube tutaj.
Wideo
Do pobrania
Download icon Program termometru na podczerwień

Artykuł INFRARED THERMOMETER WITH ARDUINO AND MLX90614 TEMPERATURE SENSOR opracowano w wersji polskiej na podstawie współpracy z portalem www.electronics-lab.com.

Firma:
AUTOR
Źródło
www.electronics-lab.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"