Documente Academic
Documente Profesional
Documente Cultură
Timișoara, 2019
Cuprins
1. Accelerometrul ADXL345............................................................................................3
2. Interfațarea senzorului digital........................................................................................7
3. Măsurarea accelerațiilor unghiulare și liniare................................................................8
4. Bibliografie...................................................................................................................10
2
1. Accelerometrul ADXL345
3
Acest lucru se traduce la 0xA6 pentru a scrie și 0xA7 pentru o citire .
4
Figura 1_4. Descrierea funcțională a pinilor(sursa:[3])
5
Figura 1_5. Regiștrii accelerometrului ADXL345(sursa:[3]).
6
2.Interfațarea senzorului digital
Senzorul digital ales face parte din categoria senzorilor ce comunică folosind magistrala
I 2 C.Acesta corespunde principiilor de funcționare necesare aplicației dorite fiind ușoară
comunicarea cunoscând adresele de identificare, adresele regiștrilor de unde vom citi datele
precum și comenzile de configurare.
Adresa de identificare în cadrul rețelei I2 C ale senzorului ADXL345 este 0x53.
Pentru accelerometrul ADXL345 se vor face următoarele acțiuni :
- Se verifică citirea pe magistrala I 2 C prin apelarea funcției void readFrom(byte address, int
num, byte _buff[]) și scrierea prin void writeTo(byte address, byte val).
- Are loc o trimitere a unui octet de date, 0x2D , ce va comanda accelerometrului intrarea în
modul de măsurare;
char POWER_CTL = 0x2D;//Power Control Register
- Are loc o trimitere a unui octet de date, 0x31 , ce va seta intervalul de măsurare al accelerației
la [-4ḡ,+4ḡ] și selectarea creșterii rezoluției în funcție de valoarea accelerației menținând precizia
de 4mḡ/LSB;
char DATA_FORMAT = 0x31;
- O dată la fiecare 1000ms se trimite 1 singur octet de date, 0x32, adresa după care se va începe
citirea a 6 octeți corespunzători valorilor accelerațiilor de pe cele trei axe;
char DATAX0 = 0x32;
char DATAX1 = 0x33;
char DATAY0 = 0x34;
char DATAY1 = 0x35;
char DATAZ0 = 0x36;
char DATAZ1 = 0x37;
- Datele citite vor fi grupate în funcție de axe și mai apoi convertite în multiplii ai accelerației
gravitaționale ḡ având precizia menționată anterior de 4mḡ pentru fiecare bit;
writeTo(DATA_FORMAT, 0x01);
readFrom( DATAX0, howManyBytesToRead, _buff); //citește accelerațiile de la senzorul
ADXL345
- Pașii descriși anterior se repetă pe tot parcursul măsurătorilor.
Așa cum am precizat mai sus accelerometrul măsoară valoarea accelerației liniare sau
unghiulare și poate depista cu precizie orientarea unui obiect.Domeniile de măsurare pentru
accelerometre pot fi setate de către utilizator ,setată în acest caz la ∓4𝑔𝑔,la fel rezoluția care este
fixată la 10 biți. Pentru această rezoluție și domeniul de măsurare ales accelerometrul va citi valori
cuprinse în intervalul [-511,511],adică 1024 (210 valori) . În registrul 0x31 la bitul de FULL_RES
care, dacă este setat pe 0, pentru a menține la 10 biți intervalul de informație se poate schimba
valoarea pentru a obține o rezoluție mai mare și anume pe 11 biți pentru domeniul de măsurare
∓4𝑔𝑔.
7
În tabelul de mai jos se pot observa modificările în cazul în care folosim o rezoluție mai
mare.
Domenii de măsurare
∓𝟐𝟐𝟐𝟐 ∓𝟒𝟒𝟒𝟒 ∓𝟖𝟖𝟖𝟖 ∓𝟏𝟏𝟏𝟏𝟏𝟏
0x00 0x01 0x10 0x11
[-511,511] [-511,511] [-511,511] [-511,511]
Putem defini accelerometrul ca fiind un sensor care măsoară valorile acceleraţiilor unghiulare
şi liniare la care este supus un echipament sau obiect.
Acceleraţia gravitaţională este specificată în fizică ca fiind acceleraţia imprimată unui
obiect(punct material) de către atracţia Pamântului,când acel punct material se mişcă fără o
rezistenţă.Orice punct material este accelerat spre alt punct material cu aceeași
accelerație,indiferent de masa obiectelor.
La suprafața Pământului accelerația gravitațională variază între 9,78–9,82 m/s² în funcție
de latitudine.
Valoarea standard considerată este cea măsurată la nivelul mării și la latitudinea de 45°, având
𝑚𝑚
valoarea: 𝑔𝑔𝑛𝑛 ≈ 9.80665 2.
𝑠𝑠
𝑚𝑚
La nivelul mării, la ecuator, are valorea aproximativă : g = 9,781 , iar la poli:
𝑠𝑠 2
𝑚𝑚
g = 9,831 2.
𝑠𝑠
8
Accelerometru sesizează schimbările de poziţie ale unui obiect prin măsurarea acceleraţiilor
unghiulare şi liniare pe cele trei axe x, y,z.În funcţie de valoare şi de axa pe care este măsurată
acceleraţia, un accelerometru poate determina cu precizie orientarea unui obiect în spaţiu.
�⎯� �⎯⎯� �⎯� �⎯� adică, �� �⎯⎯� �⎯⎯� �⎯� unde 𝑔𝑔𝑥𝑥 , 𝑔𝑔𝑦𝑦 , 𝑔𝑔𝑧𝑧 sunt proiecţiile vectorului
𝑔𝑔= 𝑔𝑔𝑥𝑥 + 𝑔𝑔𝑦𝑦 + 𝑔𝑔 𝑧𝑧 𝑔𝑔 = 𝑔𝑔𝑥𝑥 𝑖𝑖 + 𝑔𝑔𝑦𝑦 𝑗𝑗 + 𝑔𝑔𝑧𝑧 𝑘𝑘
→ pe cele trei axe şi �⎯����� , �⎯����⎯� , �⎯����⎯� sau, 𝑔𝑔𝑥𝑥 = g*cosα , 𝑔𝑔𝑦𝑦 = g*cos β , 𝑔𝑔𝑧𝑧
𝑔𝑔 𝑔𝑔𝑥𝑥 = 𝑔𝑔 ∗ 𝑖𝑖 𝑔𝑔𝑦𝑦= 𝑔𝑔 ∗ 𝑗𝑗 𝑔𝑔𝑧𝑧 = 𝑔𝑔 ∗ 𝑘𝑘
= g*cos γ, unde cosα , cosβ , cos γ sunt cosinuşii directori ai direcţiei descrise de vectorul → cu
𝑔𝑔
9
fiecare dintre cele 3 axe.
𝑔𝑔𝑥𝑥 , 𝑔𝑔𝑦𝑦 , 𝑔𝑔𝑧𝑧 se mai numesc şi coordonatele vectorului → pe cele 3 axe.
𝑔𝑔
În cazul în care cunoaştem proiecţiile vectorului pe axele de coordonate putem folosi o forma
simplificată de scriere:
�⎯� �𝑔𝑔𝑥𝑥 , 𝑔𝑔𝑦𝑦 , 𝑔𝑔𝑧𝑧 � expresie care se citeşte vector → de coordonate 𝑔𝑔𝑥𝑥 , 𝑔𝑔𝑦𝑦 , 𝑔𝑔𝑧𝑧 .
𝑔𝑔= 𝑔𝑔
⎧ α = �x 2 + y 2 + z 2
𝑥𝑥 = γ ∗ sin β ∗ cos α ⎪
z
� 𝑦𝑦 = γ ∗ sinβ ∗ sin β => β = cos ��x2 +y2 +z2�
−1
𝑧𝑧 = γ cosβ ⎨
⎪ γ = tan−1 � �
y
⎩ x
4.Bibliografie
[1] AN3461(https://www.nxp.com/files/sensors/doc/app_note/AN3461.pdf)
[2] adxl345-digital-accelerometer(https://cdn-learn.adafruit.com/downloads/pdf/adxl345-
digital-accelerometer.pdf)
[3] ADXL345-datashit(http://www.analog.com/media/en/technical-documentation/
data-sheets/ADXL345.pdf)
[4] http://www.analog.com/en/products/mems/memsaccelerometers/adxl345.html#product-overview
10