lunedì 22 agosto 2016

Fake ADXL345

Mi sono interessato agli accelerometri ADXL345 (dopo un po' di esperienza con ADXL335) per la caratteristica di poter generare interrupt e quindi di poter usare il segnale come trigger per svegliare una Arduino in modalita' sleep.



Per risparmiare (un bel po') mi sono preso dei moduli su Aliexpress 
Usando la libreria ADXL345 di Adafruit i risultati sono i seguenti

------------------------------------
Sensor:       ADXL345
Driver Ver:   1
Unique ID:    12345
Max Value:    -156.91 m/s^2
Min Value:    156.91 m/s^2
Resolution:   0.04 m/s^2
------------------------------------

Data Rate:    100  Hz
Range:         +/- 16  g

X: -3.53  Y: 0.51  Z: 16.08  m/s^2
X: -3.53  Y: 0.51  Z: 16.16  m/s^2
X: -3.53  Y: 0.47  Z: 16.16  m/s^2
X: -3.53  Y: 0.51  Z: 16.12  m/s^2
---------------------------------------
Ovviamente c'e' qualcosa che non torna

Utilizzando lo script a questo link per visualizzare i dati raw si ha per

Z=g     X=-12;Y=-1;Z=51 (X=0g,Y=0g)
Z=-g   X=-11;Y=-5;Z=-17  (X=0g,Y=0g)

Y=g    X=-13; Y=-35; Z=23 (X=0g,Z=0g)
Y=-g  X=-12; Y=31;  Z=21 (X=0g,Z=0g)

X=g    X=-46;  Y= -2;  Z=16 (Z=0g,Y=0g)
X=-g  X=21;     Y=-3;  Z=17 (Z=0g,Y=0g)

Quindi
X varia da -46 a +21 con un valore centrale di 12
Y varia da -35 a +31 con un valore centrale circa -3
Z varia da -17 a +51 con un valore centrale di  circa 17

ci sono un paio di problemi
il primo e' chiaramente che ogni misura ha un offset sensibilmente fuori dallo zero sui tre assi e ciascuno con una propria retta di calibrazione (questo puo' essere corretto con il calcolo)
 Il secondo problema e' che i valori riportati hanno una dinamica troppo limitata (dovrebbero essere dell'ordine del centinaio di unita', non della decina) con un fondo scala a +/- 16g. Cio' comporta che il valore di conversione da digital number ad accelerazione e' completamente sbagliato (dovrebbe essere 1DN = 0.004g)

Come riportato anche da questo post, sono segnalati dei moduli ADXL345 su ecommerce cinesi che sono semplicemente dei falsi e lontani dalle prestazioni del componente originale BOSCH