Мазмуну:

BMA250 жана Arduino Nano колдонуу менен ылдамдатуу өлчөөсү: 4 кадам
BMA250 жана Arduino Nano колдонуу менен ылдамдатуу өлчөөсү: 4 кадам

Video: BMA250 жана Arduino Nano колдонуу менен ылдамдатуу өлчөөсү: 4 кадам

Video: BMA250 жана Arduino Nano колдонуу менен ылдамдатуу өлчөөсү: 4 кадам
Video: Particle Photon BMA250 Digital Triaxial Acceleration Sensor Tutorial 2024, Июль
Anonim
Image
Image

BMA250-кичине, ичке, ультра кубаттуу, 3 октук акселерометр, ± 16 г чейин жогорку чечилиште (13-бит) өлчөө. Санариптик чыгуучу маалыматтар 16 биттик эки катары толукталган жана I2C санариптик интерфейси аркылуу жеткиликтүү. Бул эңкейүүнү сезүүчү колдонмолордо тартылуу күчүнүн статикалык ылдамдатуусун, ошондой эле кыймылдан же шоктон келип чыккан динамикалык ылдамданууну өлчөйт. Анын жогорку токтому (3,9 мг/LSB) жантайыштын өзгөрүүсүн 1,0 ° дан аз өлчөөгө мүмкүндүк берет.

Бул окуу куралында биз BMA250 жана Arduino Nano аркылуу үч перпендикуляр огунда ылдамданууну өлчөйбүз.

1 -кадам: Аппараттык камсыздоо талап кылынат:

Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат
Аппараттык камсыздоо талап кылынат

Максатыбызга жетүү үчүн бизге керектүү материалдар төмөнкү аппараттык компоненттерди камтыйт:

1. BMA250

2. Ардуино Нано

3. I2C кабели

4. Arduino Nano үчүн I2C Shield

2 -кадам: Аппараттык туташуу:

Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу
Аппараттык туташуу

Аппараттык туташуу бөлүмү негизинен сенсор менен arduino ортосунда талап кылынган зым байланыштарын түшүндүрөт. Туура туташууларды камсыздоо каалаган өндүрүш үчүн кандайдыр бир системада иштеп жатканда негизги зарылчылык болуп саналат. Ошентип, керектүү байланыштар төмөнкүлөр:

BMA250 I2C үстүндө иштейт. Бул жерде сенсордун ар бир интерфейсин кантип зым менен жабуу керектигин көрсөтүүчү зымдардын схемасы келтирилген.

Кутудан тышкары, такта I2C интерфейси үчүн конфигурацияланган, андыктан эгер сиз агностиксиз болсоңуз, анда бул байланышты колдонууну сунуштайбыз. Сизге болгону төрт зым керек!

Vcc, Gnd, SCL жана SDA төөнөгүчтөрүнө төрт гана туташуу керек жана алар I2C кабелинин жардамы менен туташкан.

Бул байланыштар жогорудагы сүрөттөрдө көрсөтүлгөн.

3 -кадам: Ылдамданууну өлчөө үчүн Arduino коду:

Ылдамдануу өлчөө үчүн Arduino коду
Ылдамдануу өлчөө үчүн Arduino коду
Ылдамдануу өлчөө үчүн Arduino коду
Ылдамдануу өлчөө үчүн Arduino коду

Эми Arduino коду менен баштайлы.

Arduino менен сенсор модулун колдонуп жатып, биз Wire.h китепканасын кошобуз. "Wire" китепканасы сенсор менен Arduino тактасынын ортосундагы i2c байланышын жеңилдетүүчү функцияларды камтыйт.

Колдонуучунун ыңгайлуулугу үчүн бүт Arduino коду төмөндө келтирилген:

#кошуу

// BMA250 I2C дареги 0x18 (24)

#define Addr 0x18

жараксыз орнотуу ()

{

// I2C байланышын MASTER катары баштаңыз

Wire.begin ();

// Сериялык байланышты баштоо, байдын ылдамдыгын орнотуу = 9600

Serial.begin (9600);

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Аралыкты тандоо реестрин тандаңыз

Wire.write (0x0F);

// Орнотуу диапазону +/- 2г

Wire.write (0x03);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Өткөрүү жөндөмүнүн регистрин тандаңыз

Wire.write (0x10);

// Өткөрүү жөндөмүн 7.81 Гц коюу

Wire.write (0x08);

// I2C берүүнү токтотуу

Wire.endTransmission (); кечигүү (300);}

боштук цикл ()

{

кол коюлбаган int маалыматтары [0];

// I2C берүүнү баштоо

Wire.beginTransmission (Addr);

// Маалымат регистрлерин тандоо (0x02 - 0x07)

Wire.write (0x02);

// I2C берүүнү токтотуу

Wire.endTransmission ();

// 6 байт суроо

Wire.requestFrom (Addr, 6);

// Алты байтты окугула

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

эгер (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

маалымат [3] = Wire.read ();

data [4] = Wire.read ();

маалымат [5] = Wire.read ();

}

кечигүү (300);

// Маалыматтарды 10 битке айландырыңыз

float xAccl = ((маалымат [1] * 256.0) + (маалымат [0] & 0xC0)) / 64;

эгер (xAccl> 511)

{

xAccl -= 1024;

}

float yAccl = ((маалыматтар [3] * 256.0) + (маалыматтар [2] & 0xC0)) / 64;

эгер (yAccl> 511)

{

yAccl -= 1024;

}

float zAccl = ((маалыматтар [5] * 256.0) + (маалыматтар [4] & 0xC0)) / 64;

эгер (zAccl> 511)

{

zAccl -= 1024;

}

// Сериялык мониторго маалыматтарды чыгаруу

Serial.print ("X-Axis менен ылдамдануу:");

Serial.println (xAccl);

Serial.print ("Y огунда ылдамдануу:");

Serial.println (yAccl);

Serial.print ("Z-огунда ылдамдануу:");

Serial.println (zAccl);

}

Зымдык китепканада Wire.write () жана Wire.read () командаларды жазуу жана сенсордун чыгышын окуу үчүн колдонулат. Serial.print () жана Serial.println () Arduino IDE сериялык мониторунда сенсордун чыгарылышын көрсөтүү үчүн колдонулат.

Сенсордун чыгышы жогорудагы сүрөттө көрсөтүлгөн.

4 -кадам: Тиркемелер:

Колдонмолор
Колдонмолор

BMA250 сыяктуу акселерометрлер негизинен оюндарды колдонууда табышат жана профилдин которулушун көрсөтүшөт. Бул сенсор модулу мобилдик тиркемелер үчүн заманбап кубатты башкаруу тутумунда да колдонулат. BMA250-интеллектуалдык чиптин кыймылга келтирүүчү үзгүлтүк контроллери менен коштолгон үч фазалуу санарип ылдамдатуу сенсору.

Сунушталууда: