Bus I2C y termopila TPA81, necesito leer la temperatura con decimales.

Hola a todos, espero se encuentren bien.

Les comento brevemente, estoy tratando de leer la temperatura en un metal por medio de una Termopila TPA81, pero ésta solo me arroja el dato entero de cada temperatura y en mi proyecto los cambios de temperatura van a ser muy pequeños e importantes por lo que necesito leer esos decimales.

He googleado en busca del datasheet pero no lo he conseguido, lo único que hay en todas parte es esta informacíon TPA81 Infra Red Thermal Sensor

Tengo todas las conexiones bien echas con resistencias pull-up y todo lo necesario para la comunicación I2C entre el sensor y mi Arduino MEGA 2560.

Anexo mi codigo

#include <LiquidCrystal.h>
#include <Wire.h>

LiquidCrystal lcd(7,8,9,10,11,12);

void setup()
{
        Wire.begin(); 
        Serial.begin(9600); 
        lcd.begin(16,2);        
}

void loop()
{         
         for (int i=2; i<=9; i++)
             {
              if (i==2){lcd.setCursor(0,0);}
                  if (i>=2 && i<=5)
                  {
                        Wire.beginTransmission(0x68);
                        Wire.write(i);
                        Wire.endTransmission();

                        Wire.requestFrom(0x68, 16);
                        while(Wire.available() < 1) ;
                        float Temperatura = Wire.read();

                        Serial.print(Temperatura); 
                        Serial.write(32);
                        lcd.print(Temperatura);
                        lcd.write(32); 
                  }

               if (i==6){ lcd.setCursor(0,1);}
                  if (i>5 && i<=9)
                  {
                        
                        Wire.beginTransmission(0x68);
                        Wire.write(i);
                        Wire.endTransmission();

                        Wire.requestFrom(0x68, 16);
                        while(Wire.available() < 1) ;
                        float Temperatura = Wire.read();

                        Serial.print(Temperatura); 
                        Serial.write(32); 
                        lcd.print(Temperatura);
                        lcd.write(32);
                  }                  
              }
              delay(100);
              Serial.println();

}

Intente también conectando el Arduino a MATLAB y desde allí hacer los llamados pero la respuesta fue obtenida en uint8.

No se si el problema es la libreria o es que el sensor solo enviará siempre la parte entera.

De antemano muchas gracias por su atencion, comprension y pronta ayuda.

Atentamente,

James Moncada
Estudiante de Ingenieria Mecatronica

Primero te voy a pedir que Edites el título y retires la palabra AYUDA. Lee las normas si necesitas una explicación.

Tu consulta tal vez sea respondida con esto topico Arduino to arduino sending float

surbyte: Tu consulta tal vez sea respondida con esto topico Arduino to arduino sending float

No es tan sencillo como lo hacen en ese post, el TPA81 guarda en él 10 registros, el primero es la versión del software, el segundo la temperatura ambiente y del 3 al 10 es la temperatura medida por cada pixel del array de termopilas, la información que el me envía es directamente la temperatura en entero no el valor en binario o en otro formato, es decir, al parecer el mediante su circuito integrado hace la conversión o por lo menos eso es lo que creo, la verdad desconozco bastante de este protocolo de comunicación.

Bueno como siempre digo para que reinventar la rueda.
Una vez mas por no seguir el principal consejo de las Normas del foro que es BUSCAR ANTES DE CONSULTAR.

En google: Arduino TPA81 Library y su resultado esto Librería TPA81. Esta todo o casi todo hecho.

ejemplo de uso

// This is a simple example of how to use the TPA81 library
#include <Wire.h>
#include <Tpa81.h>

// Create an instance of Tpa81, constructor is Tpa81(deviceID)
Tpa81 thermo = Tpa81(0);

void setup(){		// this is called once
  Wire.begin();   // this must be called to start the I2C bus
  Serial.begin(38400);
}

void loop(){        // print a reading every 2 seconds
  int i;
  unsigned char reading[8];

  // query the sensor
  i = thermo.getData(reading);
    
  // send up data to PC like "AMBIENT: p1, p2.... p8.\n"
  Serial.print(i);    // print the ambient temperature;
  Serial.print(": ");
  Serial.print((int)reading[0]);
  for(i=1;i<8;i++){
    Serial.print(",");
    Serial.print((int)reading[i]);
  }
  Serial.println(".");
  delay(2000);	
}

Pruebalo y me cuentas.