Cómo obtener valores en términos de G en el tablero de descubrimiento STM32F3

0

Estoy trabajando en STM32 F3 Discovery Board. Estoy accediendo al acelerómetro del tablero. Mientras lo hago, obtengo valores para los ejes X, Y y Z. Pero estos valores son algunos números aleatorios. Quiero la salida en términos de G (9.8). La sensibilidad del sensor se establece en 2g. La función que escribí para obtener estos valores es la siguiente: Estoy mostrando código para un eje solo porque es el mismo para los tres ejes.

USART_SendData(USART1, 'Y');
    //  tab=Yval;
    tab= (int8_t)Buffer[1];
        if(tab<0)
        {
        USART_SendData(USART1, '-');
            tab*=-1;
        }
        rem=tab/100;
        tab=tab-rem*100;
        s=rem+48;
        USART_SendData(USART1,s);
         Delay(5);
        rem=tab/10;
        tab=tab-rem*10;
        s=rem+48;
        USART_SendData(USART1,s);
         Delay(5);
        rem=tab;
        //tab=tab-rem*100;
        s=rem+48;
        USART_SendData(USART1,s);
         Delay(5);
        //  send(tab);
            USART_SendData(USART1, '\n');

             Delay(5);

También leí en la hoja de datos del acelerador usado en la placa " LIS302DL " que estos valores se almacenan en los registros Outx, Outy y Outz pero no puedo acceder a estos registros. Por favor, ayúdame a obtener los valores en términos de G.

    
pregunta Ravi Sharma

3 respuestas

4

Puede calcular la escala de su sensor repitiendo su medición con la placa volteada. La diferencia entre las dos medidas será 2g. Entonces, registra tus valores x1, y1 y z1. Da la vuelta al tablero y registra los valores de segundo x2, y2 y z2. Sus cero puntos son entonces el promedio de cada par de lecturas.

X0 = (x1 + x2) / 2. (Igual para y0 y z0)

El escalado es la distancia entre las dos mediciones dividida por 2g

Cuentas por g = Sqrt ((z1-z2) ^ 2 + (y1-y2) ^ 2 + (x1-x2) ^ 2) / 2

Si solo una medida cambia significativamente (por ejemplo, x), mientras que las otras dos tienen casi el mismo valor, esto se simplifica a:

Cuentas por g = (X1-x2) / 2

    
respondido por el harry courtice
3

El STM32F3 Discovery tiene el LSM303DLHC a bordo. La hoja de datos está en enlace

De acuerdo con la página 10 de ese documento, la sensibilidad es 1, 2, 4 o 12 mili-G por LSB, dependiendo de si los bits de FS se establecen a 00, 01, 10 o 11 respectivamente (correspondiente a un rango de +/- 2, 4, 8 o 16 G).

Suponiendo que el código de la resolución completa está siendo leído por su código, entonces se multiplicaría por la sensibilidad adecuada y se dividiría por 1000 para obtener su lectura en G. Deberá resolverlo usted mismo (o tal vez alguien pueda mirar su código y agregarlo) cómo se configuran los bits FS en su caso especial.

    
respondido por el Scott Seidman
0

los números extraños que obtienes no son tan raros, son señales digitales, por lo que si obtuviste un dispositivo de 8 bits, la salida de ese dispositivo está entre 0 y 255.

Si desea el valor en valor de significado físico, necesita encontrar la resolución de su acelerómetro que multiplicar ese valor por el valor digital.

Por supuesto, no puede acceder al registro, están en el dispositivo. Necesita hablar con el dispositivo ya sea en SPI o I2C. Si el dispositivo ya está en su desarrollo, debe leer la hoja de datos de su placa para saber si el acelerómetro está conectado en SPI o I2C.

Saludos MathieuL.

    
respondido por el MathieuL

Lea otras preguntas en las etiquetas