8 Thermale Aufnahmen
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)
Ü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 OrdnerMLX90640
, 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 Adresse0x33
erkannt werden. - Aktiviere die virtuelle Environment von Python mit
source ~/.env/bin/activate
und kontrolliere, ob die Librariesadafruit-blinka
,adafruit-circuitpython-mlx90640
undRPI.GPIO
installiert sind mitpython -c "import adafruit-blinka"
,python -c "import adafruit-circuitpython-mlx90640"
undpython -c "RPI.GPIO"
. Bei einer Fehlermeldung müssen die fehlenden Libraries in der aktivierten virtuellen Environment mitpip 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
1= busio.I2C(board.SCL, board.SDA)
i2c = adafruit_mlx90640.MLX90640(i2c)
mlx = adafruit_mlx90640.RefreshRate.REFRESH_2_HZ
mlx.refresh_rate
2= np.zeros((24*32,))
frame while True:
try:
3
mlx.getFrame(frame)break
except ValueError:
4continue
# print out the average temperature from the MLX90640
print('Average MLX90640 Temperature: {0:2.1f}C ({1:2.1f}F)'.\
5format(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.
Vorbereitung
- Kontrolliert mit
python -c "import st7789"
ob die Library st7789 installiert ist. Installiere die Library mit in der aktivierten virtuellen Environmentsource ~/.env/bin/activate
mitpip install st7789
, falls sie nicht installiert ist. Testet auch, ob die Bibliothekennumpy
undmatplotlib
installiert sind und installiert diese ansonsten mitsudo 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.