EL0487 Termometro Infrarrojos IR GY906 MLX90614ESF Arduino
Se trata de un termómetro que puede medir la distancia por infrarrojos, es decir sin contacto físico con el cuerpo que se quiere medir, simplemente apuntando hacia él.
Características:
Calibrado en fábrica
Rango de temperatura:
-40... + 125 ° C para la temperatura del sensor y
-70... + 380 ° C para la temperatura del objeto.
Alta precisión de 0.5 ° C en todo Temperaturerange
i2c_init(); //Initialise the i2c bus
PORTC = (1 << PORTC4) | (1 << PORTC5);//enable pullups
}
void loop(){
int dev = 0x5A<<1;
int data_low = 0;
int data_high = 0;
int pec = 0;
i2c_start_wait(dev+I2C_WRITE);
i2c_write(0x07);
// read
i2c_rep_start(dev+I2C_READ);
data_low = i2c_readAck(); //Read 1 byte and then send ack
data_high = i2c_readAck(); //Read 1 byte and then send ack
pec = i2c_readNak();
i2c_stop();
//This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps
double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614)
double tempData = 0x0000; // zero out the data
int frac; // data past the decimal point
// This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte.
tempData = (double)(((data_high & 0x007F) << 8) + data_low);
tempData = (tempData * tempFactor)-0.01;