Мазмуну:

Бөлүкчө менен 3-октук Гироскоп сенсорунун BMG160 интерфейси: 5 кадам
Бөлүкчө менен 3-октук Гироскоп сенсорунун BMG160 интерфейси: 5 кадам

Video: Бөлүкчө менен 3-октук Гироскоп сенсорунун BMG160 интерфейси: 5 кадам

Video: Бөлүкчө менен 3-октук Гироскоп сенсорунун BMG160 интерфейси: 5 кадам
Video: Бөлүкчө үчүн сол кол эрежеси 2024, Июль
Anonim
Image
Image

Бүгүнкү дүйнөдө, жаштардын жана балдардын жарымынан көбү оюндарды жакшы көрүшөт жана оюндун техникалык аспектилерине кызыккандар, бул чөйрөдө кыймыл сезүүнүн маанилүүлүгүн билишет. Бизди дагы ошол эле нерсе таң калтырды жана тактайга алып келүү үчүн, биз кандайдыр бир нерсенин бурчтук ылдамдыгын өлчөй турган гироскоп сенсорунун үстүндө иштөөнү ойлодук. Ошентип, биз тапшырманы чечүү үчүн кабыл алган сенсор BMG160. BMG160-бул 16-биттик, санариптик, үч фазалуу, гироскоптук сенсор, ал бөлмө перпендикулярынын үч өлчөмүндө бурчтук ылдамдыгын өлчөй алат.

Бул окуу куралында биз BMG160тын Particle Photon менен иштешин көрсөтөбүз.

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

1. BMG160

2. Бөлүкчө фотону

3. I2C кабели

4. I2C Shield for Particle Photon

1 -кадам: BMG160 Обзор:

Сизге эмне керек.. !!
Сизге эмне керек.. !!

Биринчиден, биз сизди BMG160 сенсор модулунун негизги функциялары жана ал иштеген байланыш протоколу менен тааныштыргыбыз келет.

BMG160 негизинен бурчтук ылдамдыгын өлчөй турган 16-бит, санарип, үч фазалуу, гироскоп сенсору. Бул бөлмө перпендикулярынын үч өлчөмүндө бурчтук ылдамдыктарды эсептей алат, x-, y- жана z-огу, жана тиешелүү чыгуу сигналдарын камсыздайт. Бул I2C байланыш протоколун колдонуп, малина пи тактасы менен байланыша алат. Бул модуль керектөөчүлөрдүн өтүнмөлөрүнө, ошондой эле өндүрүштүк максаттарга жооп берүү үчүн иштелип чыккан.

Сенсор иштеген байланыш протоколу I2C. I2C интегралдык схеманы билдирет. Бул байланыш протоколу, анда байланыш SDA (сериялык маалыматтар) жана SCL (сериялык саат) линиялары аркылуу ишке ашат. Бул бир эле учурда бир нече түзмөктү туташтырууга мүмкүндүк берет. Бул эң жөнөкөй жана эффективдүү байланыш протоколунун бири.

2 -кадам: Сизге эмне керек..

Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!
Сизге эмне керек.. !!

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

1. BMG160

2. Бөлүкчөлөрдүн фотону

3. I2C кабели

4. I2C Shield for Particle Photon

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

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

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

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

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

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

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

4-кадам: 3-октук гироскоптун өлчөө бөлүкчөлөрүнүн коду:

3-октук гироскоптун өлчөө бөлүкчөлөрүнүн коду
3-октук гироскоптун өлчөө бөлүкчөлөрүнүн коду
3-октук гироскоптун өлчөө бөлүкчөлөрүнүн коду
3-октук гироскоптун өлчөө бөлүкчөлөрүнүн коду

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

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

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

#кошуу

#кошуу

// BMG160 I2C дареги 0x68 (104)

#define Addr 0x68

int xGyro = 0, yGyro = 0, zGyro = 0;

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

{

// Өзгөрмөнү коюу

Particle.variable ("i2cdevice", "BMG160");

Particle.variable ("xGyro", xGyro);

Particle.variable ("yGyro", yGyro);

Particle.variable ("zGyro", zGyro);

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

Wire.begin ();

// Сериялык байланышты баштоо

Serial.begin (9600);

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

Wire.beginTransmission (Addr);

// Range register тандаңыз

Wire.write (0x0F);

// Толук масштабда 2000 dps конфигурациялоо

Wire.write (0x80);

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

Wire.endTransmission ();

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

Wire.beginTransmission (Addr);

// Bandwidth регистрин тандаңыз

Wire.write (0x10);

// Орнотуу жөндөмдүүлүгү = 200 Гц

Wire.write (0x04);

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

Wire.endTransmission ();

кечигүү (300);

}

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

{

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

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

Wire.beginTransmission (Addr);

// Маалымат реестрин тандоо

Wire.write (0x02);

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

Wire.endTransmission ();

// 6 байт маалымат сураңыз

Wire.requestFrom (Addr, 6);

// 6 байт маалыматтарды окуңуз

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro 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);

// Маалыматты конвертациялоо

xGyro = ((маалымат [1] * 256) + маалымат [0]);

эгер (xGyro> 32767)

{

xGyro -= 65536;

}

yGyro = ((маалыматтар [3] * 256) + маалыматтар [2]);

эгер (yGyro> 32767)

{

yGyro -= 65536;

}

zGyro = ((маалымат [5] * 256) + маалымат [4]);

эгер (zGyro> 32767)

{

zGyro -= 65536;

}

// Маалыматтарды тактасына чыгаруу

Particle.publish ("Rotation of X-Axis:", String (xGyro));

Particle.publish ("Y-Axis Rotation:", String (yGyro));

Particle.publish ("Z-айлануу огу:", String (zGyro));

кечигүү (1000);

}

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

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

BMG160 уюлдук телефондор, адамдын машина интерфейси сыяктуу түзмөктөрдө ар түрдүү тиркемелерге ээ. Бул сенсор модулу сүрөттү турукташтыруу (DSC жана камера-телефон), оюн жана көрсөтүүчү түзмөктөр сыяктуу керектөөчүлөрдүн талаптарына жооп берүү үчүн иштелип чыккан. Бул жаңсоону таанууну талап кылган тутумдарда жана ички багыттоодо колдонулган системаларда колдонулат.

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