Mundarija:

BMA250 va Arduino Nano yordamida tezlikni o'lchash: 4 qadam
BMA250 va Arduino Nano yordamida tezlikni o'lchash: 4 qadam

Video: BMA250 va Arduino Nano yordamida tezlikni o'lchash: 4 qadam

Video: BMA250 va Arduino Nano yordamida tezlikni o'lchash: 4 qadam
Video: Raspberry Pi: Get measured value of gpio vibration sensor (SW420) 2024, Noyabr
Anonim
Image
Image

BMA250-bu kichik, ingichka, ultra quvvatli, 3 o'qli akselerometr, yuqori aniqlikdagi (13-bitli) ± 16 g gacha. Raqamli chiqish ma'lumotlari 16 bitli ikkita qo'shimcha sifatida formatlangan va I2C raqamli interfeysi orqali kirish mumkin. Nishab olishda tortishish statik tezlanishini, shuningdek harakat yoki zarba natijasida dinamik tezlanishni o'lchaydi. Uning yuqori aniqligi (3,9 mg/LSB) moyillik o'zgarishlarini 1,0 ° dan past o'lchash imkonini beradi.

Ushbu qo'llanmada biz BMA250 va Arduino Nano yordamida uchta perpendikulyar o'qning tezlanishini o'lchaymiz.

1 -qadam: Uskuna kerak:

Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi

Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:

1. BMA250

2. Arduino Nano

3. I2C kabeli

4. Arduino Nano uchun I2C qalqoni

2 -qadam: Uskuna ulanishi:

Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi

Uskuna ulanish bo'limi asosan sensor va arduino o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:

BMA250 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.

Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz. Sizga faqat to'rtta sim kerak!

Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.

Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.

3 -qadam: Tezlikni o'lchash uchun Arduino kodi:

Tezlashtirishni o'lchash uchun Arduino kodi
Tezlashtirishni o'lchash uchun Arduino kodi
Tezlashtirishni o'lchash uchun Arduino kodi
Tezlashtirishni o'lchash uchun Arduino kodi

Endi Arduino kodidan boshlaylik.

Sensor modulini Arduino bilan ishlatganda, biz Wire.h kutubxonasini o'z ichiga olamiz. "Wire" kutubxonasida sensorlar va Arduino kartalari o'rtasidagi i2c aloqasini osonlashtiradigan funktsiyalar mavjud.

Foydalanuvchining qulayligi uchun butun Arduino kodi quyida keltirilgan:

#qo'shing

// BMA250 I2C manzili - 0x18 (24)

#aniqlang Addr 0x18

bo'sh o'rnatish ()

{

// I2C aloqasini MASTER sifatida boshlang

Wire.begin ();

// Serial aloqani ishga tushiring, bod tezligi = 9600

Serial.begin (9600);

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// diapazonni tanlash registrini tanlang

Wire.write (0x0F);

// +/- 2g oralig'ini o'rnating

Wire.write (0x03);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// tarmoqli kengligi registrini tanlang

Wire.write (0x10);

// Tarmoqli kengligini sozlash 7.81 Gts

Wire.write (0x08);

// I2C uzatishni to'xtating

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

bo'sh halqa ()

{

imzosiz int ma'lumotlari [0];

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar registrlarini tanlang (0x02 - 0x07)

Wire.write (0x02);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 6 bayt talab qiling

Wire.requestFrom (Addr, 6);

// Olti baytni o'qing

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

agar (Wire.available () == 6)

{

ma'lumotlar [0] = Wire.read ();

ma'lumotlar [1] = Wire.read ();

ma'lumotlar [2] = Wire.read ();

ma'lumotlar [3] = Wire.read ();

ma'lumotlar [4] = Wire.read ();

ma'lumotlar [5] = Wire.read ();

}

kechikish (300);

// Ma'lumotni 10 bitga aylantiring

float xAccl = ((ma'lumotlar [1] * 256.0) + (ma'lumotlar [0] & 0xC0)) / 64;

agar (xAccl> 511)

{

xAccl -= 1024;

}

float yAccl = ((ma'lumotlar [3] * 256.0) + (ma'lumotlar [2] & 0xC0)) / 64;

agar (yAccl> 511)

{

yAccl -= 1024;

}

float zAccl = ((ma'lumotlar [5] * 256.0) + (ma'lumotlar [4] & 0xC0)) / 64;

agar (zAccl> 511)

{

zAccl -= 1024;

}

// Ma'lumotlarni ketma -ket monitorga chiqarish

Serial.print ("X o'qida tezlashtirish:");

Serial.println (xAccl);

Serial.print ("Y o'qida tezlashtirish:");

Serial.println (yAccl);

Serial.print ("Z o'qida tezlashtirish:");

Serial.println (zAccl);

}

Tel kutubxonasida Wire.write () va Wire.read () buyruqlarni yozish va sensor chiqishini o'qish uchun ishlatiladi. Sensor chiqishini Arduino IDE ketma -ket monitorida ko'rsatish uchun Serial.print () va Serial.println () ishlatiladi.

Sensor chiqishi yuqoridagi rasmda ko'rsatilgan.

4 -qadam: Ilovalar:

Ilovalar
Ilovalar

BMA250 kabi akselerometrlar asosan o'yinlarda va profilni almashtirishda ishlatiladi. Ushbu sensorli modul, shuningdek, mobil ilovalar uchun quvvatni boshqarishning ilg'or tizimida ham qo'llaniladi. BMA250-bu uch fazali raqamli tezlashtirish sensori bo'lib, u aqlli chipda harakatlanuvchi uzilishlar boshqaruvchisi bilan jihozlangan.

Tavsiya: