Indholdsfortegnelse:

Accelerationsmåling ved hjælp af BMA250 og Arduino Nano: 4 trin
Accelerationsmåling ved hjælp af BMA250 og Arduino Nano: 4 trin

Video: Accelerationsmåling ved hjælp af BMA250 og Arduino Nano: 4 trin

Video: Accelerationsmåling ved hjælp af BMA250 og Arduino Nano: 4 trin
Video: Audi RS e-tron GT - Har den sin berettigelse? (Del 2:2) 2024, November
Anonim
Image
Image

BMA250 er et lille, tyndt, ultralavt, 3-akset accelerometer med høj opløsning (13-bit) måling på op til ± 16 g. Digitale outputdata er formateret som 16-bit tokomplement og er tilgængelige via I2C digital interface. Det måler den statiske tyngdekraftacceleration i tilt-sensing applikationer samt dynamisk acceleration som følge af bevægelse eller stød. Dens høje opløsning (3,9 mg/LSB) muliggør måling af hældningsændringer mindre end 1,0 °.

I denne vejledning skal vi måle accelerationen i alle de tre vinkelrette akser ved hjælp af BMA250 og Arduino Nano.

Trin 1: Påkrævet hardware:

Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet

De materialer, vi har brug for for at nå vores mål, omfatter følgende hardwarekomponenter:

1. BMA250

2. Arduino Nano

3. I2C -kabel

4. I2C -skjold til Arduino Nano

Trin 2: Hardware -tilslutning:

Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning

Hardwaretilslutningssektionen forklarer grundlæggende de ledningsforbindelser, der kræves mellem sensoren og arduinoen. At sikre korrekte forbindelser er den grundlæggende nødvendighed, mens du arbejder på et hvilket som helst system til den ønskede output. Så de nødvendige forbindelser er som følger:

BMA250 fungerer over I2C. Her er eksemplet på ledningsdiagram, der viser, hvordan du tilslutter hver grænseflade på sensoren.

Out-of-the-box er tavlen konfigureret til en I2C-grænseflade, som sådan anbefaler vi at bruge denne tilslutning, hvis du ellers er agnostiker. Alt du behøver er fire ledninger!

Der kræves kun fire tilslutninger Vcc, Gnd, SCL og SDA ben, og disse er forbundet ved hjælp af I2C kabel.

Disse forbindelser er vist på billederne ovenfor.

Trin 3: Arduino -kode til accelerationsmåling:

Arduino -kode til accelerationsmåling
Arduino -kode til accelerationsmåling
Arduino -kode til accelerationsmåling
Arduino -kode til accelerationsmåling

Lad os starte med Arduino -koden nu.

Mens vi bruger sensormodulet med Arduino, inkluderer vi Wire.h -biblioteket. "Wire" -biblioteket indeholder de funktioner, der letter i2c -kommunikationen mellem sensoren og Arduino -kortet.

Hele Arduino -koden er angivet nedenfor for brugerens bekvemmelighed:

#omfatte

// BMA250 I2C -adressen er 0x18 (24)

#define Addr 0x18

ugyldig opsætning ()

{

// Initialiser I2C -kommunikation som MASTER

Wire.begin ();

// Initialiser seriel kommunikation, indstil baudhastighed = 9600

Serial.begin (9600);

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg områdevalgsregister

Wire.write (0x0F);

// Indstil område +/- 2g

Wire.write (0x03);

// Stop I2C -transmission

Wire.endTransmission ();

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg båndbredderegister

Wire.write (0x10);

// Indstil båndbredde 7,81 Hz

Wire.write (0x08);

// Stop I2C -transmission

Wire.endTransmission (); forsinkelse (300);}

hulrum ()

{

usignerede int -data [0];

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg dataregistre (0x02 - 0x07)

Wire.write (0x02);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 6 bytes

Wire.requestFrom (Addr, 6);

// Læs de seks bytes

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl 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 til 10 bits

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

hvis (xAccl> 511)

{

xAccl -= 1024;

}

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

hvis (yAccl> 511)

{

yAccl -= 1024;

}

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

hvis (zAccl> 511)

{

zAccl -= 1024;

}

// Output data til den serielle skærm

Serial.print ("Acceleration i X-akse:");

Serial.println (xAccl);

Serial.print ("Acceleration i Y-akse:");

Serial.println (yAccl);

Serial.print ("Acceleration i Z-akse:");

Serial.println (zAccl);

}

I trådbiblioteket bruges Wire.write () og Wire.read () til at skrive kommandoer og læse sensoroutput. Serial.print () og Serial.println () bruges til at vise sensorudgangen på den serielle skærm på Arduino IDE.

Sensorudgangen er vist på billedet ovenfor.

Trin 4: Ansøgninger:

Ansøgninger
Ansøgninger

Accelerometre som BMA250 finder for det meste sin anvendelse i spil og skift af profilprofiler. Dette sensormodul bruges også i det avancerede strømstyringssystem til mobile applikationer. BMA250 er en triaksial digital accelerationssensor, som er integreret med en intelligent on-chip bevægelsesudløst afbrydelsescontroller.

Anbefalede: