Qual valor você realmente armazenou em "Register 0x31 — DATA_FORMAT"?
Suponho que você não armazenou nada nesse registro, portanto ele ainda está com seu valor de redefinição de 00. Em outras palavras, enquanto você coletava dados (da Tabela 16 e também da página 17 da folha de dados ADXL345 ):
- Registre 0x31 - DATA_FORMAT == 00.
- O FULL_RES == 0. Portanto, o dispositivo está no modo de 10 bits e os bits da faixa determinam a faixa g máxima e o fator de escala.
- O Justify Bit == 0. Então, o modo justificado com extensão de sinal.
- Os bits de intervalo == 00. Então, + - 2g de intervalo.
A primeira coisa que eu faria é recuperar os valores originais de 16 bits conforme lidos no acelerômetro. (ou seja, se eu descuidadamente descartar os dados originais, e tudo o que me resta são números em unidades de "g" que foram calculadas subtraindo algum deslocamento e multiplicado por algum fator de escala incorreto, copiaria os dados coletados em um planilha e divida pelo mesmo fator de escala (incorreto) e adicione esse deslocamento para tentar recuperar algo próximo aos valores originais).
Em seguida, eu representava graficamente os dados e veria se eles se parecem mais com "saturação", "linear" ou "rolagem" (conforme descrito abaixo).
A folha de dados é irritantemente vaga sobre o que acontece quando o sensor experimenta uma aceleração superior a 2 g.
discurso tangencial
Já lhe disse o quanto isso me incomoda quando escritores técnicos insistem em escrever com voz passiva? Quando o escritor usa a voz passiva na frase que você citou,
"Todos os dados, exceto os da faixa de ± 16 g, devem ser cortados para evitar rollover." (página 17)
Não sei dizer exatamente quem deve fazer esse recorte.
Muitas pessoas recomendam o uso da voz ativa . Quando sigo essas recomendações, meu texto geralmente é mais claro sobre quem faz o quê. Não é melhor quando escrevo coisas que são mais fáceis de entender , em vez de usar um estilo que as pessoas foram levadas a pensar que soa "mais profissional" ou "mais acadêmico"?
recorte automático
Meu melhor palpite é que o acelerômetro faz esse recorte automaticamente.
saturação : se você vê a aceleração aumentar através de valores plausíveis, misteriosamente fica preso em um platô, saturando com ou próximo de + 2g, então o acelerômetro "ajuda" cortou os dados para você. Após o recorte, o valor "top" não indica mais "uma aceleração muito próxima de + 2g", mas agora indica "uma aceleração de pelo menos 2g e, possivelmente, muito, muito mais - não há como saber".
Como estava no modo justificado à direita de 10 bits, quando interpreto esses valores de 16 bits como números inteiros assinados normais de 16 bits, espero ver valores que variam de
- 0x01FF = +511, indicando mais de 1.992 g. Possivelmente muito, muito mais.
- 0x01FE = +510, indicando 510/256 g ~ = 1.992 g
- 0x01FD = +509, indicando 510/256 g ~ = 1.988 g
- ...
- 0x0001 = +1, indicando 1/256 g = 0,0039 g
- 0x0000 = 0, indicando 0 g
- 0xFFFF = -1, indicando -1/256 g = 0,0039
- ...
- 0xFE02 = -510, indicando -510/256 = -1,992 g
- 0xFE01 = -511, indicando -511/256 = -1,996 g
- 0xFE00 = -512, indicando algo mais negativo -1,996 g. Possivelmente longe, muito mais negativo.
(Sim, eu sei que 4 casas decimais de precisão não são justificadas para este sensor). (Eu já vi alguns dispositivos saturarem em algum outro ponto, como -511 ou -510. Geralmente, posso olhar para os dados e descobrir o ponto de saturação real).
Você pode recuperar alguns dados úteis desse conjunto de dados cortados. Você pode usá-lo para medir, por exemplo, quantos milissegundos a aceleração foi de pelo menos 1,5 g. Infelizmente, quando você vê os platôs nesse tipo de conjunto de dados, é impossível medir a aceleração máxima ou o impulso total - o melhor que você pode fazer é dizer: "bem, sabemos que a aceleração máxima é de pelo menos 2g e provavelmente mais "e calcule" bem, calculamos que o impulso total é de pelo menos (algo) newton * segundo ".
alternativas
Deveria ser possível descobrir se o acelerômetro recorta ou não os dados. (Descrevi "saturação", "linear" e "rolagem" em termos de aceleração - com alguns conjuntos de dados, pode ser mais claro observar a aceleração).
linear : se a aceleração aumentar com valores plausíveis, continue subindo para valores mais altos (valores acima de 512 ou mais negativos que -512), e você teve sorte - o acelerômetro não fez nenhum recorte e você tem dados válidos em todo o intervalo.
rolagem : se você observar a aceleração acelerar através de valores plausíveis e, pouco antes de chegar a +2 g, ela salta instantaneamente para um valor não fisicamente realista próximo a -2 ge depois continua a acelerar - possivelmente aumentando através de zero, aproximando-se de + 2g novamente e saltando para baixo perto de -2g novamente - então você terá uma rolagem. Se você tiver sorte, os valores mudam extremamente suavemente, tornando possível detectar cada rolagem e "desembrulhar" esses valores para recuperar a verdadeira força g.
ps: fique à vontade para editar Open Circuits: Rocket Computer .