Innholdsfortegnelse:

Grensesnitt mellom 3-akse gyroskopsensor BMG160 med partikkel: 5 trinn
Grensesnitt mellom 3-akse gyroskopsensor BMG160 med partikkel: 5 trinn

Video: Grensesnitt mellom 3-akse gyroskopsensor BMG160 med partikkel: 5 trinn

Video: Grensesnitt mellom 3-akse gyroskopsensor BMG160 med partikkel: 5 trinn
Video: Со щитом или на щите! Австралия с VEEM Marine 2024, Juli
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 Particle Photon.

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

1. BMG160

2. Partikkelfoton

3. I2C -kabel

4. I2C -skjold for partikkelfoton

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

3. I2C -kabel

4. I2C -skjerm for partikkelfoton

Trinn 3: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

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

3-akset gyroskopmåling partikkelkode
3-akset gyroskopmåling partikkelkode
3-akset gyroskopmåling partikkelkode
3-akset gyroskopmåling partikkelkode

La oss begynne med partikkelkoden nå.

Mens vi bruker sensormodulen med arduino, inkluderer vi application.h og spark_wiring_i2c.h biblioteket. "application.h" og spark_wiring_i2c.h biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og partikkelen.

Hele partikkelkoden er gitt nedenfor for brukerens bekvemmelighet:

#inkludere

#inkludere

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

#define Addr 0x68

int xGyro = 0, yGyro = 0, zGyro = 0;

ugyldig oppsett ()

{

// Angi variabel

Partikkel.variabel ("i2cdevice", "BMG160");

Particle.variable ("xGyro", xGyro);

Particle.variable ("yGyro", yGyro);

Partikkel.variabel ("zGyro", zGyro);

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialiser seriekommunikasjon

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

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

hvis (xGyro> 32767)

{

xGyro -= 65536;

}

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

hvis (yGyro> 32767)

{

yGyro -= 65536;

}

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

hvis (zGyro> 32767)

{

zGyro -= 65536;

}

// Utdata til dashbordet

Particle.publish ("X-Axis of Rotation:", String (xGyro));

Particle.publish ("Y-Axis of Rotation:", String (yGyro));

Particle.publish ("Z-Axis of Rotation:", String (zGyro));

forsinkelse (1000);

}

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: