Мазмұны:

ADXL345 және бөлшек фотоны көмегімен үдеуді өлшеу: 4 қадам
ADXL345 және бөлшек фотоны көмегімен үдеуді өлшеу: 4 қадам
Anonim
Image
Image

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

Бұл оқулықта ADXL345 сенсорлық модулінің фотонды бөлшектермен байланысы суреттелген. Үдеу мәндерін оқу үшін біз I2c адаптері бар бөлшектерді қолдандық, бұл I2C адаптері сенсорлық модульге қосылуды жеңіл әрі сенімді етеді.

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

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

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

1. ADXL345

2. Фотондық бөлшектер

3. I2C кабелі

4. Бөлшек фотонға арналған I2C қалқаны

2 -қадам: Жабдықты қосу:

Жабдықты қосу
Жабдықты қосу
Жабдықты қосу
Жабдықты қосу

Аппаратты қосу бөлімі негізінен сенсор мен фотон бөлшектері арасындағы сымдық қосылыстарды түсіндіреді. Қажетті шығыс үшін кез келген жүйеде жұмыс істеу кезінде дұрыс қосылуды қамтамасыз ету - бұл негізгі қажеттілік. Сонымен, қажетті байланыстар келесідей:

ADXL345 I2C арқылы жұмыс істейді. Датчиктің әр интерфейсін қалай қосуға болатынын көрсететін электр схемасының мысалы.

Қаптамадан тыс тақта I2C интерфейсі үшін конфигурацияланған, сондықтан егер сіз агностикалық болмасаңыз, осы қосылымды пайдалануды ұсынамыз.

Сізге тек төрт сым қажет! Vcc, Gnd, SCL және SDA түйреуіштеріне тек төрт қосылым қажет және олар I2C кабелінің көмегімен қосылған.

Бұл байланыстар жоғарыдағы суреттерде көрсетілген.

3 -қадам: үдеуді өлшеу коды:

Жылдамдықты өлшеу коды
Жылдамдықты өлшеу коды

Енді бөлшектер кодынан бастайық.

Бөлшекпен сенсорлық модульді пайдалану кезінде біз application.h және spark_wiring_i2c.h кітапханасын қосамыз. «application.h» және spark_wiring_i2c.h кітапханасы сенсор мен бөлшек арасындағы i2c байланысын жеңілдететін функцияларды қамтиды.

Пайдаланушыға ыңғайлы болу үшін бөлшектердің толық коды төменде берілген:

#қосу

#қосу

// ADXL345 I2C мекенжайы - 0x53 (83)

#анықтаңыз Addr 0x53

int xAccl = 0, yAccl = 0, zAccl = 0;

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

{

// Айнымалыны орнатыңыз

Particle.variable («i2cdevice», «ADXL345»);

Particle.variable («xAccl», xAccl);

Particle.variable («yAccl», yAccl);

Particle.variable («zAccl», zAccl);

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

Wire.begin ();

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

Serial.begin (9600);

// I2C жіберуді бастау

Wire.beginTransmission (Addr);

// Өткізу жылдамдығының регистрін таңдаңыз

Wire.write (0x2C);

// Шығу деректерінің жылдамдығын таңдаңыз = 100 Гц

Wire.write (0x0A);

// I2C берілуін тоқтату

Wire.endTransmission ();

// I2C жіберуді бастау

Wire.beginTransmission (Addr);

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

Wire.write (0x2D);

// Автоматты ұйқыны өшіруді таңдаңыз

Wire.write (0x08);

// I2C берілуін тоқтату

Wire.endTransmission ();

// I2C жіберуді бастау

Wire.beginTransmission (Addr);

// Деректер форматының регистрін таңдаңыз

Wire.write (0x31);

// Толық ажыратымдылықты таңдаңыз, +/- 2g

Wire.write (0x08);

// I2C берілуін тоқтату

Wire.endTransmission ();

кешіктіру (300);

}

бос цикл ()

{

қол қойылмаған int деректері [6];

үшін (int i = 0; i <6; i ++)

{

// I2C жіберуді бастау

Wire.beginTransmission (Addr);

// Деректер регистрін таңдаңыз

Wire.write ((50+i));

// I2C берілуін тоқтату

Wire.endTransmission ();

// Құрылғыдан 1 байт деректерді сұрау

Wire.requestFrom (Addr, 1);

// 6 байт деректерді оқу

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

егер (Wire.available () == 1)

{

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

}

кешіктіру (300);

}

// Деректерді 10 битке түрлендіру

int xAccl = (((деректер [1] & 0x03) * 256) + деректер [0]);

егер (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((деректер [3] & 0x03) * 256) + деректер [2]);

егер (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((деректер [5] & 0x03) * 256) + деректер [4]);

егер (zAccl> 511)

{

zAccl -= 1024;

}

// Деректерді бақылау тақтасына шығару

Particle.publish («X-Axis үдеуінде:», String (xAccl));

Particle.publish («Y осінде үдеу-бұл:», String (yAccl));

Particle.publish («Z-осіндегі үдеу-бұл:», String (zAccl));

}

Particle.variable () функциясы сенсордың шығысын сақтау үшін айнымалылар жасайды және Particle.publish () функциясы сайттың бақылау тақтасында шығуды көрсетеді.

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

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

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

ADXL345-бұл шағын, жұқа, ультра қуатты, 3 осьті акселерометр, оны телефон тұтқаларында, медициналық құралдарда қолдануға болады және т.

Ұсынылған: