Innholdsfortegnelse:

Måling av akselerasjon ved bruk av ADXL345 og Arduino Nano: 4 trinn
Måling av akselerasjon ved bruk av ADXL345 og Arduino Nano: 4 trinn

Video: Måling av akselerasjon ved bruk av ADXL345 og Arduino Nano: 4 trinn

Video: Måling av akselerasjon ved bruk av ADXL345 og Arduino Nano: 4 trinn
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Juli
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 har grensesnittet mellom ADXL345 sensormodulen og arduino nano blitt illustrert. For å lese akselerasjonsverdiene har vi brukt arduino 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. Arduino Nano

3. I2C -kabel

4. I2C -skjold for Arduino Nano

Trinn 2: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

Maskinvarekoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og arduino nano. Å 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

La oss begynne med arduino -koden nå.

Mens vi bruker sensormodulen med arduinoen, inkluderer vi Wire.h -biblioteket. "Wire" -biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og arduino -kortet.

Hele arduino -koden er gitt nedenfor for brukerens bekvemmelighet:

#inkludere

// ADXL345 I2C -adressen er 0x53 (83)

#define Addr 0x53

ugyldig oppsett ()

{

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialiser seriell kommunikasjon, sett overføringshastighet = 9600

Serial.begin (9600);

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg båndbreddehastighetsregister

Wire.write (0x2C);

// Normal modus, Utdatahastighet = 100 Hz

Wire.write (0x0A);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg effektregistreringsregister

Wire.write (0x2D);

// Deaktiver automatisk søvn

Wire.write (0x08);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg dataformatregister

Wire.write (0x31);

// Selvtest deaktivert, 4-leder grensesnitt, Full oppløsning, Område = +/- 2g

Wire.write (0x08);

// Stopp I2C -overføring

Wire.endTransmission ();

forsinkelse (300);

}

hulrom ()

{

usignerte int -data [6];

for (int i = 0; i <6; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg dataregister

Wire.write ((50 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 6 byte med data

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene til 10-bits

int xAccl = (((data [1] & 0x03) * 256) + data [0]);

hvis (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((data [3] & 0x03) * 256) + data [2]);

hvis (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((data [5] & 0x03) * 256) + data [4]);

hvis (zAccl> 511)

{

zAccl -= 1024;

}

// Utdata til seriell skjerm

Serial.print ("Akselerasjon i X-aksen er:");

Serial.println (xAccl);

Serial.print ("Akselerasjon i Y-aksen er:");

Serial.println (yAccl);

Serial.print ("Akselerasjon i Z-aksen er:");

Serial.println (zAccl);

forsinkelse (300);

}

I trådbiblioteket brukes Wire.write () og Wire.read () til å skrive kommandoene og lese sensorutgangen.

Serial.print () og Serial.println () brukes til å vise sensorens utgang på den serielle skjermen til Arduino IDE.

Sensorens utgang er vist på bildet ovenfor.

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: