Cómo determinar la temperatura con LSM303DLHC

1

Estoy usando un LSM303DLHC y estoy muy seguro de que la comunicación I2C funciona bien. Ahora estoy tratando de usar el sensor de temperatura de 12 bits del dispositivo. La hoja de datos no está clara y el soporte técnico no es tan rápido.

El parámetro de la hoja de datos, TSDr, descrito como "Cambio de salida del sensor de temperatura frente a la temperatura" tiene un valor típico de "8 LSB / ° C".

Eso parece sugerirme que una lectura de temperatura de 1 (solo un bit alto) sería 1/8 de 1 ° C. Un valor de 8 sería 1 ° C.

Eso no funciona en un rango de temperaturas. No tengo acceso a un termómetro preciso, pero está claro que no sería tan simple como eso.

Esperando que alguien que esté leyendo esto ya lo haya descubierto.

    
pregunta Allan

3 respuestas

2

[No tengo experiencia práctica con este acelerómetro. Lo siguiente se basa únicamente en la lectura de la hoja de datos.]

Consulte sección 7.2.9 en la hoja de datos . Sospecho que no está descartando los 4 bits inferiores del registro TEMP_OUT_L_M .

    
respondido por el Nick Alexeev
1

También tuve este problema hoy, y lo resolví.

La lectura del sensor debe ser: a) intercambiado de bytes, ya que viene en orden big-endian b) desplazado a la derecha por 4 para eliminar los ceros inferiores no utilizados c) se agregaron 20 grados Celsius, porque "0" se calibra a esta temperatura

Código C:

// this is a temporary storage where TEMP_OUT_H_M and TEMP_OUT_L_M
// are read sequentially
uint16_t temp_h_l;

// Normalize temperature; it is big-endian, fixed-point
// 9 bits signed integer, 3 bits fractional part, 4 bits zeros
// and is relative to 20 degrees Celsius
temperature = (20 << 3) + (((int16_t)bswap16 (temp_h_l)) >> 4);

El termómetro parece bastante preciso, lo he comparado con el sensor de temperatura bimetálico de mi multímetro y muestra valores bastante similares. He utilizado un secador de pelo para obtener temperaturas de hasta 60-70 grados, y un poco de hielo para obtener temperaturas de hasta 0 grados, la salida de ambos sensores fue de alrededor de + -1 grados entre sí.

    
respondido por el Andrey Zabolotnyi
0

La página 39 de la hoja de datos nos dice que el valor es un número de complemento a 2.
Entonces 11 bits + 1 bit de signo nos da un rango de -2048 a +2047.
8 pasos por grado significa de -256 a +255.875 grados.
La tabla de especificaciones en la página 11 proporciona un rango de operación de -40 a +85 grados, dentro del rango de los valores reportables. Así que no debería haber ningún problema ...

    
respondido por el brhans

Lea otras preguntas en las etiquetas