calibrazione accelerometro ADXL345

Salve, sto lavorando a un progetto per la tesi triennale in ingegneria.
Il progetto consiste nella calibrazione di dati accelerometrici, in particolare correggere l'offset, e stimare misure di posizione tramite algoritmi dead reckoning, per poi correggere errori di deriva.
L'accelerometro che uso è l'ADXL345 collegato ad ArduinoMega2560.

Il problema che ho riscontrato è proprio nel fare il codice per la calibrazione.Sulla base della libreria che mi legge i dati, come posso scrivere un codice dove i dati misurati vengono "ripuliti" dall'offset? Ovviamente come riferimento si è preso il vetto (0,0,g). Come posso in seguito leggere i valori di offset? (per fare una tabella riassuntiva)

Nel caso del secondo progetto ho già provveduto a salvare i dati da arduino per poi richiamarli in matlab.

Buona sera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Non capisco la Tua domanda-

se appoggi il sensore su una superfice in piano devi avere i valori 0, 0, g.
Se non lo hai devi calcolare un vettore tridimensionale e sottrarlo al vettore tridimensionale che misuri per una determinata posizione..

Ciao Uwe

Grazie Uwe per aver risposto!

Nella mia confusione mi rendo conto di non essere stata chiara. Cerco di spiegarmi meglio.
Quando leggo i dati dall'accelerometro posizionato su un piano, leggo valori approssimabili a 0,0,g. C'è sempre un margine di errore di +/-0.15 sugli assi x e y, +/-0.25 sull'asse z. Devo quindi risolvere questo problema mettendo a confronto l'accelerazione misurata con quella vera, ovvero il valore senza offset.
Per ricavare l'offset ho capito che basta fare una semplice sottrazione tra il valore misurato dall'accelerometro e quello vero. Cioè:

Off=abs(Amis-Avera)

Ora, come calcolare l'accelerazione vera?
In più tale progetto non devo implementarlo solo per posizioni definite dell'accelerometro, ma per ogni posizione nello spazio.

Stai già usando la libreria ADXL345.h della SparkFun?
Negli esempi della libreria trovi un programma ad hoc per la calibrazione dell'accelerometro in questione:
SparkFun_ADXL345_Calibration

Teoria di funzionamento del sensore:
adxl345-hookup-guide

Nei datasheet riportati nel link di cui sopra, è anche compresa la trattazione matematica relativa agli assi.

ho seguito questo:

https://learn.sparkfun.com/tutorials/adxl345-hookup-guide/calibration

questo non è male

Grazie per la risposta!

La libreria che uso è di Adafruit. Vedendo questi esempi mi è un po' più chiaro.
Andrebbe bene anche questo metodo?

https://www.researchgate.net/publication/261875994_Metodologie_di_calibrazione_delle_strumentazioni_inerziali_il_modified_multi-position_calibration_method_per_la_calibrazione_dei_giroscopi

Doc interessante qui spiega meglio e con matrici
A pag 4 fa le stesse operazioni

interessante link per calibrare accelerometri e magnetometri