closeThis post has been published 4 years 1 month 16 days ago and may be out of date. Please read it carefully, I'm not responsible for any mistakes.

Einleitung

Eine Wärmebildkamera für Hobbybastler?
Eigentlich ne spannende Sache, nicht nur zum Experimentieren, sondern auch um beispielsweise die Temperatur von spannungsführenden oder sehr heißen Bauteilen kontaktlos messen zu können.
Leider liegen selbst günstigste Geräte im 4-Stelligen Eurobereich, also für den “Brauche-ich-mal-ab-und-zu”-Fall nicht wirtschaftlich.

Dennoch wollte ich mich nicht damit zufrieden geben und habe eine Möglichkeit gefunden, für etwa 100€ eine Wärmebildkamera inklusive Software auf die Beine zu stellen – Abstriche müssen bei diesem Preis vor allem in der Auflösung gemacht werden, deshalb beträgt diese leider nur 16×4 Pixel. Objekte kann man dadurch zwar nicht wirklich erkennen, aber für Bauteile reicht es allemal!

 


Sensor: Thermal Array

Der Sensor den ich verwende ist der MLX90620, eine Linse ist bereits integriert. Anders als bei Fotoobjektiven besteht diese nicht aus Glas, denn das ist für Wärmestrahlung (liegt im Bereich von 2-10µm) nicht durchlässig.
Der Sensor wird mit 2.6V betrieben und kommuniziert per I2C.

Die Bildwiederholrate lässt sich großzügig von 0.5 Hz/FPS über 1/2/4/8/16/32/… bis sogar 512 einstellen, natürlich sinkt mit steigender Framerate die Belichtungszeit und wie man das von Digitalkameras eben auch kennt, muss die Ausleseelektronik mehr verstärken, sprich den ISO-Wert erhöhen, was zu Bildrauschen führt.

Und Bildrauschen entspricht bei dieser Art von Kamera eben einer Temperaturschwankung, welche ja eigentlich nicht Sinn und Zweck ist, man möchte ja genaue und stabile Werte haben. Soweit so gut, also nicht über 32Hz gehen.
Die Auflösung beträgt wie oben genannt 16×4 Pixel.

Der Sensor ist mit einem FOV (Erfassungswinkel) von 60º x 15º oder 40º x 10º erhältlich.

Die maximale Betriebsspannung wird mit 3.6V angegeben, jedoch funktioniert der MLX90620 am besten mit 2.6V, für diesen Bereich ist er auch kalibriert. Um mir den zusätzlichen Spannungswandler zu sparen, habe ich einfach zwischen Sensor und 3.3V-Pin des Arduino eine Standart-Diode gepackt, deren Spannungsabfall von 0.6V bringt unterm Strich dann etwa 2.65V.

Das Datenblatt steht hier zum Download zur Verfügung: www.melexis.com/Asset/Datasheet-IR-thermometer-16X4-sensor-array-MLX90620-DownloadLink-6099.aspx

Kostenpunkt ist je nach Bezugsquelle etwa 70-80€.

 


Anschlussbelegung

Der Sensor selbst hat nur 4 Anschlusspins, jeweils VDD/GND/SDA/SDC und ist in einem kleinen und stabilen Gehäuse untergebracht.
Auch ist ein Level-Converter für die I2C-Leitungen notwendig, das ist besonders wichtig, da die interne Logik des Sensors durch Überspannung sehr schnell abraucht.

Mehr braucht man nicht, hier das Schaltbild des gesamten Aufbaus:

 


Arduino-Code

Die insgesamt 64 Pixel des Sensor kann man leider nicht einfach auslesen, sondern es müssen noch weitere Kalibrierungsregister mit einbezogen werden, ist ein bisschen komplizierter, hätte der Sensor eine höhere Auflösung, hätte ich mir die Zeit genommen und mich da eingearbeitet. Glücklicherweise hat ein User im Arduinoforum bereits einen sehr guten Sketch programmiert, den ich weitestgehend übernommen habe.

Hier der Link zum Forum-Beitrag: http://forum.arduino.cc/index.php?topic=126244.0

Hier noch mal der Hinweis: Der o.g. Code ist nicht von mir, alle Rechte bleiben beim Urheber!

Eine kleine Änderung muss noch vorgenommen werden, was aber nur die unteren Codeblöcke betrifft, die gegen meine leicht abgeänderte Version ausgetauscht werden müssen: MLX90620.ino

Das wars auch schon! Durch das “A”-Zeichen erhält der Arduino den Befehl, die ausgelesenen und berechneten Werte des Sensors an den seriellen Port zu senden, welche dann bereits im Temperaturformat vorliegen.

 


Windows-Software

Anschließend kann man das ganze noch optisch aufbereiten bzw. überhaupt erst mal darstellen, hierzu habe ich eine kleine Software geschrieben:

Kurzanleitung zur Bedienung:

  • Über das Dropdown-Menü rechts oben lässt sich der COM-Port auswählen, der dem Arduino zugewiesen ist.
  • Disconnect/Connect stellt die Verbindung her, “Receive” empfängt ein Bild, über die Checkbox “Streaming” kann man mehrere Bilder pro Sekunde in einstellbarer Verzögerung anzeigen lassen.
  • Die Checkbox “Temp. anzeigen” zeigt für jeden Pixel die Temperatur in °C an.
  • Man kann auch Bilder speichern, mit dieser Version allerdings nur eines! (Das alte wird immer überschrieben)

–> Der Pfad befindet sich unter C:/User/Dokumente/Test

 

Hier ist der Link zum Download des Programms:

  MLX90620.exe (21.0 KiB, 604 hits)

 


Experimente

Selbst mit dieser kleinen Auflösung lässt sich bereits eine Platine auf überhitzte Bauteile untersuchen, hier habe ich mal testweise 1W durch einen 0.25W Widerstand gejagt, wodurch dieser schon deutlich ins Schwitzen gekommen ist:

 

[Total: 0    Average: 0/5]

4 Comments

  1. Christian

    Hallo, danke für die schöne Beschreibung – leider ist der Download Link für das Windows Programm verschwunden. Ich würde es gerne mal ausprobieren. :-)

    • Breadboarding

      Stefan

      Moin,
      sorry hatte das entsprechende Plugin aufgrund von Komplikationen deaktiviert – Link ist wieder online! :-)

      Gruß Stefan

  2. Marcus

    Hey Stefan!

    Super Arbeit mit der kleinen Wärmebilderkamera hier! Ich habe die Sache bei mir gerade aufgebaut und funktioniert soweit auch.

    Nur das Programm zum Darstellen für Windows klappt nicht so recht. Wenn ich über den Serial Monitor das “A” sende, dann kommt dort ein korreter Satz Temperaturen zurück. Aber das Programm zeigt mir permanent für alle Felder “125”.

    Vielleicht Idee woran das liegen könnte?

    Grüße!

    • Breadboarding

      Stefan

      Servus Marcus,

      freut mich, dass es wenigstens ansatzweise funktioniert!

      Also, wenn ich das richtig sehe, klappt es mit der Arduino IDE, aber ein Klick auf “Receive” im Windowsprogramm liefert zwar den richtigen Syntax, aber mit falschem Inhalt?
      Ein Übertragungsfehler vom Sensor ist dann schon mal ausgeschlossen.
      So aus dem Stegreif kann ich den Fehler nicht sofort einordnen, da für die Windows-Software ja keine Librarys o.Ä. benötigt werden und es bei mir auch auf anderen Rechner einwandfrei funktioniert hat…
      Die Software selbst wird auch nicht durch Sicherheitsprogramme blockiert? Das wäre das einzige, was mir derzeit einfällt.
      Microsoft NET Framework ist installiert? (Wobei das Programm ja sonst gar nicht starten sollte)

      Auch werde ich aus der Zahl 125 nicht schlau, da diese nicht eine 2 als Basis hat, ist also keine Begrenzung des Datentyps.
      Falls das Problem immer noch besteht, kann ich ja mal eine andere Version des Programms hochladen, vielleicht geht es ja dann!

      Gruß Stefan

Leave Comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.