Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun

ghost666 21 Maj 2019 11:45 396 0
  • Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun
    Układ Melexis MLX90640 to scalona macierz termoelementów (termostosów) o rozdzielczości 32 x 24. Każdy z tych elementów pozwala na zdalny pomiar temperatury, a razem tworzą prostą kamerę do obrazowania termicznego. Moduł posiada dosyć dobrą rozdzielczość przestrzenną i temperaturową. Sparkfun stworzył w oparciu o tą matrycę moduł Qwiic, integrujący kamerę z elementami biernymi i obiektywem, dzięki czemu z łatwością zastosujemy go w naszych układach.

    Moduły wyposażone są w interfejs I²C, dzięki czemu łatwo je podłączyć do dowolnego mikrokontrolera czy minikomputera. Dostępne moduły różnią się kątem widzenia kamery - pozostałe parametry są takie same.

    Poniżej omówimy podstawowe parametry tych modułów oraz przedstawimy dwa przykłady ich wykorzystania we własnym systemie.

    Nowe matrycowe sensory temperatury od Melexisa na modułach SparkfunNowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun
    Nowe moduły oferowane przez Sparkfun oparte o MLX90640 : o kącie widzenia 110° (po lewej) i 55° (po prawej).


    CechaZakres wartości
    Napięcie zasilania3 V - 3,6 V
    Pobór prąduokoło 18 mA
    Zakres pomiaru temperatury-40°C - 300°C
    Rozdzielczość±1.5°C
    Częstotliwość odświeżania0,5 Hz - 64 Hz
    Adres I²C0x33




    Skoro wiemy już, do czego zdolne są moduły z układem MLX90640, możemy przystąpić do ich wykorzystania w naszym projekcie.

    Potrzebne materiały

    Uwaga: Układ nie jest kompatybilny z Arduino Uno. MLX90640 potrzebuje dosyć dużej mocy obliczeniowej - mikrokontroler zawarty w Arduino Uno ma za mało pamięci RAM czy Flash, by poradzić sobie ze złożonymi obliczeniami potrzebnymi do wyciągnięcia temperatury z danych na temat piksela. Wymagany jest mikrokontroler mający co najmniej 20000 bajtów pamięci RAM lub więcej.

    Sparkfun sugeruje wykorzystanie Teensy 3.1 lub wyższego modelu. Poniższy opis zakłada wykorzystanie właśnie takiego modułu. Jest to o tyle problematyczne, że konieczne jest podłączenie kamery do modułu kabelkami (i wlutowanie goldpinów w Teensy, jeśli mamy moduł bez nich). Sparkfun nie przygotował jeszcze shielda kompatybilnego z modułami Qwiic dla Teensy.

    Oprócz Teensy i kabelków potrzebować możemy trochę narzędzi - lutownicę z akcesoriami, aby wlutować goldpiny. Przyda się także płytka stykowa do łączenia wszystkiego w całość.

    Zanim zabierzemy się za montowanie i uruchamianie systemu, dobrze jest zapoznać się z opisem Qwiic, który znaleźć możemy tutaj. Dodatkowo, możemy zapoznać się z Processing, gdyż będziemy korzystać z tego oprogramowania do przetwarzania danych z kamery w jednym z przykładów. Dobrze jest mieć za sobą tutoriale do tego, zanim usiądziemy do uruchamiania kamery termowizyjnej.

    Sprzęt

    Oferowane przez Sparkfuna moduły z kamerami termowizyjnymi MLX90640 różnią się między sobą jedynie kątem widzenia. Szerokokątna kamera ma pole widzenia wynoszące 110°x75°, a drugi moduł 55°x35°. Oba posiadają taki sam interfejs, którego piny rozpisane są poniżej, wraz z opisem ich funkcji:

    PinOpisKierunek przepływu dla modułu
    GNDMasaWejście
    3,3 VZasilanieWejście
    SDADaneWejście i wyjście
    SCLZegarWejście


    Dodatkowe elementy w module

    Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun
    Na module z kamerą znajdziemy rezystory podciągające linie interfejsu I²C do zasilania, dzięki czemu nie musimy tego robić gdzie indziej w układzie. Jeśli jednak do systemu podłączyć chcemy więcej kamer tego rodzaju, to zbyt wiele rezystorów podciągać będzie linie interfejsu do zasilania. W takim przypadku musimy odłączyć część oporników.

    Zasadniczo na liniach I²C obecna powinna być jedynie para oporników. Jeżeli będzie ich więcej, to sieć może nie pracować poprawnie. Dlatego też, w takim przypadku, usuwamy ze wszystkich, oprócz jednego, podciągnięcie linii interfejsu do zasilania. Podciągnięcie usunąć można przecinając ścieżki zaznaczone na zdjęciu po lewej stronie.

    Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun
    Na płytce jest także zamontowana dioda LED (pokazana na zdjęciu po prawej stronie). Zapala się ona, gdy do modułu podłączymy poprawne zasilanie.

    Montaż

    Jako, że dla modułu Teensy nie ma interfejsów do Qwiic póki co, to matrycę podłączyć musimy poprzez kabelki kompatybilne ze złączem Qwiic. W poniższej tabeli zebrano informacje o tym, jak połączyć ze sobą poszczególne piny. Kolory w tabeli korespondują z kolorami kabli na zdjęciu na górze.

    KolorFunkcjaPin
    CzarnyMasaDowolny pin masy
    CzerwonyZasilanie 3,3 VDowolny pin zasilania 3,3 V
    ŻółtyZegar19
    NiebieskiDane18


    W momencie, gdy już podłączyliśmy kabel do naszego modułu, możemy podłączyć go do płytki Teensy i jesteśmy gotowi do programowania.

    Przykład 1

    W poniższym przykładzie zakładamy, że na komputerze zainstalowaną mamy najnowszą wersję Arduino IDE. Jeżeli to Twoje pierwsze zderzenie z tym środowiskiem, warto przeczytać np. ten tutorial, by bez problemu zainstalować i uruchomić system.

    Jeśli nie używaliście wcześniej modułów Teensy, to najpewniej konieczne jest pobranie i instalacja rozszerzenia Teensyduino dla Arduino IDE. Więcej informacji na temat pobierania i instalacji znajdziemy tutaj.

    Biblioteka dla układu MLX90640 napisana i udostępniona została przez firmę Melexis. Można znaleźć ją na githubie. W paczce z plikami znajdziemy także przykładowe szkice programów. Pamiętajmy, aby pliki znalazły się w odpowiednich folderach podczas kompilacji.

    Podstawowy odczyt danych

    Po pobraniu przykładowych szkiców i biblioteki, otwieramy pierwszy przykład w folderze SparkFun_MLX90640_Arduino_Example-master\Firmware\Example1_BasicReadings\Example1_BasicReadings.

    Aby zainicjować czujnik, najpierw próbujemy skomunikować się z MLX90640 za pomocą funkcji isConnected(). W pętli setup () widzimy, że znajduje się tam zestaw parametrów, które odczytujemy z podłączanego układu z pomocą funkcji MLX90640_DumpEE oraz MLX90640_ExtractParamaters. Trzeba to zrobić tylko raz - w pętli setup(), zanim moduł będzie gotowy do użycia. Poniżej zaprezentowano kod szkicu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Po wybraniu w IDE płytki i numeru portu szeregowego możemy załadować szkic do Teensy. Otwieramy monitor portu szeregowego z prędkością 115,200 kbod i nasłuchujemy wejścia. Powinniśmy widzieć coś takiego, jak pokazano poniżej - temperatura odczytana z każdego piksela, wyrażona w stopniach Celsjusza.

    Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun


    Przykład 2 - przetwarzanie danych

    Wykorzystany pakiet - Processing - to oprogramowanie do wizualnej reprezentacji danych (i szeregu innych zadań). Jeśli nie znacie tego pakietu, to dobrze jest się wcześniej z nim zapoznać, korzystając z tego tutoriala. Samo oprogramowanie do przetwarzania i wizualizacji pomiarów pobrać można tutaj.

    Następny przykład obejmuje wykorzystanie Processing IDE. Program ten nasłuchuje danych na porcie szeregowym, więc musimy przygotować taki szkic Arduino, aby wychodzące poprzez port szeregowy dane, miały sens dla programu. Aby wyświetlić ten przykład, przejdź do SparkFun_MLX90640_Arduino_Example-master\Firmware\Example2_OutputToProcessing\Example2_OutputToProcessing, gdzie możemy otworzyć przykładowy szkic. Ten szkic wysyła poprzez port szeregowy wartości temperatury oddzielone przecinkami w postaci listy.

    Po wgraniu do Teensy tego szkicu, musimy skonfigurować Processing - ustawić jak program ma przekształcić te dane w wizualizację. Aby to zrobić, wgrywamy szkic przetwarzania - znajduje się on w tym samym folderze co przykładowy szkic Arduino. Przechodzimy do folderu szkiców i otwieramy plik MLXHeatCam w Processing. Próba uruchomienia programu pokaże nam, jakie są dostępne porty szeregowe i każe wybrać prawidłowy.

    Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun


    Jeśli nie wiemy, na jakim porcie znajduje się nasz moduł Teensy, możemy to sprawdzić. W okienku debuggowania, takim jak pokazano powyżej, widzimy wyświetlone dostępne porty COM. W tym przypadku Teensy jest podpięte do COM6, które oznaczone jest jako [1], tak więc musimy zamienić odpowiednią wartość w kodzie Processing:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    zmieniamy na:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nowe matrycowe sensory temperatury od Melexisa na modułach Sparkfun
    Gdy to zrobimy, powinniśmy być w stanie uruchomić szkic Processing i zaprezentuje to nam miłą wizualizację pikseli w matrycy MLX90640.

    Możemy przesunąć twarz lub dłoń przed czujnikiem i powinniśmy zobaczyć ten ruch na obrazie. Dane wyjściowe powinny wyglądać podobnie do obrazu po prawej stronie.

    Niestety taka kamera może osiągnąć częstotliwość odświeżania na poziomie zaledwie około 4 Hz, wynika to z szybkości transmisji danych poprzez I²C. Katalogowa częstotliwość odświeżania sensora MLX90640 wynosi 64 Hz, ale jeśli nie posiadamy mikrokontrolera o znacznie szybszym interfejsie I²C, to nie będziemy w stanie konstruować ramki dostatecznie szybko.

    Na stronie producenta (link poniżej) znaleźć możemy kompletną dokumentację modułu, wraz z jego schematem i rysunkiem płytki drukowanej.

    Źródło: https://learn.sparkfun.com/tutorials/qwiic-ir-array-mlx90640-hookup-guide?_ga=2.56455659.1916568947.1537457064-964836628.1495141751

    Fajne! Ranking DIY
  • Computer Controls