Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Nykymaailmassa yli puolet nuorista ja lapsista pitää pelaamisesta ja kaikki, jotka pitävät siitä ja ovat kiinnostuneita pelaamisen teknisistä näkökohdista, tietävät liikkeen tunnistamisen tärkeyden tällä alalla. Olimme myös hämmästyneitä samasta asiasta ja vain tuodaksemme sen taululle, ajattelimme työskennellä gyroskooppianturin kanssa, joka voi mitata minkä tahansa kohteen kulmanopeuden. Joten anturi, jonka otimme tehtävän käsittelyyn, on BMG160. BMG160 on 16-bittinen, digitaalinen, kolmiaksiaalinen gyroskooppianturi, joka voi mitata kulmanopeuden kolmessa kohtisuorassa huoneen ulottuvuudessa.
Tässä opetusohjelmassa aiomme osoittaa BMG160: n työskentelyn Arduino Nanon kanssa.
Tähän tarkoitukseen tarvittavat laitteet ovat seuraavat:
1. BMG160
2. Arduino Nano
3. I2C -kaapeli
4. I2C -kilpi Arduino Nanolle
Vaihe 1: Yleiskatsaus BMG160:
Ensinnäkin haluamme tutustua BMG160 -anturimoduulin perusominaisuuksiin ja tiedonsiirtoprotokollaan, jolla se toimii.
BMG160 on pohjimmiltaan 16-bittinen, digitaalinen, kolmiaksiaalinen gyroskooppianturi, joka voi mitata kulmanopeuksia. Se pystyy laskemaan kulmanopeudet kolmella kohtisuoralla huonemitalla, x-, y- ja z-akselilla, ja tuottamaan vastaavat lähtösignaalit. Se voi kommunikoida vadelmapi -levyn kanssa I2C -yhteyskäytännön avulla. Tämä moduuli on suunniteltu täyttämään kuluttaja- ja teollisuuskäyttöön liittyvät vaatimukset.
Viestintäprotokolla, jolla anturi toimii, on I2C. I2C tarkoittaa integroitua piiriä. Se on viestintäprotokolla, jossa tiedonsiirto tapahtuu SDA- (sarjatiedot) ja SCL (sarjakello) -linjojen kautta. Se mahdollistaa useiden laitteiden yhdistämisen samanaikaisesti. Se on yksi yksinkertaisimmista ja tehokkaimmista viestintäprotokollista.
Vaihe 2: Mitä tarvitset..
Tavoitteemme saavuttamiseen tarvittavat materiaalit sisältävät seuraavat laitteistokomponentit:
1. BMG160
2. Arduino Nano
3. I2C -kaapeli
4. I2C -kilpi Arduino Nanolle
Vaihe 3: Laitteiston kytkentä:
Laitteiston kytkentäosio selittää periaatteessa anturin ja Arduinon väliset tarvittavat johdotukset. Oikeiden liitosten varmistaminen on perustarve, kun työskentelet minkä tahansa järjestelmän kanssa halutun lähdön saavuttamiseksi. Tarvittavat liitännät ovat siis seuraavat:
BMG160 toimii I2C: n yli. Tässä on esimerkki kytkentäkaaviosta, joka osoittaa, miten anturin jokainen liitäntä kytketään.
Valmis levy on konfiguroitu I2C-rajapintaa varten, joten suosittelemme käyttämään tätä kytkentää, jos olet muuten agnostikko.
Tarvitset vain neljä johtoa! Tarvitaan vain neljä liitäntää Vcc, Gnd, SCL ja SDA, ja ne on kytketty I2C -kaapelin avulla.
Nämä yhteydet on esitetty yllä olevissa kuvissa.
Vaihe 4: 3-akselinen gyroskoopin mittaus Arduino-koodi:
Aloitetaan nyt arduino -koodilla.
Kun käytät anturimoduulia arduinon kanssa, sisällytämme Wire.h -kirjaston. "Wire" -kirjasto sisältää toiminnot, jotka helpottavat i2c -tiedonsiirtoa anturin ja arduino -kortin välillä.
Koko arduino -koodi on annettu alla käyttäjän mukavuuden vuoksi:
#include // BMG160 I2C -osoite on 0x68 (104)
#define Addr 0x68
mitätön asennus ()
{
// Alusta I2C -viestintä MASTERiksi
Wire.begin ();
// Alusta sarjaliikenne, aseta baudinopeus = 9600
Sarja.alku (9600);
// Käynnistä I2C -lähetys
Wire.beginTransmission (Addr);
// Valitse aluerekisteri
Wire.write (0x0F);
// Määritä koko asteikon alue 2000 dps
Wire.write (0x80);
// Pysäytä I2C -lähetys
Wire.endTransmission ();
// Käynnistä I2C -lähetys
Wire.beginTransmission (Addr);
// Valitse kaistanleveysrekisteri
Wire.write (0x10);
// Aseta kaistanleveys = 200 Hz
Wire.write (0x04);
// Pysäytä I2C -lähetys
Wire.endTransmission ();
viive (300);
}
tyhjä silmukka ()
{
allekirjoittamattomat int -tiedot [6];
// Käynnistä I2C -lähetys
Wire.beginTransmission (Addr);
// Valitse Gyrometrin tietorekisteri
Wire.write (0x02);
// Pysäytä I2C -lähetys
Wire.endTransmission ();
// Pyydä 6 tavua dataa
Wire.requestFrom (Addr, 6);
// Lue 6 tavua dataa
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
jos (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 ();
}
viive (300);
// Muunna tiedot
int xGyro = ((data [1] * 256) + data [0]);
int yGyro = ((data [3] * 256) + data [2]);
int zGyro = ((data [5] * 256) + data [4]);
// Tulostustiedot sarjamonitorille
Serial.print ("X-Axis of Rotation:");
Sarja.println (xGyro); Serial.print ("Y-pyörimisakseli:");
Sarja.println (yGyro); Serial.print ("Z-Axis of Rotation:");
Sarja.println (zGyro);
viive (500);
}
Vaihe 5: Sovellukset:
BMG160: lla on monenlaisia sovelluksia laitteissa, kuten matkapuhelimissa, ihmisen ja koneen rajapintalaitteissa. Tämä anturimoduuli on suunniteltu täyttämään kuluttajasovellusten, kuten kuvanvakautuksen (DSC ja kamera-puhelin), peli- ja osoitinlaitteiden vaatimukset. Sitä käytetään myös järjestelmissä, jotka edellyttävät eleiden tunnistusta, ja järjestelmissä, joita käytetään sisäisessä navigoinnissa.