Difference between revisions of "Module/Melexis MLX90614"

From PaparazziUAV
Jump to navigation Jump to search
(Melexis MLX90614 infrared radiation sensor)
 
m
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
[[Image:Mlx90614.jpg|thumb|right|Melexis MLX90614]]
[[Image:Mlx90614_top.jpg|thumb|right|Melexis MLX90614 on breakout board]]
[[Image:Mlx90614_bot.jpg|thumb|right|Melexis MLX90614 bottom view]]
===Overview===
===Overview===


The Melexis MLX90614 is a digital infrared radiation sensor. It is used to measure the surface temperature when flying at low altitudes. It measures both the sensor temperature and the object (sensor) temperature.
The Melexis MLX90614 is a digital infrared radiation sensor. It is used to measure earths surface temperature when flying at low altitudes. It measures both the object (earth) temperature and the case (sensor) temperature.
 
{|border="1"
|-valign="top"
||Module name||meteo/ir_mlx
|-
|Sensor type
|temperature
|-
|Range (object)
| -70°C .. +380°C
|-
|Resolution
|0.02°C
|-
|Refresh rate
|8Hz
|-
|I2C address
|0x06
|}


[http://www.melexis.com/Infrared-Thermometer-Sensors/Infrared-Thermometer-Sensors/MLX90614-615.aspx MLX90614 product homepage]
[http://www.melexis.com/Infrared-Thermometer-Sensors/Infrared-Thermometer-Sensors/MLX90614-615.aspx MLX90614 product homepage]


module: ir_mlx


===Hardware===
===Hardware===


The board does have a 3.3V I2C interface.
The board does have a 3.3V I2C interface.
Breakout board: [http://github.com/paparazzi/paparazzi-hardware/tree/master/misc/mlx90614_small Paparazzi hardware repo]


Supplier:
Supplier:
Line 18: Line 40:


[http://www.sparkfun.com/products/9570 Sparkfun]
[http://www.sparkfun.com/products/9570 Sparkfun]
==== Wiring ====
{|border="1"
|-valign="top"
||'''Autopilot I2C pin'''||'''Autopilot I2C'''||'''MLX90614'''||'''MLX90614 pin'''
|-
|1
|GND
|Vss
|4
|-
|2
|
|
|
|-
|3
| +3.3V
|Vdd
|3
|-
|4
|SDA
|SDA
|2
|-
|5
|SCL
|SCL
|1
|}


===Usage===
===Usage===
Line 30: Line 84:
}}
}}


===One-time-configuration===


(tbd)
===One-time configuration===


The I2C address is stored in internal flash memory and is usually ''randomly'' set. To set it to a useful value put the below setting only once while setting it up:
(available in the master and campaign2013 branch)


The I2C address is stored in internal flash memory and is usually ''randomly'' set. To set it to a useful value (0x06) put the below define '''only once''' while setting your equipment up.
{{Box Code|conf/airframes/myplane.xml|
{{Box Code|conf/airframes/myplane.xml|
<source lang="xml">
<source lang="xml">
  <modules>
     <load name="ir_mlx.xml">
     <load name="ir_mlx.xml">
       <define name="IR_MLX_ONE_TIME CONFIG" value="1"/>
       <define name="IR_MLX_ONE_TIME_CONFIG" value="1"/>
     </load>
     </load>
  </modules>
</source>
</source>
}}
}}
===Result message===
Both the sensor case temperature and infrared object temperature are measured. The raw data (itemp_case/_obj) and the converted result (temp_case/_obj) is written to the log file. The message is automatically sent when new data is received, it does not have to be added to the telemetry file.
{{Box Code|conf/messages.xml|
<source lang="xml">
  <message name="MLX_STATUS" id="85">
  <field name="itemp_case" type="uint16"/>
  <field name="temp_case" type="float" unit="deg_celsius" format="%.2f"/>
  <field name="itemp_obj" type="uint16"/>
  <field name="temp_obj" type="float" unit="deg_celsius" format="%.2f"/>
  </message>
</source>
}}
The sensors 64bit serial number is read out at init and transmitted every 30 seconds.
{{Box Code|conf/messages.xml|
<source lang="xml">
  <message name="MLX_SERIAL" id="113">
    <field name="serial0" type="uint32"/>
    <field name="serial1" type="uint32"/>
  </message>
</source>
}}
Sample log file lines
6.000 123 MLX_SERIAL -1468333052 -931101532
6.518 123 MLX_STATUS 14703 20.91 14702 20.89
6.634 123 MLX_STATUS 14703 20.91 14702 20.89
6.750 123 MLX_STATUS 14704 20.93 14705 20.95
6.878 123 MLX_STATUS 14703 20.91 14702 20.89


===NOTES===
===NOTES===

Latest revision as of 13:17, 9 May 2013

Melexis MLX90614 on breakout board
Melexis MLX90614 bottom view

Overview

The Melexis MLX90614 is a digital infrared radiation sensor. It is used to measure earths surface temperature when flying at low altitudes. It measures both the object (earth) temperature and the case (sensor) temperature.

Module name meteo/ir_mlx
Sensor type temperature
Range (object) -70°C .. +380°C
Resolution 0.02°C
Refresh rate 8Hz
I2C address 0x06

MLX90614 product homepage


Hardware

The board does have a 3.3V I2C interface.

Breakout board: Paparazzi hardware repo

Supplier:

Future Electronics

Sparkfun

Wiring

Autopilot I2C pin Autopilot I2C MLX90614 MLX90614 pin
1 GND Vss 4
2
3 +3.3V Vdd 3
4 SDA SDA 2
5 SCL SCL 1


Usage

To use the infrared radiation sensor:

File: conf/airframes/myplane.xml
  <modules>
    <load name="ir_mlx.xml"/>
  </modules>


One-time configuration

(available in the master and campaign2013 branch)

The I2C address is stored in internal flash memory and is usually randomly set. To set it to a useful value (0x06) put the below define only once while setting your equipment up.

File: conf/airframes/myplane.xml
  <modules>
    <load name="ir_mlx.xml">
      <define name="IR_MLX_ONE_TIME_CONFIG" value="1"/>
    </load>
  </modules>

Result message

Both the sensor case temperature and infrared object temperature are measured. The raw data (itemp_case/_obj) and the converted result (temp_case/_obj) is written to the log file. The message is automatically sent when new data is received, it does not have to be added to the telemetry file.

File: conf/messages.xml
  <message name="MLX_STATUS" id="85">
   <field name="itemp_case" type="uint16"/>
   <field name="temp_case" type="float" unit="deg_celsius" format="%.2f"/>
   <field name="itemp_obj" type="uint16"/>
   <field name="temp_obj" type="float" unit="deg_celsius" format="%.2f"/>
  </message>

The sensors 64bit serial number is read out at init and transmitted every 30 seconds.

File: conf/messages.xml
  <message name="MLX_SERIAL" id="113">
    <field name="serial0" type="uint32"/>
    <field name="serial1" type="uint32"/>
  </message>


Sample log file lines

6.000 123 MLX_SERIAL -1468333052 -931101532
6.518 123 MLX_STATUS 14703 20.91 14702 20.89
6.634 123 MLX_STATUS 14703 20.91 14702 20.89
6.750 123 MLX_STATUS 14704 20.93 14705 20.95
6.878 123 MLX_STATUS 14703 20.91 14702 20.89

NOTES

If flying at higher altitudes the infrared radiation from the in-between water vapor is also measured.