Cum Se Conectează Un Accelerometru La Arduino

Cuprins:

Cum Se Conectează Un Accelerometru La Arduino
Cum Se Conectează Un Accelerometru La Arduino

Video: Cum Se Conectează Un Accelerometru La Arduino

Video: Cum Se Conectează Un Accelerometru La Arduino
Video: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, Mai
Anonim

De data aceasta ne vom ocupa de conectarea accelerometrului triaxial analog ADXL335 la Arduino.

Accelerometru analog ADXL335
Accelerometru analog ADXL335

Necesar

  • - Arduino;
  • - accelerometru ADXL335;
  • - un computer personal cu mediul de dezvoltare Arduino IDE.

Instrucțiuni

Pasul 1

Accelerometrele sunt utilizate pentru a determina vectorul de accelerație. Accelerometrul ADXL335 are trei axe și, datorită acestui fapt, poate determina vectorul de accelerație în spațiul tridimensional. Datorită faptului că forța gravitațională este, de asemenea, un vector, accelerometrul își poate determina propria orientare în spațiul tridimensional în raport cu centrul Pământului.

Ilustrația prezintă imagini din pașaport (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) pentru accelerometrul ADXL335. Aici sunt prezentate axele de coordonate ale sensibilității accelerometrului în raport cu plasarea geometrică a corpului dispozitivului în spațiu, precum și un tabel cu valori de tensiune de la 3 canale ale accelerometrului în funcție de orientarea acestuia în spațiu. Datele din tabel sunt date pentru un senzor în repaus.

Să aruncăm o privire mai atentă la ceea ce ne arată accelerometrul. Lăsați senzorul să se întindă orizontal, de exemplu, pe o masă. Apoi proiecția vectorului de accelerație va fi egală cu 1g de-a lungul axei Z sau Zout = 1g. Celelalte două axe vor avea zerouri: Xout = 0 și Yout = 0. Când senzorul este rotit „pe spate”, acesta va fi direcționat în direcția opusă în raport cu vectorul gravitațional, adică. Zout = -1g. În mod similar, măsurătorile sunt luate pe toate cele trei axe. Este clar că accelerometrul poate fi poziționat așa cum se dorește în spațiu, așa că vom lua alte citiri decât zero de pe toate cele trei canale.

Dacă sonda este puternic scuturată de-a lungul axei Z verticale, valoarea Zout va fi mai mare decât „1g”. Accelerația maximă măsurabilă este „3g” în fiecare dintre axe în orice direcție (adică ambele cu „plus” și „minus”).

Axele sensibilității accelerometrului și tabelul valorilor de ieșire
Axele sensibilității accelerometrului și tabelul valorilor de ieșire

Pasul 2

Cred că ne-am dat seama de principiul de funcționare al accelerometrului. Acum să ne uităm la diagrama conexiunii.

Cipul de accelerometru analog ADXL335 este destul de mic și este găzduit într-un pachet BGA și este dificil să-l montați pe o placă acasă. Prin urmare, voi folosi un modul GY-61 gata pregătit cu un accelerometru ADXL335. Astfel de module în magazinele online chinezești costă aproape un bănuț.

Pentru a alimenta accelerometrul, este necesar să alimentați tensiunea +3, 3 V pinului VCC al modulului. Canalele de măsurare ale senzorului sunt conectate la pinii analogici ai Arduino, de exemplu, "A0", "A1" și " A2 ". Acesta este întregul circuit:)

Schema de conectare a accelerometrului ADXL335 la Arduno
Schema de conectare a accelerometrului ADXL335 la Arduno

Pasul 3

Să încărcăm această schiță în memoria Arduino. Vom citi citirile de la intrările analogice pe trei canale, le vom converti în tensiune și le vom ieși în portul serial.

Arduino are un ADC de 10 biți, iar tensiunea maximă permisă a pinului este de 5 volți. Tensiunile măsurate sunt codificate cu biți care pot lua doar 2 valori - 0 sau 1. Aceasta înseamnă că întregul domeniu de măsurare va fi împărțit cu (1 + 1) la a 10-a putere, adică pe 1024 segmente egale.

Pentru a converti citirile în volți, trebuie să împărțiți fiecare valoare măsurată la intrarea analogică la 1024 (segmente) și apoi să înmulțiți cu 5 (volți).

Să vedem ce vine cu adevărat de la accelerometru folosind axa Z ca exemplu (ultima coloană). Când senzorul este poziționat orizontal și privește în sus, numerele vin (2,03 +/- 0,01). Deci, aceasta ar trebui să corespundă accelerației "+ 1g" de-a lungul axei Z și un unghi de 0 grade. Rotiți senzorul. Sosesc numerele (1, 69 +/- 0, 01), care ar trebui să corespundă „-1g” și un unghi de 180 de grade.

Schiță de citire a accelerometrului
Schiță de citire a accelerometrului

Pasul 4

Să luăm valorile din accelerometru la unghiuri de 90 și 270 de grade și să le introducem în tabel. Tabelul prezintă unghiurile de rotație ale accelerometrului (coloana "A") și valorile Zout corespunzătoare în volți (coloana "B").

Pentru claritate, este prezentat un grafic de tensiuni la ieșirea Zout față de unghiul de rotație. Câmpul albastru este domeniul în repaus (la o accelerare de 1g). Caseta roz din grafic este o marjă, astfel încât să putem măsura accelerația până la + 3g și până la -3g.

La o rotație de 90 de grade, axa Z are o accelerație zero. Acestea. o valoare de 1,67 volți este un zero condițional Zo pentru axa Z. Apoi puteți găsi accelerația astfel:

g = Zout - Zo / sensibilitate_z, aici Zout este valoarea măsurată în milivolți, Zo este valoarea la accelerarea zero în milivolți, sensibilitatea_z este sensibilitatea senzorului de-a lungul axei Z. Calibrați accelerometrul și calculați valoarea sensibilității în mod specific pentru dvs. senzor folosind formula:

sensibilitate_z = [Z (0 grade) - Z (90 grade)] * 1000. În acest caz, sensibilitatea accelerometrului de-a lungul axei Z = (2, 03 - 1, 68) * 1000 = 350 mV. În mod similar, sensibilitatea va trebui calculată pentru axele X și Y.

Coloana "C" a tabelului arată accelerația calculată pentru cinci unghiuri la o sensibilitate de 350. După cum puteți vedea, acestea coincid practic cu cele prezentate în Figura 1.

Corespondența unghiurilor de rotație a accelerometrului cu citirile
Corespondența unghiurilor de rotație a accelerometrului cu citirile

Pasul 5

Amintind cursul de bază al geometriei, obținem formula pentru calcularea unghiurilor de rotație ale accelerometrului:

angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Valorile sunt în radiani. Pentru a le converti în grade, împărțiți la Pi și înmulțiți cu 180.

Ca rezultat, în schiță este prezentată o schiță completă care calculează unghiurile de accelerație și rotație ale accelerometrului de-a lungul tuturor axelor. Comentariile oferă explicații pentru codul programului.

La ieșirea la portul „Serial.print ()”, caracterul „\ t” denotă un caracter tab, astfel încât coloanele să fie uniforme, iar valorile să fie situate una sub cealaltă. „+” înseamnă concatenarea (concatenarea) șirurilor. Mai mult, operatorul „String ()” îi spune în mod explicit compilatorului că valoarea numerică trebuie convertită într-un șir. Operatorul round () rotunjește colțul la cel mai apropiat 1 grad.

O schiță care calculează accelerația și unghiurile accelerometrului
O schiță care calculează accelerația și unghiurile accelerometrului

Pasul 6

Deci, am învățat cum să preluăm și să prelucrăm date de pe accelerometrul analog ADXL335 folosind Arduino. Acum putem folosi accelerometrul în proiectele noastre.

Recomandat: