PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensor für Wärmestrahlung, Matrix



PlasmaTubeI²C
04.04.2013, 19:19
Hallo,

bin neu hier und auf der Suche nach einem Sensor für Wärmestrahlung. Natürlich kein einfacher PIR aus nem Bewegungsmelder sondern schon eine kleine Matrix.
Habe auch schon einen gefunden, den man über I2C mit dem Arduino auslesen kann, der hat ne Auflösung von 16x4 Pixel: Melexis MLX90620. Gibt es auch
bei Ebay, für ca 70€ incl Versand aus den USA.
Kennt da jemand zufällig eine Möglichkeit mehr Pixel zu bekommen, bzw einen höher auflösenden Sensor? Hab als Projekt ne möglichst mobile Wärmebildkamera
auf Arduino-Basis im Sinn, nur ist 16x4 eben sehr pixelig...

Mal anders gefragt, hat schon jemand Erfahrungen mit diesem Sensor gemacht und kann vielleicht helfen? ;)

Stone
05.04.2013, 09:35
Als alternative gib es noch den Panasonic Grid-Eye der hat ne 8x8 Matrix. Preis sind ca. 30€, aber die Verfügbarkeit ist noch gering.

Gruß Matthias

PICture
05.04.2013, 12:04
Hallo!

Je nach Wiederholungsfrequenz des Bildes, fällt mir bewegter Sensor pro Zeile bzw. Spalte ein (ännlich wie bei Nipkow Kamera) bzw. verteilen eines grösseren Bildes optisch (z.B. per feste Spiegel) auf mehrere kleinere Bildsensoren (wie bei Passfotokameras, die gleichzeitig 4 Fotos von einem "Objekt" machen). ;)

malthy
05.04.2013, 12:46
Dieser Grid Eye Sensor ist ja mal nett. Hätte gerne einen zum Spielen, habe ihn allerdings bei den üblichen Verdächtigen (digikey, mouser, usw) nicht gefunden. Kennt jemand eine Bezugsquelle? Auch habe ich kein Angebot für Samples auf der Panasonic-Seite gefunden. Weiß jemand ob die das machen?

Gruß
Malte

Torrentula
05.04.2013, 14:40
digikey, mouser, usw) nicht gefunden. Kennt jemand eine Bezugsquelle?

Hier sind sie auf DigiKey:
http://www.digikey.com/product-highlights/us/en/panasonic-grid-eye/2108

malthy
05.04.2013, 14:52
Oh, sorry, keine Ahnung warum ich die eben nicht gefunden habe... :-) Vielen Dank auf jeden Fall!

Gruß
Malte

PlasmaTubeI²C
05.04.2013, 15:35
Hallo,

danke für die Antworten!
@PICture: Ja, so ähnlich hab ichs mir am Anfang auch überlegt, dass ich nur einen Sensor nehme und damit mit 2 Spiegeln einen größeren Bereich
Pixel für Pixel abscanne. Hab ich auch getestet, mit einem Arduino und als Grafikprogramm Processing wurde mit 2 Servos ne Fotodiode Zeilen-/Spaltenweise abgelenkt,
am Schluss hatte ich dann ein Schwarz-Weiß-Bild mit 100x70 Pixeln und recht guter Schärfe.
Einfach die Diode gegen einen IR-Sensor austauschen? Spiegel kann man relativ schnell und präzise ablenken, nur der IR-Sensor müsste um eine annehmbare
Bildwiederholrate bei z.B 32x32 Pixeln = 1024 Pixel*2 Bild pro sek = 2048 Pixel/sek in diesem Fall 2048 mal pro Sekunde einen neuen Messwert aufnehmen können...
ich bin mir nicht sicher ob die so schnell sind.

Hat der Grid-eye denn schon ne Linse drauf? Weil dann noch extra ne teure Germaniumlinse zu kaufen wäre ein bisschen übertrieben.

Tja wie ich sehe werde ich dann wohl mit den 16x4 Pixeln auskommen müssen, natürlich kann man auch 4 dieser Sensoren zusammenschalten, dann
hätte man schon 16x16, aber das kostet über 250€ und das ist mir als Testobjekt eindeutig zu viel. ;)

Werde den Sensor denke ich bald mal bestellen, wenn alles klappt kann ich ja mal berichten wie es so funktioniert. :)

µautonom
06.04.2013, 00:42
Hi, ich habe den MLX90620 in meiner Abschlussarbeit eingesetzt und mich intensiv mit thermischen Detektoren, dazu gehören auch Thermopiles, auseinandergesetzt.

Geht es dir um die Auflösung oder eher darum eine große Fläche thermisch zu erfassen bzw. möchtest du beides?
Letzteres ist abhängig von der Anzahl der Thermopiles im Sensor und dem Field of View, der sich daraus automatisch ergibt. Vergrößerst du den Abstand zum Erfassungsbereich, desto größer wird auch die Fläche, die ein einzelnes Thermopile (Pixel) erfasst.
Wenn du mit dem Sensor näher dran gehst wird es nicht mehr "pixelig", du erfassst dann halt nur einen kleineren Bereich, kannst du dir laucht ausrechnen, anhand des FOVs und dem Abstand zur erfassenden Fläche.

Es gibt einen bekannten Hersteller in Deutschland, der auch 16x16, 32x31 Thermopiles mit verschiedenen Linsen anbietet (heimannsensor). Ich kann dir aber jetzt schon sagen, dass diese für einen Privatperson unbezahlbar sind. Das was Thermopiles mit einer hohen Auflösung so teuer macht, ist die Linse, die dafür speziell geschliffen werden muss + Kalibrierung usw.. das ist handarbeit...

Ich kann dir noch weitere bekannte Hersteller nennen, falls du da mal nachfragen möchtest, schon möglich das neue Produkte angeboten werden.

Grüße

PlasmaTubeI²C
06.04.2013, 11:22
...ich habe den MLX90620 in meiner Abschlussarbeit eingesetzt...

Das ist schon mal gut. :)

Es geht mit hauptsächlich um eine einigermaßen "gute" Auflösung, um auch kleinere Wärmeverteilungen bzw Strukturen
erkennen zu können, wenn man z.B eine Platine fotografiert, dass man wenigstens erkennt, welcher Bereich von einem IC heißer ist, und nicht nur dass es heiß ist.
Das FOV ist eigentlich egal, kann wie bei einer normalen Kamera im Bereich von 40-80° liegen.
Das soll auch nix "hochprofessionelles" werden, man soll halt wenigstens was verwertbares erkennen können.
Der maximale Messabstand wird auch unter 1-2 Meter sein. Notfalls, um die Erkennbarkeit zu steigern, könnte man doch auch
das Wärmebild mit einem optischen Bild aus ner kleinen Kamera im Verhältnis 50:50 überlagern oder?

Wäre es nicht auch möglich, vor den MLX90620 einen kleinen Spiegel zu setzen und den jeweils um 4 Stufen abzurastern, dann hätte man
doch auch 16x16 Pixel? Normale Oberflächenspiegel mit Alu-Beschichtung reflektieren doch auch Strahlung im Bereich von 1-10µm,
oder liege ich da falsch? :rolleyes:
Und das FOV wäre 60x60°.

µautonom
07.04.2013, 16:44
Es geht mit hauptsächlich um eine einigermaßen "gute" Auflösung, um auch kleinere Wärmeverteilungen bzw Strukturen
erkennen zu können, wenn man z.B eine Platine fotografiert, dass man wenigstens erkennt, welcher Bereich von einem IC heißer ist, und nicht nur dass es heiß ist.
Das FOV ist eigentlich egal, kann wie bei einer normalen Kamera im Bereich von 40-80° liegen.


Bei dem verwendeten Thermopile erfasst du im Abstand von einem Meter mit einem FOV von 60°x16,4° eine Fläche von ca. 100 cm x 26 cm, wenn du das jetzt durch die Anzahl der Pixel in x- sowie y-Richtung teilst, erhälst du in etwa die Fläche die ein einzeles Pixel erfasst, welches dann deiner gesuchten Auflösung entspricht.
nFOV=(grob) 6cmx6cm. Das ist schon recht grob für die Erfassung der Wärmeverteilung, wobei 1 m Abstand zur Platine die du thermisch überwachst, sehr groß ist. Da reicht ein Abstand der im cm Bereich liegt...
Bei einem Abstand von beispielsweise 10 cm, kann ein Pixel eine Fläche von 0,63mm x 0,75mm erfassen, was eine feine Auflösung ergibt, dafür erfasst du insgesamt mit allen Pixeln eine kleinere Fläche.

Allgemein berechnest du das mit folgender Gleichung:
tan(FOV/2)=H/2*d
H=2*d*tan(FOV/2)

d=Abstand zwischen Sensor und der zu erfassende Fläche
H= Kantenlänge in x- bzw. y-Richtung

Daran erkennst du, dass die Auflösung vom Abstand, dem FOV und der Pixelanzahl abhängig ist. Von diesen Parametern kannst du nur den Abstand verändern. FOV geht nur eingeschränkt ... lass es lieber, besser ist du kaufst sofort die 40° Version statt 60°.

Wie ich schon sagte, es kommt darauf an was du thermisch erfassen willst bzw. wie groß die Fläche sein soll. Kommt es dir nur auf die Auflösung an, so kannst du den Abstand verringern, erfasst aber dafür eine kleinere Gesamtfläche.
Mit der Formel kannst du mal selber verschiedene Abstände durchrechnen und gucken welche Auflösung dir ausreicht.



Notfalls, um die Erkennbarkeit zu steigern, könnte man doch auch
das Wärmebild mit einem optischen Bild aus ner kleinen Kamera im Verhältnis 50:50 überlagern oder?


Gehen tut das schon, ist nur die Frage ob dir der Aufwand wert ist. Ich habe das auch in meiner Arbeit gemacht, indem ich das thermische Bild mit dem Bild, das ich mit meiner DigiCam aufgenommen habe, leicht transparent, übereinander gelegt habe. Wobei das schwierig war, weil ich das nicht exakt deckungsgleich hinbekommen hab. Musst du mal ausprobieren.



Wäre es nicht auch möglich, vor den MLX90620 einen kleinen Spiegel zu setzen und den jeweils um 4 Stufen abzurastern, dann hätte man
doch auch 16x16 Pixel? Normale Oberflächenspiegel mit Alu-Beschichtung reflektieren doch auch Strahlung im Bereich von 1-10µm,
oder liege ich da falsch? :rolleyes:
Und das FOV wäre 60x60°.

Einfacher ist es viell. wenn man das Thermopile z.B. an einem DC Motor, Servo was auch immer, befestigt und in die Richtung schwenkt. Die Fläche sozusagen, wie du schon sagtest, abtastest.
Wärmestrahlung lässt sich auch reflektieren, das Material muss einen niedrigen Emissionsgrad ausweisen und damit einen hohen Reflektionsgrad haben. (Kirchhoffsches Strahlungsgesetz). Das haben die meisten metallischen Stoffe. Aluminium, dazu noch poliert, eignet sich sehr gut um Wärmestrahlung zu reflektieren. Hab eben nachgeguckt, Alu hat einen Emissionsgrad von 0,02.

Wobei du bei der Idee mit dem Spiegel das Problem hast, das du auch Reflexionen aus der Umgebung, also von warmen Objekten die sich in der Nähe befinden, einfängst...
Was noch wichtig ist, das du den Emissionsgrad der Oberfläche die du misst, dem Sensor mitteilst, da du ansonsten falsch misst. Der Emissionsgrad muss immer bei der Berechnung der Temperatur berücksichtigt werden.

Bei dem MLX90620 gibt es ein Register, indem du den Emissionsgrad eintragen kannst.

Also ich würde die Variante mit dem "Sensor schwenken" statt Spiegel bevorzugen.

PlasmaTubeI²C
07.04.2013, 19:06
Hi,

danke für die ausfürhliche Erklärung!


Bei einem Abstand von beispielsweise 10 cm, kann ein Pixel eine Fläche von 0,63mm x 0,75mm erfassen
Das wäre auf jeden Fall ausreichend.


besser ist du kaufst sofort die 40° Version statt 60°
Ja, das will ich eigentlich auch, nur der einzige Anbieter, der den Sensor bei Ebay verkauft, hat leider nur die 60° Version...
Hab grade spontan keinen Händler gefunden der das Teil anbietet, auch für Privatkunden.


Bei dem MLX90620 gibt es ein Register, indem du den Emissionsgrad eintragen kannst.
Da brauch ich dann auf jeden Fall Hilfe :rolleyes: Bin erst seit etwa 4 Monaten im Bereich Microcontroller und Programmieren
unterwegs, hab mit dem Arduino angefangen. Aber mit I2C Adressen auslesen und Register beschreiben, das is noch ein bisschen suspekt ;)

Um den Sensor zu schwenken hätte ich schon nen Servo da, da hast du auch recht, is wohl die einfachste und schnellste Lösung.
Noch ne Frage, im Datenblatt steht, dass der Sensor Framerates von bis zu 512 Bilder/s unterstützt? Auf manchen Seiten steht aber komischerweise
64...
Schafft der Arduino überhaupt so viel in der Sekunde auszulesen? Das wären ja 16x4x512 Bilder/s --> 32768 Pixel/s, und jetzt halt je nach dem wie
viele Werte ein Pixel enthalten kann. Im Datenblatt steht was von 16bit.

Naja wie ich sehe wird das ganze doch ein bisschen komplizierter hab ich die Befürchtung...

Besserwessi
07.04.2013, 22:40
Auch wenn der Sensor im Prinzip so schnell ist, wird man normalen Temperaturen keine so schnellen Daten nutzen können, weil man da zu viel Rauschen drauf hätte. Im Vergleich zu einer normalen Kamera hat man eher lange "Belichtungszeiten" zu erwarten. Ich würde also eher mit weniger als 10 "Bildern" pro Sekunde rechnen.

µautonom
08.04.2013, 20:19
Da brauch ich dann auf jeden Fall Hilfe :rolleyes: Bin erst seit etwa 4 Monaten im Bereich Microcontroller und Programmieren
unterwegs, hab mit dem Arduino angefangen. Aber mit I2C Adressen auslesen und Register beschreiben, das is noch ein bisschen suspekt ;)


Für den Arduino müsste es fertige Bibliotheken geben. Wichtig ist, dass du auch ein NACK (Not Acknowledged) senden können musst. Das signalisiert dem Sensor, das der Master, in deinem Fall der Mikrocontroller, keine Daten mehr haben möchte. Das brauchst du immer dann, wenn du beispielsweise nicht alle 64 Pixel oder Einstellungen aus dem E²PROm auslesen möchtest.



Noch ne Frage, im Datenblatt steht, dass der Sensor Framerates von bis zu 512 Bilder/s unterstützt? Auf manchen Seiten steht aber komischerweise
64...
Schafft der Arduino überhaupt so viel in der Sekunde auszulesen? Das wären ja 16x4x512 Bilder/s --> 32768 Pixel/s, und jetzt halt je nach dem wie
viele Werte ein Pixel enthalten kann. Im Datenblatt steht was von 16bit.


Die Refreshrate von 512 Hz habe ich nicht ausprobiert, da bei mir relativ langsame Temperaturvorgänge zu beobachten waren. Da kann ich auch nur auf das Datenblatt verweisen, das aktuelle findest du immer auf der Herstellerseite, im Notfall schreibst du Melexis direkt an.
Eine so hohe Refreshrate würde vielleicht Sinn machen, wenn man Bewegungen registrieren möchte. Wie Besserwessi schon gesagt hat, sind die Werte bei einer hohen "refresh rate" verrauschter. Das liegt daran, dass im Sensor ein digitales Filter implementiert ist und das braucht nun mal "Zeit" bis die abgetasteten Werte die Filterstufen durchlaufen. Je niedriger die "refresh rate", desto geringer ist das Rauschen, weil über einen längeren Zeitraum gemittelt wird.

Ich würde dem Sensor etwas Zeit lassen, so dass der den IR-Wert im Register nur alle 125-500ms (< 16Hz) aktualisiert.



Naja wie ich sehe wird das ganze doch ein bisschen komplizierter hab ich die Befürchtung...


Du solltest nicht gleich die Flinte ins Korn werfen. Das ist gar nicht so schwierig wie du denkst :)

PlasmaTubeI²C
11.04.2013, 09:30
Hi,

danke für die Tipps. Sorry dass ich so spät antworte, bin wegen einem Schulausflug mehrere Tage weg.
Ja das mit den Framerates wird ähnlich sein wie bei Kamerasensoren, da wird bei Bildfolgen > 500 Bilder/s
auch viel Licht benötigt.
Vllt. könnte man ja "2 Modi" realisieren, einen der zwar viel Bildrauschen und ungenaue Temp. erfasst,
dafür aber eine hohe Framerate hat und einen mit <5 Bilder/s aber hoher Messgenauigkeit.
Bis ich aber anfangen kann mit dem Projektr wird es noch ein bisschen dauern, schulisch is
grade recht viel los, mal schauen wann ich Zeit finden werde!

PlasmaTubeI²C
02.05.2013, 17:35
Hi,

so der Sensor ist bestellt, mal schauen wann er ankommt! (wird erst aus den USA verschickt)
Sobald er da is bzw wenn ich erfolgreich Daten auslesen konnte werde ich natürlich hier weiter berichten.

PlasmaTubeI²C
21.05.2013, 12:33
Nachtrag: Hab mich schon gewundert wieso nix ankommt...natürlich hab ich das große Glück, das dieses winzige Päckchen beim Zoll hängen bleibt -.-
Mal schauen ob die Scherzkekse ihre Gebühren draufschlagen werden, ich hoffe mal ned!

Joggls
28.05.2013, 16:27
Hallo Zusammen,

ich habe für meine Grid-Eye's eine Adapterplatine entwickelt - die beinhaltet das "Vogelfutter" für das Grid-Eye (Widerstand, Kondensatoren... Pullups) - diese sind auf eine 10 polige Stiftleiste (für z.B. Flachbandkabel) herausgeführt. Die Slave-Adresse ist fest auf 1101 000 "verdrahtet" - ist aber so anlegt, dass man die Brücke auftrennen und die Basisadresse auf 1101 001 umstellen kann.

Heute habe ich den Leiterplattenhersteller beauftragt - die Platine ist 30mm x 23mm klein und daher bekomme ich aufgrund des Mindestbestellwerts 40 Stück davon.... brauche aber nur 5 Stück - vielleicht 10...

Falls jemand Interesse hat, kann er für 2,50 Euro (incl. MWSt 19%) - Versandkosten (Briefsendung +0,60 Euro) eine oder auch gerne mehrere unbestückte Leiterplatten haben. Eine Rechnung werde ich natürlich mitliefern ;O)

25613
25614

Gruß, Uwe

PlasmaTubeI²C
02.06.2013, 19:55
So,

hab den MLX an nen Arduino drangeklemmt, aber zum Berechnen der Temperaturen für den Anfang erstmal ne Library genommen.
Das Ganze scheint ja recht kompliziert zu sein..

Aber gut. Alle Temperaturen der 64 Pixel werden im Arduino berechnet und dann als kompletter String in den Seriellen Port verfrachtet.
Wäre natürlich sinnvoller die einzelnen Rechnungen am PC machen zu lassen, aber ich lass es erstmal so.

Der String wird von Processing gelesen und nach jedem Pixel in integer-Werte getrennt, da immer abwechselnd ein Pixelwert und ein Strichkomma gesendet werden.

Das Bild wird dann auf dieser spartanischen Oberfläche aufgebaut :) :

25638
(Das auf dem Bild is ne Lötkolbenspizte)

Die Übertragung läuft bis jetzt so flüssig, dass immerhin 7 Frames/s zustande kommen ;)

Desweiteren hab ich noch ein paar interessante Werte berechnen lassen, die leider im Moment nur als ungeordnete Zahlen angezeigt werden,
aber unter Anderem die Durchschnittstemperatur aller Pixel, die vertrichenen Zeit seit dem Programmstart und der Temperaturwert eines
beliebigen Pixels, seine Änderung in C°/sekunde und der zeitliche Verlauf in einem kleinen Graphen.

Das ist der Stand zurzeit, gibt natürlich noch einiges zu optimieren! Falls jemand Verbesserungsvorschläge hat oder was man noch hinzufügen könnte,
gerne :)

RoboGeek
03.06.2013, 01:52
Hallo Zusammen,

ich bin ebenfalls auf der Suche nach einem Sensor für Wärmestrahlung. Der Melexis MLX90620 um den es hier geht, wäre vollkommen ausreichend für mich.
Wüsste eventuell noch jemand eine andere Bezugsquelle wie Ebay oder einem Lieferanten aus den Staaten ? (Muss nicht unbedingt der Melexis MLX90620 sein)
Danke schon ein mal für die informative Diskussion :-)

PlasmaTubeI²C
19.06.2013, 18:20
So hallo,

hab noch ne dringende Frage zu dem Sensor, hoffe ihr könnt sie mir beantworten!

Ich arbeite gerade an der Software zum Auslesen und Visualisieren, mit einem "A" , das zum Arduino gesendet wird, liest dieser den Ram des MLX90620 aus.
Dazu verwende ich ne Library, die gleichzeitig auch die Temperatur in °C berechnet und über den seriellen Port sendet.
Aber: Der Ram des MLX wird nur periodisch aktualisiert, nämlich was man als Framerate vorprogrammiert hat (in meinem Fall 16 FPS), d.H. wenn ich jetzt mit der Software am PC
auch 16 Mal/sek einen Abfragebefehl sende, sind beide Teile nicht synchron, da der Sensor seine eigenen Timer hat.
Gibt es da ne Möglichkeit, die Software und den Sensor aufeinander abzustimmen?

Beispielsweise wird der Ram des MLX nur dann aktualisiert, wenn man einen entsprechenden Befehl sendet?

Oder kan man iwie abfragen, wenn das Array des MLX neu eingelesen wurde?

Danke schonmal ;)

------------------Nachtrag----------------
Hab grad im Datenblatt was vom "Stepmode" gelesen, das wird es wohl sein, aber wie setze ich das programmtechnisch um?