Cuprins:

Măsurarea accelerației folosind ADXL345 și Raspberry Pi: 4 pași
Măsurarea accelerației folosind ADXL345 și Raspberry Pi: 4 pași

Video: Măsurarea accelerației folosind ADXL345 și Raspberry Pi: 4 pași

Video: Măsurarea accelerației folosind ADXL345 și Raspberry Pi: 4 pași
Video: Senzor accelerometru 3 axe GY-291 ADXL345 2024, Noiembrie
Anonim
Image
Image

ADXL345 este un accelerometru cu 3 axe mic, subțire, cu putere foarte mică, cu măsurare cu rezoluție înaltă (13 biți) până la ± 16 g. Datele de ieșire digitală sunt formatate ca un complement de doi biți pe 16 biți și sunt accesibile prin interfața digitală I2 C. Măsurează accelerația statică a gravitației în aplicațiile de detectare a înclinării, precum și accelerația dinamică rezultată din mișcare sau șoc. Rezoluția sa înaltă (3,9 mg / LSB) permite măsurarea modificărilor de înclinație mai mici de 1,0 °.

În acest tutorial este demonstrată interfața modulului senzor ADXL345 cu raspberry pi și a fost ilustrată și programarea acestuia folosind limbajul python. Pentru a citi valorile de accelerație pe toate cele 3 axe, am folosit raspberry pi cu un adaptor I2C. Acest adaptor I2C face conexiunea la modulul senzor mai ușoară și mai fiabilă.

Pasul 1: Hardware necesar:

Hardware necesar
Hardware necesar
Hardware necesar
Hardware necesar
Hardware necesar
Hardware necesar

Materialele de care avem nevoie pentru îndeplinirea obiectivului nostru includ următoarele componente hardware:

1. ADXL345

2. Raspberry Pi

3. Cablu I2C

4. I2C Shield pentru zmeură pi

5. Cablu Ethernet

Pasul 2: conectare hardware:

Conectare hardware
Conectare hardware
Conectare hardware
Conectare hardware

Secțiunea de conectare hardware explică practic conexiunile de cablare necesare între senzor și raspberry pi. Asigurarea conexiunilor corecte este necesitatea de bază în timp ce lucrați la orice sistem pentru ieșirea dorită. Deci, conexiunile necesare sunt următoarele:

ADXL345 va funcționa pe I2C. Iată exemplul schemei de cablare, care demonstrează cum se conectează fiecare interfață a senzorului.

Out-of-the-box, placa este configurată pentru o interfață I2C, ca atare, vă recomandăm să utilizați această conexiune dacă sunteți altfel agnostic.

Nu ai nevoie decât de patru fire! Sunt necesare doar patru conexiuni Vcc, Gnd, SCL și pinii SDA și acestea sunt conectate cu ajutorul cablului I2C.

Aceste conexiuni sunt prezentate în imaginile de mai sus.

Pasul 3: Cod pentru măsurarea accelerației:

Cod pentru măsurarea accelerației
Cod pentru măsurarea accelerației

Avantajul utilizării raspberry pi este că vă oferă flexibilitatea limbajului de programare în care doriți să programați placa pentru a interfața senzorul cu aceasta. Profitând de acest avantaj al acestei plăci, demonstrăm aici programarea sa în python. Codul python pentru ADXL345 poate fi descărcat din comunitatea noastră github care este Control Everything Community.

Pe lângă ușurința utilizatorilor, explicăm și codul aici:

Ca prim pas de codare, trebuie să descărcați biblioteca smbus în cazul python, deoarece această bibliotecă acceptă funcțiile utilizate în cod. Deci, pentru a descărca biblioteca puteți vizita următorul link:

pypi.python.org/pypi/smbus-cffi/0.5.1

Puteți copia codul Python de lucru pentru acest senzor și de aici:

import smbus

timpul de import

# Obțineți autobuzul I2C = smbus. SMBus (1)

# Adresă ADXL345, 0x53 (83)

# Selectați registrul ratei lățimii de bandă, 0x2C (44)

# 0x0A (10) Mod normal, rata de ieșire a datelor = 100 Hz

bus.write_byte_data (0x53, 0x2C, 0x0A)

# Adresă ADXL345, 0x53 (83)

# Selectați registrul de control al puterii, 0x2D (45)

# 0x08 (08) Dezactivare oprire automată

bus.write_byte_data (0x53, 0x2D, 0x08)

# Adresă ADXL345, 0x53 (83)

# Selectați registrul formatului de date, 0x31 (49)

# 0x08 (08) Autotest dezactivat, interfață cu 4 fire

# Rezoluție completă, interval = +/- 2g

bus.write_byte_data (0x53, 0x31, 0x08)

time.sleep (0,5)

# Adresă ADXL345, 0x53 (83)

# Citiți datele înapoi de la 0x32 (50), 2 octeți

# Axa X LSB, Axa X MSB

data0 = bus.read_byte_data (0x53, 0x32)

data1 = bus.read_byte_data (0x53, 0x33)

# Convertiți datele în 10 biți

xAccl = ((data1 & 0x03) * 256) + data0

dacă xAccl> 511:

xAccl - = 1024

# Adresă ADXL345, 0x53 (83)

# Citiți datele înapoi de la 0x34 (52), 2 octeți

# Axa Y LSB, axa Y MSB

data0 = bus.read_byte_data (0x53, 0x34)

data1 = bus.read_byte_data (0x53, 0x35)

# Convertiți datele în 10 biți

yAccl = ((data1 & 0x03) * 256) + data0

dacă yAccl> 511:

yAccl - = 1024

# Adresă ADXL345, 0x53 (83)

# Citiți datele înapoi de la 0x36 (54), 2 octeți

# Z-Axis LSB, Z-Axis MSB

data0 = bus.read_byte_data (0x53, 0x36)

data1 = bus.read_byte_data (0x53, 0x37)

# Convertiți datele în 10 biți

zAccl = ((date1 și 0x03) * 256) + date0

dacă zAccl> 511:

zAccl - = 1024

# Ieșire date pe ecran

print "Accelerare în axa X:% d"% xAccl

print "Accelerare în axa Y:% d"% yAccl

print "Accelerare în axa Z:% d"% zAccl

Partea de cod menționată mai jos include bibliotecile necesare pentru executarea corectă a codurilor python.

import smbusimport timp

Codul poate fi executat tastând comanda menționată mai jos în promptul de comandă.

$> python ADXL345.py

Ieșirea senzorului este, de asemenea, prezentată în imaginea de mai sus pentru referința utilizatorului.

Pasul 4: Aplicații:

Aplicații
Aplicații

ADXL345 este un accelerometru cu 3 axe mic, subțire, cu putere foarte mică, care poate fi utilizat în receptoare, instrumente medicale etc. Aplicația sa include, de asemenea, dispozitive pentru jocuri și indicare, instrumentare industrială, dispozitive de navigație personală și protecție pentru unitatea de disc (HDD).

Recomandat: