Innholdsfortegnelse:

Akselerasjonsmåling ved bruk av BMA250 og Arduino Nano: 4 trinn
Akselerasjonsmåling ved bruk av BMA250 og Arduino Nano: 4 trinn

Video: Akselerasjonsmåling ved bruk av BMA250 og Arduino Nano: 4 trinn

Video: Akselerasjonsmåling ved bruk av BMA250 og Arduino Nano: 4 trinn
Video: 25 фактов о Mars Pathfinder с марсоходом Sojourner 1997 года (субтитры) 2024, Juli
Anonim
Image
Image

BMA250 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 I2C 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 skal vi måle akselerasjonen i alle de tre vinkelrette aksene ved hjelp av BMA250 og Arduino Nano.

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. BMA250

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 arduinoen. Å 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:

BMA250 vil fungere 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: Arduino -kode for akselerasjonsmåling:

Arduino -kode for akselerasjonsmåling
Arduino -kode for akselerasjonsmåling
Arduino -kode for akselerasjonsmåling
Arduino -kode for akselerasjonsmåling

La oss begynne med Arduino -koden nå.

Mens vi bruker sensormodulen med Arduino, 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

// BMA250 I2C -adressen er 0x18 (24)

#define Addr 0x18

ugyldig oppsett ()

{

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialize Serial Communication, set baud rate = 9600

Serial.begin (9600);

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg register for registervalg

Wire.write (0x0F);

// Angi område +/- 2g

Wire.write (0x03);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg båndbredderegister

Wire.write (0x10);

// Angi båndbredde 7,81 Hz

Wire.write (0x08);

// Stopp I2C -overføring

Wire.endTransmission (); forsinkelse (300);}

hulrom ()

{

usignerte int -data [0];

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg dataregistre (0x02 - 0x07)

Wire.write (0x02);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 6 byte

Wire.requestFrom (Addr, 6);

// Les de seks byte

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

hvis (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

forsinkelse (300);

// Konverter dataene til 10 bits

float xAccl = ((data [1] * 256.0) + (data [0] & 0xC0)) / 64;

hvis (xAccl> 511)

{

xAccl -= 1024;

}

float yAccl = ((data [3] * 256.0) + (data [2] & 0xC0)) / 64;

hvis (yAccl> 511)

{

yAccl -= 1024;

}

float zAccl = ((data [5] * 256.0) + (data [4] & 0xC0)) / 64;

hvis (zAccl> 511)

{

zAccl -= 1024;

}

// Utdata til seriell skjerm

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

Serial.println (xAccl);

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

Serial.println (yAccl);

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

Serial.println (zAccl);

}

I trådbiblioteket brukes Wire.write () og Wire.read () til å skrive kommandoene og lese sensorutgangen. Serial.print () og Serial.println () brukes til å vise sensorutgangen på den serielle skjermen til Arduino IDE.

Sensorutgangen er vist på bildet ovenfor.

Trinn 4: Søknader:

Applikasjoner
Applikasjoner

Akselerometre som BMA250 finner stort sett sin anvendelse i spillene og bytte profilvisning. Denne sensormodulen brukes også i det avanserte strømstyringssystemet for mobile applikasjoner. BMA250 er en triaksial digital akselerasjonssensor som er integrert med en intelligent bevegelsesutløst avbryterkontroller på brikken.

Anbefalt: