Interfejs 3-osiowego czujnika żyroskopowego BMG160 z Arduino Nano: 5 kroków
Interfejs 3-osiowego czujnika żyroskopowego BMG160 z Arduino Nano: 5 kroków
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 Arduino Nano.

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

1. BMG160

2. Arduino Nano

3. Kabel I2C

4. Tarcza I2C dla Arduino Nano

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. Arduino Nano

3. Kabel I2C

4. I2C Shield dla Arduino Nano

Krok 3: Podłączenie sprzętu:

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

Sekcja podłączenia sprzętu zasadniczo wyjaśnia połączenia okablowania wymagane między czujnikiem a Arduino. 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 pomiar żyroskopu Kod Arduino:

3-osiowy pomiar żyroskopu Kod Arduino
3-osiowy pomiar żyroskopu Kod Arduino
3-osiowy pomiar żyroskopu Kod Arduino
3-osiowy pomiar żyroskopu Kod Arduino

Zacznijmy teraz od kodu arduino.

Korzystając z modułu czujnika z arduino, dołączamy bibliotekę Wire.h. Biblioteka "Wire" zawiera funkcje ułatwiające komunikację i2c pomiędzy czujnikiem a płytką arduino.

Cały kod arduino podano poniżej dla wygody użytkownika:

#include// BMG160 I2C adres to 0x68(104)

#define Addr 0x68

pusta konfiguracja()

{

// Zainicjuj komunikację I2C jako MASTER

Wire.początek();

// Zainicjuj komunikację szeregową, ustaw szybkość transmisji = 9600

Serial.początek(9600);

// Rozpocznij transmisję I2C

Wire.beginTransmisja(Addr);

// Wybierz rejestr zakresu

Wire.write(0x0F);

// Skonfiguruj pełny zakres skali 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 żyrometru

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

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

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

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

// Dane wyjściowe do monitora szeregowego

Serial.print("Oś obrotu X: ");

Serial.println(xGyro); Serial.print("Oś obrotu Y: ");

Serial.println(yGyro); Serial.print("Oś obrotu Z: ");

Serial.println(zGyro);

opóźnienie (500);

}

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.