Kazalo:

Merjenje pospeška z uporabo ADXL345 in Raspberry Pi: 4 koraki
Merjenje pospeška z uporabo ADXL345 in Raspberry Pi: 4 koraki

Video: Merjenje pospeška z uporabo ADXL345 in Raspberry Pi: 4 koraki

Video: Merjenje pospeška z uporabo ADXL345 in Raspberry Pi: 4 koraki
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Julij
Anonim
Image
Image

ADXL345 je majhen, tanek, 3-osni merilnik pospeška z ultra nizko močjo z visoko ločljivostjo (13-bitnimi) meritvami do ± 16 g. Digitalni izhodni podatki so oblikovani kot 16-bitni dvojčki, ki se dopolnjujejo in so dostopni prek digitalnega vmesnika I2 C. Meri statični pospešek gravitacije v aplikacijah za zaznavanje nagiba, pa tudi dinamični pospešek, ki je posledica gibanja ali udarca. Njegova visoka ločljivost (3,9 mg/LSB) omogoča merjenje naklonskih sprememb pod 1,0 °.

V tej vadnici je prikazano povezovanje senzorskega modula ADXL345 z malino pi, ponazorjeno pa je tudi njegovo programiranje z uporabo jezika python. Za odčitavanje vrednosti pospeška na vseh 3-osi smo uporabili malino pi z adapterjem I2C, ki omogoča enostavno in zanesljivo povezavo s senzorskim modulom.

1. korak: Potrebna strojna oprema:

Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema

Materiali, ki jih potrebujemo za dosego našega cilja, vključujejo naslednje komponente strojne opreme:

1. ADXL345

2. Malina Pi

3. Kabel I2C

4. I2C ščit za malinovo pi

5. Ethernetni kabel

2. korak: Priključitev strojne opreme:

Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme

Oddelek za priključitev strojne opreme v bistvu razlaga potrebne povezave ožičenja med senzorjem in malinovim pi. Zagotavljanje pravilnih povezav je osnovna potreba pri delu na katerem koli sistemu za želeni izhod. Torej so potrebne povezave naslednje:

ADXL345 bo deloval preko I2C. Tu je primer sheme ožičenja, ki prikazuje, kako povezati vsak vmesnik senzorja.

Plošča je že pripravljena za vmesnik I2C, zato priporočamo uporabo te povezave, če niste agnostični.

Vse kar potrebujete so štiri žice! Potrebne so le štiri povezave Vcc, Gnd, SCL in SDA, ki so povezane s kablom I2C.

Te povezave so prikazane na zgornjih slikah.

3. korak: Koda za merjenje pospeška:

Koda za merjenje pospeška
Koda za merjenje pospeška

Prednost uporabe maline pi je, da vam omogoča prilagodljivost programskega jezika, v katerem želite programirati ploščo, da povežete senzor z njo. Če izkoristimo to prednost te plošče, tukaj dokazujemo njeno programiranje v pythonu. Kodo python za ADXL345 lahko prenesete iz naše skupnosti github, ki je skupnost Control Everything.

Poleg lažjega uporabnika kodo razlagamo tudi tukaj:

Kot prvi korak kodiranja morate prenesti knjižnico smbus v primeru pythona, ker ta knjižnica podpira funkcije, ki se uporabljajo v kodi. Če želite prenesti knjižnico, obiščite naslednjo povezavo:

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

Delovno kodo python za ta senzor lahko kopirate tudi od tu:

uvoz smbus

čas uvoza

# Pridobite vodilo I2C = smbus. SMBus (1)

# Naslov ADXL345, 0x53 (83)

# Izberite register pasovne širine, 0x2C (44)

# 0x0A (10) Običajen način, hitrost izhodnih podatkov = 100 Hz

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

# Naslov ADXL345, 0x53 (83)

# Izberite register za nadzor moči, 0x2D (45)

# 0x08 (08) Onemogočanje samodejnega spanja

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

# Naslov ADXL345, 0x53 (83)

# Izberite register oblike zapisa podatkov, 0x31 (49)

# 0x08 (08) Samopreizkus onemogočen, 4-žični vmesnik

# Polna ločljivost, razpon = +/- 2g

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

time.sleep (0,5)

# Naslov ADXL345, 0x53 (83)

# Preberite podatke nazaj iz 0x32 (50), 2 bajta

# X-os LSB, X-os MSB

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

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

# Pretvorite podatke v 10-bitne

xAccl = ((podatki1 & 0x03) * 256) + podatki0

če je xAccl> 511:

xAccl -= 1024

# Naslov ADXL345, 0x53 (83)

# Preberite podatke nazaj iz 0x34 (52), 2 bajta

# Y-osi LSB, Y-osi MSB

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

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

# Pretvorite podatke v 10-bitne

yAccl = ((podatki1 & 0x03) * 256) + podatki0

če je yAccl> 511:

yAccl -= 1024

# Naslov ADXL345, 0x53 (83)

# Preberite podatke nazaj iz 0x36 (54), 2 bajta

# Z-os LSB, Z-os MSB

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

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

# Pretvorite podatke v 10-bitne

zAccl = ((podatki1 & 0x03) * 256) + podatki0

če je zAccl> 511:

zAccl -= 1024

# Iznesite podatke na zaslon

natisni "Pospešek v osi X: %d" %xAccl

natisni "Pospešek v osi Y: %d" %yAccl

natisni "Pospešek v osi Z: %d" %zAccl

Del spodaj omenjene kode vključuje knjižnice, potrebne za pravilno izvedbo kod Python.

uvoz smbusimport čas

Kodo lahko izvedete tako, da v ukazni poziv vnesete spodnji ukaz.

$> python ADXL345.py

Izhod senzorja je prikazan tudi na zgornji sliki za referenco uporabnika.

4. korak: Aplikacije:

Aplikacije
Aplikacije

ADXL345 je majhen, tanek, 3-osni merilnik pospeška z ultra nizko močjo, ki ga je mogoče uporabiti v prenosnih enotah, medicinskih instrumentih itd. Njegova uporaba vključuje tudi igralne in kazalne naprave, industrijske instrumente, osebne navigacijske naprave in zaščito trdega diska (HDD).

Priporočena: