Zaloguje się
or
Tel +48 698 615 740

Cyfrowy czujnik temperatury MLX90614ESF-BAA

23 grudnia, 2021

W tym artykule przedstawię jak możemy wykorzystać czujnik temperatury jako włącznik napięcia na przekaźniku. Omówię po krótce jego działanie. Projekt zostanie wykonany na Arduino Nano.

Spis treści

  • Krótki opis
  • Specyfikacja
  • Projekt
  • Pliki do pobrania

Krótki opis

Czujnik MLX90614ESF-BAA pozwala na pobieranie informacji o temperaturze otoczenia jak i temperatury zbliżonego do niego obiektu. Dzięki bibliotece w Arduino możemy jednocześnie korzystając z wielu czujników pobierać temperatury wielu obiektów.

Speyfikacja

  • Wersja: MLX90614ESF – BAA
  • Napięcie zasilania: od 3,0 do 3,6 V
  • Zakres pomiarowy:
    • od -70 °C do 380 °C dla temperatury obiektu
    • od -40 °C do 85 °C dla temperatury czujnika
  • Rozdzielczość:
    • 0,02 °C dla interfejsu I2C, SMBus, TWI
    • 0,14 °C dla interfejsu PWM
  • Komunikacja: PWM lub I2C (SMBus, TWI)
  • Dokładność: do 0,5 °C w zakresie od 0  do 50 °C

PROJECT : z użyciem 2 czujników i przekaźnika

Elementy:

  • czujnik MLX90614ESF – BAA
  • Arduino Nano (+ kabel microUSB)
  • Arduino Mega/ Uno
  • Moduł 2 przekaźników 5V – 10A/250V – Arduino
  • NANO 3.0 Terminal Shield Adapter Przejściówka na złącza ARK
  • 2x Kable stykowe (męs)
  • 10x Kable stykowe (męsko-żeń)
  • Płytka stykowa

Zmiana adresu I2c

Podłączenie :

Arduino Mega/Uno-> czujnik

GND – GND

5V – VIN

SDA /A4 – SDA

SCL/A5 – SCL

Program scanerI2c i changeAdress.

Niestety ale w podstawowej wersji nasze czujniki mają taki sam adres, aby go zmienić program odtworzyć przykład 4 z bibliotece Sparkfun (znajdującej się poniżej)(Jeżeli nie wiesz jak dołączyć biblioteki do IDE odsyłam do artykułu – https://ajmaker.pl/2021/10/28/wyswietlacze-oled-0-91-0-96-2). Najpierw jednak powinniśmy się upewnić czy czujniki na pewno mają ten sam adres. Skorzystajmy z przykładu niżej(). Po pobraniu wgrywamy go do naszej płytki i czekamy na wynik. Jeżeli skaner nie znajduje urządzeń, musimy sprawdzić czy urządzenia nie są zepsute i czy dobrze podłączyliśmy nasz czujnik.

Po sprawdzeniu czy na pewno adresy urządzeń są identyczne. Podłączamy jeden z czujników i wgrywamy przykład.

Przed wgraniem musimy ustawić boundRange na 115200 oraz NC i CL na naszym monitorze potu szeregowego.

Po informacji że nasze urządzenie zostało znalezione wpisujemy “5B” w terminalu. Po załadowaniu się programu, otwieramy ponownie i2cScaner i sprawdzamy czy adres rzeczywiście uległ zmianie.

Przełącznik przesyłający napięcie na podstawie podanej temperatury

Podłączenie

Arduino Nano wpinamy do adaptera

  • Adapter – czujniki
  • Kable od A4(SDA) i A5(SCL) wpinamy do “-” i “+” wejść na płytce stykowej
  • Adekwatnie wpinamy do tych samych wejść kable od pin-ów SDA i SCL z czujników do równoległych wejść na płytce stykowej.
  • 5V do VIN jednego z czujników
  • D2 do VIN drugiego czujnika
  • D6 do IN1 na przekaźnika
  • D5 do IN2 na przekaźnika
  • 2x GND do GND na czujnikach
  • GND na przekaźniku do GND na Arduino Mega/Uno
  • VCC z przekaźnika do 5V na Arduino Mega/Uno

Kod

Na początku definiujemy biblioteki, obiekt dla MLX oraz adresy czujników

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


Adafruit_MLX90614 mlx;
#define IR1 0x5A
#define IR2 0x5B

Potem w funkcji void setup() ustawiamy tryb wyjścia dla pin-ów 2,6 i 5, i dla pin-u 2 od razu ustawiamy stan wysoki, ponieważ będzie on nam służył jako dodatkowe wyjście 5V. Musimy rozpocząć również komunikacje dla portu szeregowego i mlx.

void setup() {
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  Serial.begin(9600);
  mlx.begin();
}

Ostatnim krokiem jest ustawienie funkcji void loop(). Mając 2 czujniki potrzebujemy zdefiniować z którego z nich chcemy pobrać informacje. Dzięki bibliotece MLX, którą zamieściłem poniżej możemy w tym i innych projektach wykorzystać dowolną liczbę tego typu czujników. Jedyne co musimy zrobić to zdefiniować adres urządzenia z którego chcemy skorzystać. Dla ułatwienia korzystania z czujnika wykorzystałem 2 if-y których zadaniem jest informowanie nas jak dobrze ustawić rękę dla dokładnego odczytu. Jeżeli temperatura zbadanego obiektu znajduje się w przedziale 36 stopni, przekaźnik aktywuje się. Następnie ten sam program jest wykonany na kolejnym czujniku.

void loop() {
 mlx.AddrSet(IR1);
 Serial.print("IR1: ");
 Serial.println("Target-> ");
 Serial.println(mlx.readObjectTempC());
 Serial.println(" C");
 mlx.temp1 = mlx.readObjectTempC();
 if(mlx.temp1 > 42.0){
  Serial.println("Za blisko");
  }
 if(mlx.temp1 < 35.0) {
  Serial.println("Za daleko");
  }

 if(mlx.temp1 > 36.0 && mlx.temp1 < 37.0){
    Serial.println("Dane wysłane do In1");
    if(digitalRead(6) == LOW){
      digitalWrite(6, HIGH);
      } else {
        digitalWrite(6, LOW);
        }
     delay(2000);
  }
 mlx.AddrSet(IR2); 
 Serial.print("IR2: ");
 Serial.print("Target->");
 Serial.println(" C");
 Serial.println(mlx.readObjectTempC());
 mlx.temp2 = mlx.readObjectTempC();
 if(mlx.temp2 > 42.0){
  Serial.println("Za blisko");
  }
 if(mlx.temp2 < 35.0) {
  Serial.println("Za daleko");
  }

 if(mlx.temp2 > 36.0 && mlx.temp2 < 37.0){
    Serial.println("Dane wysłane do  In2");
    if(digitalRead(5) == LOW){
      digitalWrite(5, HIGH);
      } else {
        digitalWrite(5, LOW);
        }
     delay(5000);
  }

 delay(1000);

}

Pliki do pobrania

Sticky
Możliwość komentowania Cyfrowy czujnik temperatury MLX90614ESF-BAA została wyłączona
Dadas Bartosz

Dadas Bartosz

Jest Uczniem Technikum Budowlano-Elektronicznego w Świdnicy na kierunku Technik Informatyk. Na co dzień oprócz projektów z ardunio uczy się programować aplikacje mobile. W przyszłości chcę zostać programistą.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.