collapse

* Posts Recentes

Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


+ LASERs por dropes
[30 de Maio de 2025, 23:11]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

Autor Tópico: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro  (Lida 13900 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #15 em: 30 de Junho de 2014, 12:24 »
Mas assim eu teria de estar a fazer algo byte não, byte sim...

De momento estou a ler os eixos todos e obtenho valores nos restantes, sempre com o byte menos significativo a zeros...

Código: [Seleccione]
            Start_I2C();
            Write_I2C(write_LSM303_ACC);
            Write_I2C(OUT_X_L_A | 0x80);
            Restart_I2C();

            Write_I2C(read_LSM303_ACC);

            M[0] = Read_I2C();
            Ack_I2C();
            M[1] = Read_I2C();
            Ack_I2C();
            M[2] = Read_I2C();
            Ack_I2C();
            M[3] = Read_I2C();
            Ack_I2C();
            M[4] = Read_I2C();
            Ack_I2C();
            M[5] = Read_I2C();

            NotAck_I2C();
            Stop_I2C();

            X = ((M[1] << 8 ) | M[0])>>4;
                sprintf(S, "Leitura X %.5d \n" , X);
                putrs_USART(S);   // send x
           

            Y = ((M[3] << 8 ) | M[2])>>4;
                sprintf(S, "Leitura Y %.5d \n" , Y);
                putrs_USART(S);   // send x



            Z = ((M[5] << 8 ) | M[4])>>4;
                sprintf(S, "Leitura Z %.5d \n" , Z);
                putrs_USART(S);   // send x

David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline msr

  • Mini Robot
  • *
  • Mensagens: 798
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #16 em: 30 de Junho de 2014, 13:29 »
Deixo-te o meu driver completo: https://www.dropbox.com/sh/7zy1ux5s0hkg158/AADCS8RSlb-qVFzP7qhfVPEga
Vê lá se ajuda.
Inclui uma função de teste que faz print de todos os registos e depois começa a ler os valores.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #17 em: 30 de Junho de 2014, 14:07 »
Encontrei isto do datasheet de um acelerometro da mesma família, o LSM303DLH.

Citar
DR bits, in the normal-mode operation, select the data rate at which acceleration samples
are produced. In low-power mode they define the output data resolution. Table 21 shows all
the possible configurations for the DR1 and DR0 bits.

O meu CTRL_REG1_A, estava a 0x3F. O que fazia activar o Low Power Mode. Por algum motivo, no meio de tantas alterações, modifiquei isto também. Nas minhas folhas tinha 0x37... por isso já foi alteração à posteriori :(...

Os valores em baixo são extraídos antes de fazer as tais 4 deslocações à direita (para ter mais resolução).
Agora já recebo alterações no byte menos significativo...

David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #18 em: 30 de Junho de 2014, 14:16 »
Continua a falhar alguma coisa, nem um numero impar, todos pares, não achas isso, digamos que estranho?
Avr fanboy

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #19 em: 30 de Junho de 2014, 14:21 »
Facto foi só falta de pontaria :)

No anterior é normal não aparecerem números ímpares, se a minha teoria se verificar aquilo estava justificado à esquerda.
Aqui já fiz os 4 deslocamentos e já aparecem números mais "confiáveis" ;).

« Última modificação: 30 de Junho de 2014, 14:24 por Dave »
David Martins
Eng. Electrotécnica e de Computadores, UBI

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.986
  • NERD!
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #20 em: 30 de Junho de 2014, 15:40 »
Agora sim, já tens valores mais bonitos ;D

Senso, não tinha números ímpares porque são valores de 12 bits alinhados à esquerda num inteiro de 16 por causa do sinal. Os 4 lsb são sempre 0.

Offline Dave

  • Mini Robot
  • *
  • Mensagens: 368
    • "O Engenhocas"
Re: LSM303DLHC - os problemas de uma "primeira vez" - acelerometro
« Responder #21 em: 30 de Junho de 2014, 16:38 »
O datasheet do LSM303DLHC.... bem.... what piece of crap!

David Martins
Eng. Electrotécnica e de Computadores, UBI