Single and Dual Zone Infra Red Thermometer

Embed: (wiki syntax)

« Back to documentation index

MLX90614 Class Reference

MLX90614 Class Reference

Example: More...

#include <MLX90614.h>

Public Types

enum  MLX90614_address_t { MLX90614_ADDRESS = ( 0x5A << 1 ) }
 

DEFAULT ADDRESSES.

More...
enum  MLX90614_command_t { MLX90614_RAM_ACCESS = 0b00011111, MLX90614_EEPROM_ACCESS = 0b00100000, MLX90614_FLAGS = 0b11110000, MLX90614_SLEEP = 0b11111111 }
 

COMMANDS.

More...
enum  MLX90614_eeprom_registers_t {
  MLX90614_TO_MAX = ( MLX90614_EEPROM_ACCESS | 0x00 ), MLX90614_TO_MIN = ( MLX90614_EEPROM_ACCESS | 0x01 ), MLX90614_PWMCTRL = ( MLX90614_EEPROM_ACCESS | 0x02 ), MLX90614_TA_RANGE = ( MLX90614_EEPROM_ACCESS | 0x03 ),
  MLX90614_EMISSIVITY_CORRECTION_COEFFICIENT = ( MLX90614_EEPROM_ACCESS | 0x04 ), MLX90614_CONFIG_REGISTER_1 = ( MLX90614_EEPROM_ACCESS | 0x05 ), MLX90614_SMBUS_ADDRESS = ( MLX90614_EEPROM_ACCESS | 0x0E ), MLX90614_ID_NUMBER_0 = ( MLX90614_EEPROM_ACCESS | 0x0C ),
  MLX90614_ID_NUMBER_1 = ( MLX90614_EEPROM_ACCESS | 0x0D ), MLX90614_ID_NUMBER_2 = ( MLX90614_EEPROM_ACCESS | 0x0E ), MLX90614_ID_NUMBER_3 = ( MLX90614_EEPROM_ACCESS | 0x0F )
}
 

EEPROM REGISTERS.

More...
enum  MLX90614_ram_registers_t {
  MLX90614_RAW_DATA_IR_CHANNEL_1 = ( MLX90614_RAM_ACCESS & 0x04 ), MLX90614_RAW_DATA_IR_CHANNEL_2 = ( MLX90614_RAM_ACCESS & 0x05 ), MLX90614_TA = ( MLX90614_RAM_ACCESS & 0x06 ), MLX90614_TOBJ_1 = ( MLX90614_RAM_ACCESS & 0x07 ),
  MLX90614_TOBJ_2 = ( MLX90614_RAM_ACCESS & 0x08 )
}
 

RAM REGISTERS.

More...
enum  MLX90614_flags_t {
  FLAG_EEBUSY_HIGH = ( 1 << 7 ), FLAG_EEBUSY_LOW = ( 0 << 7 ), FLAG_EE_DEAD_HIGH = ( 1 << 5 ), FLAG_EE_DEAD_LOW = ( 0 << 5 ),
  FLAG_INIT_LOW = ( 0 << 4 ), FLAG_INIT_HIGH = ( 1 << 4 )
}
 

FLAGS.

More...
enum  MLX90614_configregister1_iir_t {
  CONFIGREG1_IIR_MASK = ( 7 << 0 ), CONFIGREG1_IIR_100 = ( 4 << 0 ), CONFIGREG1_IIR_80 = ( 5 << 0 ), CONFIGREG1_IIR_67 = ( 6 << 0 ),
  CONFIGREG1_IIR_57 = ( 7 << 0 ), CONFIGREG1_IIR_50 = ( 0 << 0 ), CONFIGREG1_IIR_25 = ( 1 << 0 ), CONFIGREG1_IIR_17 = ( 2 << 0 ),
  CONFIGREG1_IIR_13 = ( 3 << 0 )
}
 

CONFIG REGISTER 1.

More...
enum  MLX90614_configregister1_temp_t {
  CONFIGREG1_TEMP_MASK = ( 3 << 4 ), CONFIGREG1_TEMP_TA_TOBJ1 = ( 0 << 4 ), CONFIGREG1_TEMP_TA_TOBJ2 = ( 1 << 4 ), CONFIGREG1_TEMP_TOBJ2 = ( 2 << 4 ),
  CONFIGREG1_TEMP_TOBJ1_TOBJ2 = ( 3 << 4 )
}
enum  MLX90614_status_t { , I2C_SUCCESS = 0 }

Public Member Functions

 MLX90614 (PinName sda, PinName scl, uint32_t addr, uint32_t freq)
 Create an MLX90614 object connected to the specified I2C pins.
 ~MLX90614 ()
 Delete MLX90614 object.
MLX90614_status_t MLX90614_GetID_Numbers (MLX90614_vector_data_t *myID)
 It gets the ID numbers.
MLX90614_status_t MLX90614_ReadRawTA (MLX90614_vector_data_t *myRawTA)
 It reads the raw ambient temperature.
MLX90614_status_t MLX90614_ReadTA (MLX90614_vector_data_t *myTA)
 It reads the ambient temperature in Celsius degrees.
MLX90614_status_t MLX90614_ReadRawTObj1 (MLX90614_vector_data_t *myRawTObj1)
 It reads the raw object 1 temperature.
MLX90614_status_t MLX90614_ReadTObj1 (MLX90614_vector_data_t *myObj1)
 It reads the object 1 temperature.
MLX90614_status_t MLX90614_ReadRawTObj2 (MLX90614_vector_data_t *myRawTObj2)
 It reads the raw object 2 temperature.
MLX90614_status_t MLX90614_ReadTObj2 (MLX90614_vector_data_t *myObj2)
 It reads the object 2 temperature.
MLX90614_status_t MLX90614_GetEmissivity (MLX90614_vector_data_t *myEmissivity)
 It gets the Emissivity correction coefficient.
MLX90614_status_t MLX90614_SetEmissivity (MLX90614_vector_data_t myEmissivity)
 It sets the Emissivity correction coefficient.
MLX90614_status_t MLX90614_GetIIR (MLX90614_vector_data_t *myIIR)
 It gets the IIR.
MLX90614_status_t MLX90614_SetIIR (MLX90614_configregister1_iir_t myIIR)
 It sets the IIR.
MLX90614_status_t MLX90614_GetTemperatureSource (MLX90614_vector_data_t *myTempSource)
 It gets the Temperature Source.
MLX90614_status_t MLX90614_SetTemperatureSource (MLX90614_configregister1_temp_t myTempSource)
 It sets the Temperature Source.
MLX90614_status_t MLX90614_GetFLAGS (MLX90614_vector_data_t *myFlags)
 It gets the FLAGS.

Detailed Description

Example:

include "mbed.h" include "MLX90614.h"

MLX90614 myMLX90614 ( I2C_SDA, I2C_SCL, MLX90614::MLX90614_ADDRESS, 100000 ); Serial pc ( USBTX, USBRX );

Ticker newReading; DigitalOut myled(LED1);

MLX90614::MLX90614_status_t aux; MLX90614::MLX90614_vector_data_t myMLX90614Data; uint8_t myState = 0;

void changeDATA ( void ) { myState = 1; }

int main() { pc.baud ( 115200 );

Get the IDs aux = myMLX90614.MLX90614_GetID_Numbers ( &myMLX90614Data ); pc.printf( "ID_0: %d\nID_1: %d\nID_2: %d\nID_3: %d\r\n", myMLX90614Data.ID[0], myMLX90614Data.ID[1], myMLX90614Data.ID[2], myMLX90614Data.ID[3] );

newReading.attach( &changeDATA, 1 ); // the address of the function to be attached ( changeDATA ) and the interval ( 1s )

Let the callbacks take care of everything while(1) { sleep();

myled = 1;

if ( myState == 1 ) { Get the data aux = myMLX90614.MLX90614_ReadTA ( &myMLX90614Data ); aux = myMLX90614.MLX90614_ReadTObj1 ( &myMLX90614Data );

pc.printf( "Ta: %0.2fC\nTObj1: %0.2fC\r\n", myMLX90614Data.TA, myMLX90614Data.TObj1 );

myState = 0; // Reset the variable }

myled = 0; } }

Library for the MLX90614 Single and Dual Zone Infra Red Thermometer.

Definition at line 80 of file MLX90614.h.


Member Enumeration Documentation

DEFAULT ADDRESSES.

Enumerator:
MLX90614_ADDRESS 

MLX90614 I2C Address

Definition at line 86 of file MLX90614.h.

COMMANDS.

Enumerator:
MLX90614_RAM_ACCESS 

Seconds. RANGE 00-59

MLX90614_EEPROM_ACCESS 

LSB of Temp

MLX90614_FLAGS 

LSB of Temp

MLX90614_SLEEP 

LSB of Temp

Definition at line 95 of file MLX90614.h.

CONFIG REGISTER 1.

Enumerator:
CONFIGREG1_IIR_MASK 

IIR Mask

CONFIGREG1_IIR_100 

IIR (100%) a1=1, b1=0

CONFIGREG1_IIR_80 

IIR (80%) a1=0.8, b1=0.2

CONFIGREG1_IIR_67 

IIR (67%) a1=0.666, b1=0.333

CONFIGREG1_IIR_57 

IIR (57%) a1=0.571, b1=0.428

CONFIGREG1_IIR_50 

IIR (50%) a1=0.5, b1=0.5

CONFIGREG1_IIR_25 

IIR (25%) a1=0.25, b1=0.75

CONFIGREG1_IIR_17 

IIR (17%) a1=0.166(6), b1=0.83(3)

CONFIGREG1_IIR_13 

IIR (13%) a1=0.125, b1=0.875

Definition at line 153 of file MLX90614.h.

Enumerator:
CONFIGREG1_TEMP_MASK 

Temp Mask

CONFIGREG1_TEMP_TA_TOBJ1 

Ta, Tobj1

CONFIGREG1_TEMP_TA_TOBJ2 

Ta, Tobj2

CONFIGREG1_TEMP_TOBJ2 

Tobj2

CONFIGREG1_TEMP_TOBJ1_TOBJ2 

Tobj1, Tobj2

Definition at line 166 of file MLX90614.h.

EEPROM REGISTERS.

Enumerator:
MLX90614_TO_MAX 

To max

MLX90614_TO_MIN 

To min

MLX90614_PWMCTRL 

PWMCTRL

MLX90614_TA_RANGE 

Ta range

MLX90614_EMISSIVITY_CORRECTION_COEFFICIENT 

Emissivity correction coefficient

MLX90614_CONFIG_REGISTER_1 

Config Register1

MLX90614_SMBUS_ADDRESS 

SMBus address (LSByte only)

MLX90614_ID_NUMBER_0 

ID number

MLX90614_ID_NUMBER_1 

ID number

MLX90614_ID_NUMBER_2 

ID number

MLX90614_ID_NUMBER_3 

ID number

Definition at line 107 of file MLX90614.h.

FLAGS.

Enumerator:
FLAG_EEBUSY_HIGH 

The previous write/erase EEPROM access is still in progress. High active

FLAG_EEBUSY_LOW 

The previous write/erase EEPROM access is still in progress. LOW

FLAG_EE_DEAD_HIGH 

EEPROM double error has occurred. High active

FLAG_EE_DEAD_LOW 

EEPROM double error has occurred. LOW

FLAG_INIT_LOW 

POR initialization routine is still ongoing. Low active

FLAG_INIT_HIGH 

POR initialization routine is still ongoing. HIGH

Definition at line 139 of file MLX90614.h.

RAM REGISTERS.

Enumerator:
MLX90614_RAW_DATA_IR_CHANNEL_1 

Raw data IR channel 1

MLX90614_RAW_DATA_IR_CHANNEL_2 

Raw data IR channel 2

MLX90614_TA 

TA

MLX90614_TOBJ_1 

TOBJ 1

MLX90614_TOBJ_2 

TOBJ 2

Definition at line 125 of file MLX90614.h.

Enumerator:
I2C_SUCCESS 

I2C communication was fine

Definition at line 224 of file MLX90614.h.


Constructor & Destructor Documentation

MLX90614 ( PinName  sda,
PinName  scl,
uint32_t  addr,
uint32_t  freq 
)

Create an MLX90614 object connected to the specified I2C pins.

MLX90614.cpp.

Parameters:
sdaI2C data pin
sclI2C clock pin
addrI2C slave address
freqI2C frequency in Hz.

Single and Dual Zone Infra Red Thermometer. Function file.

Returns:
NA
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN
Precondition:
This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ).

Definition at line 20 of file MLX90614.cpp.

~MLX90614 (  )

Delete MLX90614 object.

Definition at line 28 of file MLX90614.cpp.


Member Function Documentation

MLX90614::MLX90614_status_t MLX90614_GetEmissivity ( MLX90614_vector_data_t *  myEmissivity )

It gets the Emissivity correction coefficient.

MLX90614_GetEmissivity ( MLX90614_vector_data_t* )

It gets the Emissivity correction coefficient.

Parameters:
[in]NaN
[out]myEmissivity,:Emissivity correction coefficient.
Returns:
Status of MLX90614_GetEmissivity.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 390 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_GetFLAGS ( MLX90614_vector_data_t *  myFlags )

It gets the FLAGS.

MLX90614_GetFLAGS ( MLX90614_vector_data_t* )

It gets the flags.

Parameters:
[in]NaN.
[out]myFlags,:Flags.
Returns:
Status of MLX90614_GetFLAGS.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 736 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_GetID_Numbers ( MLX90614_vector_data_t *  myID )

It gets the ID numbers.

MLX90614_GetID_Numbers ( MLX90614_vector_data_t* )

It gets the ID numbers.

Parameters:
[in]NaN
[out]myID,:ID numbers.
Returns:
Status of MLX90614_GetID_Numbers.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 54 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_GetIIR ( MLX90614_vector_data_t *  myIIR )

It gets the IIR.

MLX90614_GetIIR ( MLX90614_vector_data_t* )

It gets the IIR.

Parameters:
[in]NaN.
[out]myIIR,:IIR.
Returns:
Status of MLX90614_GetIIR.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 503 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_GetTemperatureSource ( MLX90614_vector_data_t *  myTempSource )

It gets the Temperature Source.

MLX90614_GetTemperatureSource ( MLX90614_vector_data_t* )

It gets the temperature source.

Parameters:
[in]NaN
[out]myTempSource,:Temperature source.
Returns:
Status of MLX90614_GetTemperatureSource.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 620 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_ReadRawTA ( MLX90614_vector_data_t *  myRawTA )

It reads the raw ambient temperature.

MLX90614_ReadRawTA ( MLX90614_vector_data_t* )

It raw ambient temperature.

Parameters:
[in]NaN.
[out]myRawTA,:Raw ambient temperature.
Returns:
Status of MLX90614_ReadRawTA.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 120 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_ReadRawTObj1 ( MLX90614_vector_data_t *  myRawTObj1 )

It reads the raw object 1 temperature.

MLX90614_ReadRawTObj1 ( MLX90614_vector_data_t* )

It raw object 1 temperature.

Parameters:
[in]NaN.
[out]myRawTObj1,:Raw object 1 temperature.
Returns:
Status of MLX90614_ReadRawTObj1.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 210 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_ReadRawTObj2 ( MLX90614_vector_data_t *  myRawTObj2 )

It reads the raw object 2 temperature.

MLX90614_ReadRawTObj2 ( MLX90614_vector_data_t* )

It raw object 2 temperature.

Parameters:
[in]NaN.
[out]myRawTObj1,:Raw object 2 temperature.
Returns:
Status of MLX90614_ReadRawTObj2.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 300 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_ReadTA ( MLX90614_vector_data_t *  myTA )

It reads the ambient temperature in Celsius degrees.

MLX90614_ReadTA ( MLX90614_vector_data_t* )

It ambient temperature.

Parameters:
[in]NaN
[out]myTA,:Ambient temperature in Celsius.
Returns:
Status of MLX90614_ReadTA.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 165 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_ReadTObj1 ( MLX90614_vector_data_t *  myTObj1 )

It reads the object 1 temperature.

MLX90614_ReadTObj1 ( MLX90614_vector_data_t* )

It object 1 temperature.

Parameters:
[in]NaN.
[out]myTObj1,:Object 1 temperature in Celsius.
Returns:
Status of MLX90614_ReadTObj1.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 255 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_ReadTObj2 ( MLX90614_vector_data_t *  myTObj2 )

It reads the object 2 temperature.

MLX90614_ReadTObj2 ( MLX90614_vector_data_t* )

It object 2 temperature.

Parameters:
[in]NaN.
[out]myTObj2,:Object 2 temperature in Celsius.
Returns:
Status of MLX90614_ReadTObj2.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 345 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_SetEmissivity ( MLX90614_vector_data_t  myEmissivity )

It sets the Emissivity correction coefficient.

MLX90614_SetEmissivity ( MLX90614_vector_data_t* )

It sets the Emissivity correction coefficient.

Parameters:
[in]NaN.
[in]myEmissivity,:Emissivity correction coefficient.
[out]NaN
Returns:
Status of MLX90614_SetEmissivity.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 435 of file MLX90614.cpp.

It sets the IIR.

MLX90614_SetIIR ( MLX90614_configregister1_iir_t )

It sets the IIR.

Parameters:
[in]NaN.
[in]myIIR,:IIR.
[out]NaN.
Returns:
Status of MLX90614_SetIIR.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 547 of file MLX90614.cpp.

MLX90614::MLX90614_status_t MLX90614_SetTemperatureSource ( MLX90614_configregister1_temp_t  myTempSource )

It sets the Temperature Source.

MLX90614_SetTemperatureSource ( I2C_parameters_t , MLX90614_configregister1_temp_t )

It sets the temperature source.

Parameters:
[in]myTempSource,:Temperature source.
[out]NaN.
Returns:
Status of MLX90614_SetTemperatureSource.
Author:
Manuel Caballero
Date:
26/December/2017
Version:
26/December/2017 The ORIGIN
Precondition:
NaN.
Warning:
NaN.

Definition at line 663 of file MLX90614.cpp.