Innholdsfortegnelse:

Måling av akselerasjon ved bruk av ADXL345 og Raspberry Pi: 4 trinn
Måling av akselerasjon ved bruk av ADXL345 og Raspberry Pi: 4 trinn

Video: Måling av akselerasjon ved bruk av ADXL345 og Raspberry Pi: 4 trinn

Video: Måling av akselerasjon ved bruk av ADXL345 og Raspberry Pi: 4 trinn
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, November
Anonim
Image
Image

ADXL345 er et lite, tynt, ultralavt, 3-akset akselerometer med høy oppløsning (13-bit) måling på opptil ± 16 g. Digitale utdata er formatert som 16-biters tokomplement og er tilgjengelig via I2 C digitalt grensesnitt. Den måler den statiske gravitasjonsakselerasjonen i tilt-sensing-applikasjoner, samt dynamisk akselerasjon som følge av bevegelse eller sjokk. Den høye oppløsningen (3,9 mg/LSB) muliggjør måling av hellingsendringer mindre enn 1,0 °.

I denne opplæringen er grensesnittet mellom ADXL345 sensormodulen og bringebær pi demonstrert, og programmeringen ved hjelp av pythonspråk er også illustrert. For å lese akselerasjonsverdiene på alle 3-aksene har vi brukt bringebær pi med en I2C-adapter. Denne I2C-adapteren gjør tilkoblingen til sensormodulen enkel og mer pålitelig.

Trinn 1: Nødvendig maskinvare:

Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves

Materialene vi trenger for å nå målet vårt inkluderer følgende maskinvarekomponenter:

1. ADXL345

2. Bringebær Pi

3. I2C -kabel

4. I2C Shield for bringebær pi

5. Ethernet -kabel

Trinn 2: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

Maskinvaretilkoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og bringebær -pi. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:

ADXL345 fungerer over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren.

Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke denne tilkoblingen hvis du ellers er agnostiker.

Alt du trenger er fire ledninger! Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel.

Disse sammenhengene er vist på bildene ovenfor.

Trinn 3: Kode for måling av akselerasjon:

Kode for måling av akselerasjon
Kode for måling av akselerasjon

Fordelen med å bruke bringebær pi er at det gir deg fleksibiliteten til programmeringsspråket der du vil programmere brettet for å koble sensoren til det. Ved å utnytte denne fordelen med dette brettet, demonstrerer vi her programmeringen i python. Python -koden for ADXL345 kan lastes ned fra vårt github -fellesskap som er Control Everything Community.

I tillegg til brukernes brukervennlighet, forklarer vi koden også her:

Som det første trinnet i kodingen må du laste ned smbus -biblioteket i tilfelle python, fordi dette biblioteket støtter funksjonene som brukes i koden. Så for å laste ned biblioteket kan du besøke følgende lenke:

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

Du kan også kopiere arbeidspythonkoden for denne sensoren herfra:

importer smbus

importtid

# Få I2C -bussbuss = smbus. SMBus (1)

# ADXL345 adresse, 0x53 (83)

# Velg båndbreddehastighetsregister, 0x2C (44)

# 0x0A (10) Normal modus, Utdatahastighet = 100 Hz

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

# ADXL345 adresse, 0x53 (83)

# Velg effektkontrollregister, 0x2D (45)

# 0x08 (08) Deaktivert automatisk søvn

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

# ADXL345 adresse, 0x53 (83)

# Velg register for dataformat, 0x31 (49)

# 0x08 (08) Selvtest deaktivert, 4-leder grensesnitt

# Full oppløsning, område = +/- 2g

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

time.sleep (0,5)

# ADXL345 adresse, 0x53 (83)

# Les data tilbake fra 0x32 (50), 2 byte

# X-Axis LSB, X-Axis MSB

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

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

# Konverter dataene til 10-bits

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

hvis xAccl> 511:

xAccl -= 1024

# ADXL345 adresse, 0x53 (83)

# Les data tilbake fra 0x34 (52), 2 byte

# Y-akse LSB, Y-akse MSB

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

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

# Konverter dataene til 10-bits

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

hvis yAccl> 511:

yAccl -= 1024

# ADXL345 adresse, 0x53 (83)

# Les data tilbake fra 0x36 (54), 2 byte

# Z-Axis LSB, Z-Axis MSB

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

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

# Konverter dataene til 10-bits

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

hvis zAccl> 511:

zAccl -= 1024

# Utdata til skjermen

print "Akselerasjon i X-aksen: %d" %xAccl

print "Akselerasjon i Y-aksen: %d" %yAccl

print "Akselerasjon i Z-aksen: %d" %zAccl

Den delen av koden som er nevnt nedenfor inkluderer bibliotekene som kreves for riktig utførelse av pythonkodene.

import smbusimport tid

Koden kan utføres ved å skrive kommandoen nedenfor i ledeteksten.

$> python ADXL345.py

Sensorens utgang er også vist på bildet ovenfor for referanse til brukeren.

Trinn 4: Søknader:

Applikasjoner
Applikasjoner

ADXL345 er et lite, tynt, ultralavt, 3-akset akselerometer som kan brukes i håndsett, medisinsk instrumentering etc. Applikasjonen inkluderer også spill- og pekeenheter, industriell instrumentering, personlige navigasjonsenheter og beskyttelse mot harddisk (HDD).

Anbefalt: