Բովանդակություն:

ADXL345- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. 4 քայլ
ADXL345- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. 4 քայլ

Video: ADXL345- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. 4 քայլ

Video: ADXL345- ի և մասնիկի ֆոտոնի միջոցով արագացման չափում. 4 քայլ
Video: How to use MPU-6050 Accelerometer and Gyroscope with Arduino code 2024, Հունիսի
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: Սարքավորման միացում

Սարքավորումների միացում
Սարքավորումների միացում
Սարքավորումների միացում
Սարքավորումների միացում

Սարքավորումների միացման բաժինը հիմնականում բացատրում է սենսորի և մասնիկ ֆոտոնի միջև պահանջվող լարերի միացումները: Connectionsանկալի ելքի համար ցանկացած համակարգի վրա աշխատելիս հիմնական անհրաժեշտությունն է հիմնական կապերի ապահովումը: Այսպիսով, անհրաժեշտ կապերը հետևյալն են.

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»);

Մասնիկ. Փոփոխական («xAccl», xAccl);

Particle.variable («yAccl», yAccl);

Particle.variable («zAccl», zAccl);

// Նախնականացնել I2C հաղորդակցությունը որպես ՎԱՐՊԵՏ

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);

// Ընտրեք ամբողջական լուծաչափ ՝ +/- 2 գ

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 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (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- ում արագացումն է.", Լարային (xAccl));

Particle.publish ("Y-Axis- ում արագացումն է.", String (yAccl));

Particle.publish ("Z-Axis- ում արագացումն է.", String (zAccl));

}

Particle.variable () գործառույթը ստեղծում է սենսորի ելքը պահելու փոփոխականները, իսկ Particle.publish () գործառույթը ցուցադրում է ելքը կայքի վահանակի վրա:

Սենսորային ելքը ցուցադրվում է վերևի նկարում ՝ ձեր տեղեկանքի համար:

Քայլ 4: Դիմումներ

Դիմումներ
Դիմումներ

ADXL345- ը փոքր, բարակ, ծայրահեղ ցածր հզորության, 3 առանցքի արագացուցիչ է, որը կարող է օգտագործվել հեռախոսների, բժշկական սարքավորումների և այլնի մեջ: Դրա կիրառումը ներառում է նաև խաղային և մատնանշող սարքեր, արդյունաբերական գործիքներ, անհատական նավիգացիոն սարքեր և կոշտ սկավառակի (HDD) պաշտպանություն:

Խորհուրդ ենք տալիս: