Innholdsfortegnelse:

Grensesnitt for 3-akse gyroskopsensor BMG160 med Arduino Nano: 5 trinn
Grensesnitt for 3-akse gyroskopsensor BMG160 med Arduino Nano: 5 trinn

Video: Grensesnitt for 3-akse gyroskopsensor BMG160 med Arduino Nano: 5 trinn

Video: Grensesnitt for 3-akse gyroskopsensor BMG160 med Arduino Nano: 5 trinn
Video: Leap Motion SDK 2024, November
Anonim
Image
Image

I dagens verden er mer enn halvparten av ungdommen og barna glad i spill, og alle som er glad i det, fascinert av de tekniske aspektene ved spill, vet viktigheten av bevegelsesføling i dette domenet. Vi ble også overrasket over det samme, og bare for å bringe det på tavlene tenkte vi på å jobbe med en gyroskopsensor som kan måle vinkelfrekvensen til ethvert objekt. Så, sensoren vi tok for å håndtere oppgaven er BMG160. BMG160 er en 16-bits, digital, triaksial, gyroskopsensor som kan måle vinkelfrekvensen i tre vinkelrette romdimensjoner.

I denne opplæringen skal vi demonstrere hvordan BMG160 fungerer med Arduino Nano.

Maskinvaren du trenger for dette formålet er som følger:

1. BMG160

2. Arduino Nano

3. I2C -kabel

4. I2C -skjold for Arduino Nano

Trinn 1: Oversikt over BMG160:

Hva trenger du..!!
Hva trenger du..!!

Først og fremst vil vi gjøre deg kjent med de grunnleggende funksjonene i sensormodulen som er BMG160 og kommunikasjonsprotokollen som den fungerer på.

BMG160 er i utgangspunktet en 16-biters, digital, triaksial, gyroskopsensor som kan måle vinkelhastigheter. Den er i stand til å beregne vinkelhastigheter i tre vinkelrette romdimensjoner, x-, y- og z-aksen, og gi de tilsvarende utgangssignalene. Den kan kommunisere med bringebær -pi -kortet ved hjelp av I2C -kommunikasjonsprotokollen. Denne modulen er designet for å oppfylle kravene til forbrukerapplikasjoner så vel som industrielle formål.

Kommunikasjonsprotokollen som sensoren fungerer på er I2C. I2C står for den interintegrerte kretsen. Det er en kommunikasjonsprotokoll der kommunikasjonen foregår gjennom SDA (seriell data) og SCL (seriell klokke) linjer. Det tillater tilkobling av flere enheter samtidig. Det er en av de enkleste og mest effektive kommunikasjonsprotokoller.

Trinn 2: Hva du trenger..

Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!
Hva trenger du..!!

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

1. BMG160

2. Arduino Nano

3. I2C -kabel

4. I2C -skjold for Arduino Nano

Trinn 3: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

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

BMG160 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 4: 3-akse gyroskopmåling Arduino-kode:

3-akset gyroskopmåling Arduino-kode
3-akset gyroskopmåling Arduino-kode
3-akset gyroskopmåling Arduino-kode
3-akset gyroskopmåling Arduino-kode

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:

#include // BMG160 I2C -adressen er 0x68 (104)

#define Addr 0x68

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 Avstandsregister

Wire.write (0x0F);

// Konfigurer full skala 2000 dps

Wire.write (0x80);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg båndbredderegister

Wire.write (0x10);

// Angi båndbredde = 200 Hz

Wire.write (0x04);

// Stopp I2C -overføring

Wire.endTransmission ();

forsinkelse (300);

}

hulrom ()

{

usignerte int -data [6];

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg Gyrometer dataregister

Wire.write (0x02);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 6 byte med data

Wire.requestFrom (Addr, 6);

// Les 6 byte med data

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro 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

int xGyro = ((data [1] * 256) + data [0]);

int yGyro = ((data [3] * 256) + data [2]);

int zGyro = ((data [5] * 256) + data [4]);

// Utdata til seriell skjerm

Serial.print ("X-rotasjonsakse:");

Serial.println (xGyro); Serial.print ("Y-aksen for rotasjon:");

Serial.println (yGyro); Serial.print ("Z-aksen for rotasjon:");

Serial.println (zGyro);

forsinkelse (500);

}

Trinn 5: Søknader:

Applikasjoner
Applikasjoner

BMG160 har et variert antall applikasjoner på enheter som mobiltelefoner, grensesnittenheter for mennesker. Denne sensormodulen er designet for å oppfylle kravene til forbrukerapplikasjoner som bildestabilisering (DSC og kameratelefon), spill og pekeenheter. Det brukes også i systemer som krever gjenkjenning av bevegelser og systemene som brukes i innendørs navigasjon.

Anbefalt: