Recientemente estuve intentando conectar con el MLX90616 un sensor de temperatura infrarrojo de Melexis. Después de leer la hoja de datos, he escrito un programa para tomar las lecturas de temperatura del objeto a través del SMBus a bordo. Todo en mi extremo parece estar funcionando, sin embargo, las lecturas de temperatura son extremadamente largas (más de 10 minutos) para alcanzar la temperatura del objeto. Según la hoja de datos, la temperatura debería asentarse en segundos gracias a la compensación de gradiente térmico incorporada. ¿Hay algún ajuste de EPROM que no haya activado la compensación de gradiente térmico para obtener lecturas rápidas y estables?
Más aún, ¿alguien ha tenido una experiencia similar con este sensor? No puedo encontrar detalles de otras personas que hayan usado este sensor en particular en el pasado, por lo que algunos detalles serían muy apreciados.
He adjuntado el cuerpo principal de mi código para su referencia:
I2C1_Init(50000); //I2C clock must be in the range of 10kHz to 100kHz for operation according to the SMBus specifications
//delay_ms(100); //Allow time for the SSP module to initialise
I2C1_Start();
//Sometimes if I2C read is peformed without an acknologment it can hang the I2C BUS error check on each operation is therefore necessary
if(I2C1_Wr(0xB4) == 0) //Address for a write operation to 0x5A
{
if(I2C1_Wr(0x07) == 0) //Address for RAM command to 0x7
{
I2C1_Repeated_Start();
if(I2C1_Wr(0xB5)== 0) //Address for read operation to 0x5A
{
lowerByte = I2C1_Rd(1);
upperByte = I2C1_Rd(1);
}
}
}
I2C1_Stop();