8  Thermale Aufnahmen

Autor:in

Pia Bereuter

Veröffentlichungsdatum

22. Oktober. 2024

Zusammenfassung
In der Fernerkundung sind Thermalkameras ein wichtiges Instrument zur Erfassung von Wärmebildern, beispielsweise für die Zählung von Tierbeständen oder auch für Untersuchungen von Gebäudeisolationen. Diese Übung nutzt die MLX90640 Thermalkamera und zeigt wie thermale Aufnahmen mit dem Raspberry Pi gemacht werden können.

Einführung

Ziel dieser Übung ist es thermale Kamera mit der MLX90640 Kamera kennen zu lernen und die thermalen Bilddaten auszulesen und testen. Die MLX90640 ist eine weitwinkel Kamera mit einer Auflösung von 24x32 Pixel. Sie wird über eine I2C Schnittstelle mit dem Raspberry Pi verbunden und kann über eine Python Library angesteuert werden.

Unterlagen: E05_Thermalkamera.zip

Vorbereitung

  • Schaut folgende von Video von Melexis zur Funktionsweise der MLX90640 Thermalkamera an: Far Infrared (IR) Thermal Sensor Array 32x24 RES (MLX90640)
  • Studiere das Datenblatt zum VL53L5CX (Melexis, 2019) und beantworte folgende Fragen:
    • In welchen Temperaturbereichen kann der Sensor eingesetzt werden?
    • Welches ist die höchste Abtastrate für die Distanzfeldmessungen?
    • Was sind Anwendungsgebiete für diesen Sensor?
Unterlagen
Produkt MLX90640 Breakout
Datenblatt MLX90640
GitHub mlx90640-library, Adafruit MLX90640

MLX90640 Thermalkamera

Der MLX90640 ist eine Thermalkamera mit einer Auflösung von 32x24 Pixel mit einem Sichtfeld von 55°. Die Kamera misst in einem Temperaturbereich von -40° - 300°C mit einer Genauigkeit von etwa 1°C und mit einer Aufnahmerate von bis zu 64 FPS. Die Anwendungsbereiche sind vielfältig, von der Temperatur der Kaffeetasse, Hitzeentwicklung in elektronischen Geräten bis hin zur Überwachung von Gebäuden und Anlagen.

MLX90640 Thermal Camera

  • Melexis MLX90640 far-infrared sensor array
  • Brennweite: 55°
  • 32x24 pixels
  • I2C interface (address 0x33)
Abb. 8.1: links: MLX90640 Thermalkamera, oben: schematische Darstellung der Kamera und ihrer Anschlüsse rechts: Pixelpositionaufbau Quelle: STMicroelectronics (2023)

Übungsaufbau

  • Schliesse den Raspberry Pi an Monitor, Keyboard und Maus an oder verbinde Dich mit diesem über SSH (und SFTP).
  • Erstelle auf dem Raspberry Pi im Documents Ordner einen neuen Ordner MLX90640, in welchem Du Änderungen und neue Dateien für diese Übung speichern kannst.
  • Schliesse den Sensor MLX90640 an den Raspberry Pi über die Breakout Garden I2C Schnittstelle korrekt an (siehe E01 Luftqualität), so dass die Beschriftung der Anschlüsse am Sensor und bei der Schnittstelle übereinstimmen.
  • Kontrolliere mit dem Befehl i2cdetect -y 1 ob der Raspberry Pi mit dem Sensor verbunden ist. Der Sensor sollte auf der Adresse 0x33 erkannt werden.
  • Aktiviere die virtuelle Environment von Python mit source ~/.env/bin/activate und kontrolliere, ob die Libraries adafruit-blinka,adafruit-circuitpython-mlx90640 und RPI.GPIO installiert sind mit python -c "import adafruit-blinka", python -c "import adafruit-circuitpython-mlx90640" und python -c "RPI.GPIO". Bei einer Fehlermeldung müssen die fehlenden Libraries in der aktivierten virtuellen Environment mit pip install adafruit-blinka adafruit-circuitpython-mlx90640 RPI.GPIO installiert werden.
  • Die Python Scripts für die Thermalkamera werden in den Unterlagen zu dieser Übung bereitgestellt.

Wechsle in den Ordner Documents und kopiere in diesen den Ordner MLX90640 mit den Code Beispielen.

Aufgabe 1: Punktuelle Temperaturmessung

Teste das Beispiel average_temperature.py im Ordner examples. Dieses Beispiel liest die Werte aus der Matrix der Thermalkamera und gibt den Mittelwert der Temperatur aus. Die Ausgabe sollte in etwa so aussehen (gekürzt):

python average_temperature.py 
Average MLX90640 Temperature: 23.6C (74.5F)

Folgendes Code Snippet zeigt eine gekürzte Version des average_temperature.py Python Beispiels für die Ausgabe der Distanzmatrix.

import time,board,busio
import numpy as np
import adafruit_mlx90640

1i2c = busio.I2C(board.SCL, board.SDA)
mlx = adafruit_mlx90640.MLX90640(i2c)
mlx.refresh_rate = adafruit_mlx90640.RefreshRate.REFRESH_2_HZ

2frame = np.zeros((24*32,))
while True:
    try:
3        mlx.getFrame(frame)
        break
    except ValueError:
4        continue

# print out the average temperature from the MLX90640
print('Average MLX90640 Temperature: {0:2.1f}C ({1:2.1f}F)'.\   
5      format(np.mean(frame),(((9.0/5.0)*np.mean(frame))+32.0)))
1
Setup von I2C, Initialisierung des MLX90640 Sensors und Setzen der Abtastrate auf 2 Hz
2
Numpy Array für das Speichern der 768 Temperaturwerte (24x32 Pixel) erstellen
3
MLX Temperaturwerte in das Numpy Array speichern
4
Falls ein Fehler eintritt, nochmals versuchen den Sensor auszulesen
5
Temperaturmittelwert ausgeben

Übung 8.1 Einzelne Temperaturmessung

  • Führe das Beispiel average_temperature.py aus und beobachte die Messwerte.
  • Teste das Script mit unterschiedlichen warmen Objekten (z.B. Kaffeetasse, Hand, etc.).

Aufgabe 2: Thermale Aufnahme mit LCD Bildschirm

Folgende Aufgabe nutzt den 1.54” LCD Bildschirm mit einer 240x240 Pixel Auflösung. Der Ordner enthält mehrere Beispiele zur Thermalkamera, die die Temperaturmatrix auf dem Bildschirm anzeigen. Die Beispiele sind im Ordner MLX90640 zu finden.

Abb. 8.2: Aufbau der Versuchsanordnung für die Distanzmessung mit dem LCD Bildschirm montiert im dem hinteren SPI Slot

Vorbereitung

  • Kontrolliert mit python -c "import st7789" ob die Library st7789 installiert ist. Installiere die Library mit in der aktivierten virtuellen Environment source ~/.env/bin/activate mit pip install st7789, falls sie nicht installiert ist. Testet auch, ob die Bibliotheken numpy und matplotlib installiert sind und installiert diese ansonsten mit sudo apt install python3-matplotlib python3-numpy.
  • Kontrolliere, ob der Raspberry Pi den Breakout Garden HAT mit den 2 SPI Anschlüssen und 4 I2C Anschlüssen bestückt ist (Abb. 8.2).
  • Montiere den Bildschirm im vorderen SPI Slot des Breakout Garden HATs wie in Abb. 8.2, oder passe das Script, an so dass die Werte der hinteren SPI Schnittstelle verwendet werden.
  • Teste die Beispiele im Ordner MLX90640 und beobachte die Ausgabe auf dem LCD Bildschirm.

Übung 8.2 Experimente mit der Thermalkamera und dem LCD Bildschirm

  • Teste mit unterschiedlichen Objekten die Temperaturmessung und beobachte die Ausgabe auf dem LCD Bildschirm.
  • Wie gut lassen sich Objekte mit unterschiedlichen Temperaturen unterscheiden?
  • Wie gut lassen sich Objekte erkennen, die sich in der Temperatur nur wenig oder stark unterscheiden?
  • Studiere den Code der Beispiele und versuche die Funktionsweise zu verstehen.
  • Überlege Dir, wie Du die Beispiele erweitern könntest.