Quale valore hai effettivamente archiviato in "Register 0x31 — DATA_FORMAT"?
Presumo che tu non abbia archiviato nulla in quel registro, quindi è ancora nel suo valore di reset di 00. In altre parole, mentre raccoglievi dati (dalla Tabella 16 e anche dalla pagina 17 del foglio dati ADXL345 ):
- Registrati 0x31 — DATA_FORMAT == 00.
- FULL_RES == 0. Quindi il dispositivo è in modalità 10 bit e i bit di intervallo determinano l'intervallo g massimo e il fattore di scala.
- The Justify Bit == 0. Modo giustificato giusto con estensione del segno.
- I bit di intervallo == 00. Quindi + - intervallo di 2g.
La prima cosa che vorrei fare è recuperare i valori originali a 16 bit come letti dall'accelerometro. (vale a dire, se avessi distrattamente buttato via i dati originali e tutto ciò che mi restasse sono numeri in unità di "g" che sono stati calcolati sottraendo un offset e moltiplicato per un fattore di scala errato, copierei i dati raccolti in un foglio di calcolo e dividi per lo stesso fattore di scala (errato), quindi aggiungi quell'offset per provare a recuperare qualcosa vicino ai valori originali).
Quindi vorrei rappresentare graficamente i dati e vedere se assomiglia più a "saturazione", "lineare" o "roll-over" (come descritto di seguito).
Il foglio dati è esasperante su ciò che accade quando il sensore subisce un'accelerazione maggiore di 2 g.
tangant rant
Ti ho detto quanto mi dà fastidio quando gli scrittori tecnici insistono a scrivere con la voce passiva? Quando lo scrittore usa la voce passiva nella frase che hai citato,
"Tutti i dati, tranne quelli per un intervallo di ± 16 g, devono essere troncati per evitare il ribaltamento." (pagina 17)
Non posso dire chi dovrebbe fare esattamente questo ritaglio.
Molte persone raccomandano di usare la voce attiva . Quando seguo queste raccomandazioni, il mio testo è di solito più chiaro su chi fa cosa. Non è meglio quando scrivo cose che sono più facili da capire , piuttosto che usare uno stile in cui le persone sono state indotte a pensare che suoni "più professionali" o "più accademici"?
ritaglio automatico
La mia ipotesi migliore è che l'accelerometro esegua automaticamente questo clipping.
saturazione : se vedi che l'accelerazione sale attraverso valori plausibili, allora misteriosamente rimani bloccata su un plateau, saturo a + 2 g o quasi, quindi l'accelerometro "utile" ha tagliato i dati per te. Dopo il clipping, il valore "top" non indica più "un'accelerazione molto vicina a + 2g", ma ora indica "un'accelerazione di almeno 2g, e forse molto, molto di più - non c'è modo di dirlo".
Poiché era in modalità giustificata a destra a 10 bit, quando interpreto quei valori a 16 bit come normali numeri con segno a 16 bit, mi aspetto di vedere valori che vanno da
- 0x01FF = +511, che indica più di 1.992 g. Forse molto, molto di più.
- 0x01FE = +510, che indica 510/256 g ~ = 1.992 g
- 0x01FD = +509, che indica 510/256 g ~ = 1.988 g
- ...
- 0x0001 = +1, indicando 1/256 g = 0,0039 g
- 0x0000 = 0, che indica 0 g
- 0xFFFF = -1, che indica -1/256 g = 0,0039
- ...
- 0xFE02 = -510, che indica -510/256 = -1.992 g
- 0xFE01 = -511, che indica -511/256 = -1.996 g
- 0xFE00 = -512, che indica qualcosa di più negativo -1,996 g. Forse molto, molto più negativo.
(Sì, so che 4 decimali di precisione non sono garantiti per questo sensore). (Ho visto alcuni dispositivi saturare in qualche altro punto, come -511 o -510. Di solito posso guardare i dati e capire il punto di saturazione reale).
È possibile recuperare alcuni dati utili da questo set di dati troncato. Puoi usarlo per misurare, per esempio, quanti millisecondi l'accelerazione è stata di almeno 1,5 g. Purtroppo, quando vedi gli altipiani in questo tipo di set di dati, è impossibile misurare l'accelerazione massima o l'impulso totale - il meglio che puoi fare è dire "beh, sappiamo che l'accelerazione massima è almeno 2g e probabilmente più ", e calcola" bene, calcoliamo che l'impulso totale è almeno (qualcosa) newton * secondo ".
alternative
Dovrebbe essere possibile capire se l'accelerometro taglia o meno i dati. (Ho descritto "saturazione", "lineare" e "roll-over" in termini di accelerazione: con alcuni insiemi di dati, potrebbe essere più chiaro osservare invece la decelerazione).
lineare : se vedi che l'accelerazione aumenta attraverso valori plausibili, quindi continua a salire a valori più alti (valori superiori a 512 o più negativi di -512), allora sei fortunato: l'accelerometro non ha effettivamente effettuato alcun clipping e hai dati validi su tutto l'intervallo.
roll-over : se vedi che l'accelerazione aumenta attraverso valori plausibili e appena prima di arrivare a +2 g, salta istantaneamente a un valore non fisicamente realistico vicino a -2 g e poi continua a salire - possibilmente andando attraverso lo zero, quindi avvicinandosi di nuovo a + 2 g e saltando di nuovo vicino a -2 g di nuovo - quindi si esegue il roll-over avvolgente. Se sei fortunato, i valori cambiano in modo estremamente fluido, rendendo possibile rilevare ogni rollover e "scartare" questi valori per recuperare la vera forza g.
ps: sentiti libero di modificare Open Circuits: Rocket Computer .