Spisu treści:

Interfejs 3-osiowego czujnika żyroskopowego BMG160 z cząstkami: 5 kroków
Interfejs 3-osiowego czujnika żyroskopowego BMG160 z cząstkami: 5 kroków

Wideo: Interfejs 3-osiowego czujnika żyroskopowego BMG160 z cząstkami: 5 kroków

Wideo: Interfejs 3-osiowego czujnika żyroskopowego BMG160 z cząstkami: 5 kroków
Wideo: Moduł akcelerometru z odczytem analogowym - ADXL335 Arduino - ABC-RC.PL 2024, Listopad
Anonim
Image
Image

W dzisiejszym świecie ponad połowa młodzieży i dzieci lubi gry, a wszyscy ci, którzy je lubią, zafascynowani technicznymi aspektami gier, wiedzą, jak ważne jest wykrywanie ruchu w tej dziedzinie. Byliśmy również zdumieni tym samym i żeby wprowadzić to na tablice, pomyśleliśmy o pracy nad czujnikiem żyroskopowym, który może mierzyć prędkość kątową dowolnego obiektu. Tak więc sensor, którym się podjęliśmy, to BMG160. BMG160 to 16-bitowy, cyfrowy, trójosiowy czujnik żyroskopowy, który może mierzyć prędkość kątową w trzech prostopadłych wymiarach pomieszczenia.

W tym samouczku zademonstrujemy działanie BMG160 z Particle Photon.

Sprzęt, którego będziesz potrzebować do tego celu, to:

1. BMG160

2. Foton cząstek

3. Kabel I2C

4. Osłona I2C dla fotonu cząsteczkowego

Krok 1: Przegląd BMG160:

Czego potrzebujesz..!!
Czego potrzebujesz..!!

Przede wszystkim chcielibyśmy zapoznać Państwa z podstawowymi cechami modułu czujnika jakim jest BMG160 oraz protokołem komunikacyjnym na którym pracuje.

BMG160 to w zasadzie 16-bitowy, cyfrowy, trójosiowy czujnik żyroskopowy, który może mierzyć prędkości kątowe. Jest w stanie obliczać prędkości kątowe w trzech prostopadłych wymiarach pomieszczenia, osi x, y i z oraz dostarczać odpowiednie sygnały wyjściowe. Może komunikować się z płytą raspberry pi za pomocą protokołu komunikacyjnego I2C. Ten konkretny moduł został zaprojektowany w celu spełnienia wymagań aplikacji konsumenckich, jak również zastosowań przemysłowych.

Protokół komunikacyjny na którym pracuje czujnik to I2C. I2C oznacza układ scalony. Jest to protokół komunikacyjny, w którym komunikacja odbywa się za pośrednictwem linii SDA (dane szeregowe) i SCL (zegar szeregowy). Umożliwia podłączenie wielu urządzeń jednocześnie. Jest to jeden z najprostszych i najbardziej wydajnych protokołów komunikacyjnych.

Krok 2: Czego potrzebujesz…

Czego potrzebujesz..!!
Czego potrzebujesz..!!
Czego potrzebujesz..!!
Czego potrzebujesz..!!
Czego potrzebujesz..!!
Czego potrzebujesz..!!

Materiały, których potrzebujemy do realizacji naszego celu, obejmują następujące komponenty sprzętowe:

1. BMG160

2. Cząsteczkowy foton

3. Kabel I2C

4. Osłona I2C dla fotonu cząsteczkowego

Krok 3: Podłączenie sprzętu:

Podłączenie sprzętu
Podłączenie sprzętu
Podłączenie sprzętu
Podłączenie sprzętu

Sekcja podłączania sprzętu zasadniczo wyjaśnia połączenia przewodów wymagane między czujnikiem a cząsteczką. Zapewnienie prawidłowych połączeń jest podstawową koniecznością podczas pracy na dowolnym systemie o pożądanej mocy. Tak więc wymagane połączenia są następujące:

BMG160 będzie pracował przez I2C. Oto przykładowy schemat okablowania, pokazujący, jak okablować każdy interfejs czujnika.

Po wyjęciu z pudełka, płyta jest skonfigurowana do interfejsu I2C, dlatego zalecamy korzystanie z tego podłączenia, jeśli jesteś agnostykiem.

Wszystko czego potrzebujesz to cztery przewody! Wymagane są tylko cztery połączenia Vcc, Gnd, SCL i SDA, które są połączone za pomocą kabla I2C.

Połączenia te są pokazane na powyższych zdjęciach.

Krok 4: 3-osiowy kod cząstek do pomiaru żyroskopu:

3-osiowy żyroskopowy kod cząstek do pomiaru
3-osiowy żyroskopowy kod cząstek do pomiaru
3-osiowy żyroskopowy kod cząstek do pomiaru
3-osiowy żyroskopowy kod cząstek do pomiaru

Zacznijmy teraz od kodu cząstek.

Korzystając z modułu czujnika z arduino, dołączamy bibliotekę application.h oraz spark_wiring_i2c.h. Biblioteka "application.h" oraz spark_wiring_i2c.h zawiera funkcje ułatwiające komunikację i2c pomiędzy czujnikiem a cząsteczką.

Cały kod cząstek podano poniżej dla wygody użytkownika:

#włączać

#włączać

// adres BMG160 I2C to 0x68(104)

#define Addr 0x68

int xżyr = 0, yżyr = 0, zżyr = 0;

pusta konfiguracja()

{

// Ustaw zmienną

Particle.variable("i2cdevice", "BMG160");

Particle.variable("xGyro", xGyro);

Particle.variable("yGyro", yGyro);

Particle.variable("zGyro", zGyro);

// Zainicjuj komunikację I2C jako MASTER

Wire.początek();

// Zainicjuj komunikację szeregową

Serial.początek(9600);

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz rejestr zakresu

Wire.write(0x0F);

// Skonfiguruj pełną skalę 2000 dps

Wire.write(0x80);

// Zatrzymaj transmisję I2C

Wire.endTransmission();

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz rejestr przepustowości

Wire.write(0x10);

// Ustaw przepustowość = 200 Hz

Wire.write(0x04);

// Zatrzymaj transmisję I2C

Wire.endTransmission();

opóźnienie(300);

}

pusta pętla()

{

dane int bez znaku[6];

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz rejestr danych

Wire.write(0x02);

// Zatrzymaj transmisję I2C

Wire.endTransmission();

// Żądaj 6 bajtów danych

Wire.requestFrom(Addr, 6);

// Odczytaj 6 bajtów danych

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

if(Przewód.dostępny() == 6)

{

dane[0] = Przewód.odczyt();

dane[1] = Drut.odczyt();

dane[2] = Przewód.odczyt();

dane[3] = Przewód.odczyt();

dane[4] = Przewód.odczyt();

dane[5] = Wire.read();

}

opóźnienie(300);

// Konwertuj dane

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

jeśli (xGyro > 32767)

{

xŻyroskop -= 65536;

}

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

jeśli (yGyro > 32767)

{

yGyro -= 65536;

}

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

jeśli (zGyro > 32767)

{

zGyro -= 65536;

}

// Dane wyjściowe do pulpitu nawigacyjnego

Particle.publish("Oś obrotu X:", String(xGyro));

Particle.publish("Oś obrotu Y:", String(yGyro));

Particle.publish("Oś obrotu Z:", String(zGyro));

opóźnienie (1000);

}

Krok 5: Aplikacje:

Aplikacje
Aplikacje

BMG160 ma zróżnicowaną liczbę zastosowań w urządzeniach takich jak telefony komórkowe, urządzenia interfejsu człowiek-maszyna. Ten moduł czujnika został zaprojektowany, aby spełnić wymagania zastosowań konsumenckich, takich jak stabilizacja obrazu (DSC i aparat-telefon), urządzenia do gier i urządzenia wskazujące. Stosowany jest również w systemach wymagających rozpoznawania gestów oraz systemach stosowanych w nawigacji wewnętrznej.

Zalecana: