Obsah:

Měření zrychlení pomocí BMA250 a Arduino Nano: 4 kroky
Měření zrychlení pomocí BMA250 a Arduino Nano: 4 kroky

Video: Měření zrychlení pomocí BMA250 a Arduino Nano: 4 kroky

Video: Měření zrychlení pomocí BMA250 a Arduino Nano: 4 kroky
Video: Laboratorní práce - určení tíhového zrychlení pomocí kyvadla 2024, Červenec
Anonim
Image
Image

BMA250 je malý, tenký, ultralehký, 3osý akcelerometr s měřením s vysokým rozlišením (13 bitů) až ± 16 g. Data digitálního výstupu jsou formátována jako 16bitová dvojčata a jsou přístupná prostřednictvím digitálního rozhraní I2C. Měří statické gravitační zrychlení v aplikacích snímajících náklon i dynamické zrychlení způsobené pohybem nebo šokem. Jeho vysoké rozlišení (3,9 mg/LSB) umožňuje měření změn sklonu menší než 1,0 °.

V tomto tutoriálu změříme zrychlení ve všech třech kolmých osách pomocí BMA250 a Arduino Nano.

Krok 1: Požadovaný hardware:

Požadovaný hardware
Požadovaný hardware
Požadovaný hardware
Požadovaný hardware
Požadovaný hardware
Požadovaný hardware

Materiály, které potřebujeme k dosažení našeho cíle, zahrnují následující hardwarové komponenty:

1. BMA250

2. Arduino Nano

3. Kabel I2C

4. I2C štít pro Arduino Nano

Krok 2: Připojení hardwaru:

Připojení hardwaru
Připojení hardwaru
Připojení hardwaru
Připojení hardwaru

Sekce zapojení hardwaru v podstatě vysvětluje zapojení kabelů požadovaná mezi senzorem a Arduinem. Zajištění správného připojení je základní nutností při práci na jakémkoli systému pro požadovaný výstup. Požadovaná připojení jsou tedy následující:

BMA250 bude fungovat přes I2C. Zde je příklad schématu zapojení, které ukazuje, jak zapojit jednotlivá rozhraní senzoru.

Po vybalení je deska nakonfigurována pro rozhraní I2C, proto doporučujeme tuto přípojku použít, pokud jste jinak agnostik. Vše, co potřebujete, jsou čtyři dráty!

Jsou vyžadována pouze čtyři připojení Vcc, Gnd, SCL a SDA piny a ty jsou spojeny pomocí kabelu I2C.

Tato spojení jsou ukázána na obrázcích výše.

Krok 3: Arduino kód pro měření zrychlení:

Arduino kód pro měření zrychlení
Arduino kód pro měření zrychlení
Arduino kód pro měření zrychlení
Arduino kód pro měření zrychlení

Začněme nyní kódem Arduino.

Při používání senzorového modulu s Arduinem jsme zahrnuli knihovnu Wire.h. Knihovna „Wire“obsahuje funkce, které usnadňují komunikaci i2c mezi senzorem a deskou Arduino.

Celý kód Arduino je pro pohodlí uživatele uveden níže:

#zahrnout

// Adresa BMA250 I2C je 0x18 (24)

#define Addr 0x18

neplatné nastavení ()

{

// Inicializujte komunikaci I2C jako MASTER

Wire.begin ();

// Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600

Serial.begin (9600);

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte registr výběru rozsahu

Wire.write (0x0F);

// Nastavit rozsah +/- 2g

Wire.write (0x03);

// Zastavte přenos I2C

Wire.endTransmission ();

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte registr šířky pásma

Wire.write (0x10);

// Nastavit šířku pásma 7,81 Hz

Wire.write (0x08);

// Zastavte přenos I2C

Wire.endTransmission (); zpoždění (300);}

prázdná smyčka ()

{

nepodepsaná int data [0];

// Spusťte přenos I2C

Wire.beginTransmission (Addr);

// Vyberte datové registry (0x02 - 0x07)

Wire.write (0x02);

// Zastavte přenos I2C

Wire.endTransmission ();

// Požádejte o 6 bajtů

Wire.requestFrom (Addr, 6);

// Přečíst šest bajtů

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

pokud (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 ();

}

zpoždění (300);

// Převeďte data na 10 bitů

float xAccl = ((data [1] * 256,0) + (data [0] & 0xC0)) / 64;

if (xAccl> 511)

{

xAccl -= 1024;

}

float yAccl = ((data [3] * 256,0) + (data [2] & 0xC0)) / 64;

if (yAccl> 511)

{

yAccl -= 1024;

}

float zAccl = ((data [5] * 256,0) + (data [4] & 0xC0)) / 64;

if (zAccl> 511)

{

zAccl -= 1024;

}

// Výstup dat na sériový monitor

Serial.print ("Zrychlení v ose X:");

Serial.println (xAccl);

Serial.print ("Zrychlení v ose Y:");

Serial.println (yAccl);

Serial.print ("Zrychlení v ose Z:");

Serial.println (zAccl);

}

V drátové knihovně Wire.write () a Wire.read () slouží k zápisu příkazů a čtení výstupu senzoru. Serial.print () a Serial.println () se používají k zobrazení výstupu senzoru na sériovém monitoru Arduino IDE.

Výstup snímače je zobrazen na obrázku výše.

Krok 4: Aplikace:

Aplikace
Aplikace

Akcelerometry jako BMA250 většinou nacházejí své uplatnění ve hrách a přepínání profilů zobrazení. Tento senzorový modul se také používá v pokročilém systému řízení spotřeby pro mobilní aplikace. BMA250 je triaxiální digitální snímač zrychlení, který je vybaven inteligentním řadičem přerušení aktivovaným pohybem na čipu.

Doporučuje: