Мазмұны:

BMA250 және Arduino Nano көмегімен үдеуді өлшеу: 4 қадам
BMA250 және Arduino Nano көмегімен үдеуді өлшеу: 4 қадам

Бейне: BMA250 және Arduino Nano көмегімен үдеуді өлшеу: 4 қадам

Бейне: BMA250 және Arduino Nano көмегімен үдеуді өлшеу: 4 қадам
Бейне: Particle Photon BMA250 Digital Triaxial Acceleration Sensor Tutorial 2024, Қараша
Anonim
Image
Image

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

Бұл оқулықта біз BMA250 және Arduino Nano көмегімен үш перпендикуляр осьте үдеуді өлшейміз.

1 -қадам: Қажетті жабдық:

Қажетті жабдық
Қажетті жабдық
Қажетті жабдық
Қажетті жабдық
Қажетті жабдық
Қажетті жабдық

Мақсатқа жету үшін бізге қажет материалдар келесі аппараттық компоненттерді қамтиды:

1. BMA250

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

3. I2C кабелі

4. Arduino Nano үшін I2C қалқаны

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)

#анықта Addr 0x18

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

{

// I2C байланысын MASTER ретінде баптаңыз

Wire.begin ();

// Сериялық байланысты орнатыңыз, жіберу жылдамдығы = 9600

Serial.begin (9600);

// I2C берілуін бастау

Wire.beginTransmission (Addr);

// Ауқымды таңдау регистрін таңдаңыз

Wire.write (0x0F);

// +/- 2g диапазонын орнатыңыз

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)

{

деректер [0] = Wire.read ();

деректер [1] = Wire.read ();

деректер [2] = Wire.read ();

деректер [3] = Wire.read ();

деректер [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 осінде үдеу:»);

Serial.println (xAccl);

Serial.print («Y осінде үдеу:»);

Serial.println (yAccl);

Serial.print («Z осінде үдеу:»);

Serial.println (zAccl);

}

Сымдық кітапханада Wire.write () және Wire.read () командаларды жазу және сенсор шығысын оқу үшін қолданылады. Arduino IDE сериялық мониторында сенсордың шығуын көрсету үшін Serial.print () және Serial.println () қолданылады.

Сенсордың шығысы жоғарыдағы суретте көрсетілген.

4 -қадам: Өтініштер:

Қолданбалар
Қолданбалар

BMA250 сияқты акселерометрлер көбінесе ойындарда қолданылады және профильді ауыстыруды көрсетеді. Бұл сенсорлық модуль мобильді қосымшаларға арналған қуатты басқарудың жетілдірілген жүйесінде де қолданылады. BMA250-үш фазалы цифрлық үдеткіш сенсоры, ол интеллектуалды микросхемадағы қозғалысты басқаратын үзіліс контроллерімен біріктірілген.

Ұсынылған: