Ripristino dei dati da un accelerometro saturo


10

Ho un accelerometro ADXL345 e l'ho montato su un razzo ibrido per il lancio. Sfortunatamente, ho dimenticato di impostare l'intervallo dal suo valore predefinito di +/- 2 g a +/- 8 g (ci aspettavamo 6 g durante il decollo).

Per un intervallo di +/- 2 g, il foglio dati elenca una risoluzione di uscita di 10 bit e per +/- 8 g una risoluzione di 12 bit.

Ho notato questo nel DATA_FORMATfoglio dati collegato sopra, sotto il registro (0x31):

Il registro DATA_FORMAT controlla la presentazione dei dati nel registro 0x32 tramite il registro 0x37. Tutti i dati, ad eccezione di quelli compresi nell'intervallo +/- 16 g, devono essere ritagliati per evitare il rollover. ( enfatizzare il mio )

Sulla base di questa affermazione e dello schema a blocchi funzionale (un sensore a 3 assi è collegato a "sensori elettronici", quindi collegato a un ADC), spero che ci sia un modo per risolvere i dati corretti. I fattori di scala sono elencati a pagina 3 del foglio dati.

Esiste un modo per risolvere questi dati, almeno fino a 1 o 2 cifre significative? (Ad esempio, ho un rilevamento di 1,9414 g - questo dovrebbe essere circa 6). Non penso che il sensore sia saturo, ma semplicemente il numero nei registri dei dati - e dati i fattori di scala e un po 'di spostamento creativo dei bit (non è del tutto chiaro come ottengano da 10 a 12 bit quando si cambia risoluzione), spero di poterlo fare recuperare qualcosa di utile dai miei dati.


Se traccia i tuoi dati assumendo un display 2g con il passaggio del mouse in modo da vedere i 2g inferiori di una parola più lunga, come appare il risultato. Per la g in salita, ti auguro di vedere una serie di denti da sega. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
Russell McMahon,

Ci proverò una volta recuperato il razzo. I dati che ho sono insufficienti poiché li abbiamo persi dietro una nuvola ..
Dang Khoa,

Risposte:


7

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 .


grande! non appena recupereremo il razzo, lo proverò. A partire da ora abbiamo dovuto noleggiare un Cessna per aiutarlo a trovarlo .. ma speriamo di essere fortunati.
Dang Khoa,

Sembra che non saremo in grado di recuperare il nostro razzo, quindi questa discussione è un po 'controversa (ho solo un paio di punti dati dalla stazione di terra). Ma grazie!
Dang Khoa,

@davidcary, i circuiti aperti: il collegamento del Rocket Computer è interrotto
Mahendra Gunawardena,

@MahendraGunawardena: Grazie per avermelo detto. Funziona adesso?
davidcary,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.