Tengo un L3GD20 , que es un acelerómetro con sensor de temperatura incorporado , y quiero asegurarme de que mis matemáticas no sean extravagantes con respecto a la temperatura. No tengo mucha experiencia con el hardware integrado.
He estado jugando con el sensor de temperatura en el L3GD20. Según la hoja de datos, la temperatura se representa en el complemento de 8 bits 2, por lo que va de -128 a 127. Sin embargo, la hoja de datos incluye este pequeño fragmento:
Entonces, si estoy entendiendo la hoja de datos, el sensor de temperatura entregará un rango de temperatura de -40c a + 85c en el complemento de 8 bits 2. Entonces, un valor bruto de 127 (0x7F) del sensor correspondería a + 85c, y un valor bruto de -128 (0x80) correspondería a -40c. Por lo tanto, el espacio entre lecturas consecutivas (por ejemplo, 0x00 y 0x01) es de aproximadamente 0.5c. Llegué a esta conclusión al tomar el rango de temperatura y dividirlo por el rango de salida del sensor: (85 - (-40)) / (127 - (-128)).
Pero aquí está la parte donde mis matemáticas se vuelven borrosas. Si el rango de temperatura se mantuviera igual (125c de menor a mayor), pero se centrara en 0, pasaría de -62.5 a +62.5). Pero no lo hace. Va desde -40 a 85c. Por lo tanto, el rango de temperatura tiene un desplazamiento positivo de 22.5c. Pero como hay aproximadamente 2 códigos del sensor de temperatura para cada grado Celsius, un valor bruto de 0x00 del sensor correspondería a 11.25c, ¿correcto?
Versión TL; DR: tengo un sensor de temperatura que varía de -40c a + 85c, y devuelve la lectura en el complemento de 8 bits 2. Para obtener la temperatura real en grados Celsius, creo que necesito agregar 11.25 (o solo 11 para mantener las cosas simples) a la salida del sensor. ¿Es esto correcto?