Mundarija:

ADXL345 va Arduino Nano yordamida tezlashtirishni o'lchash: 4 qadam
ADXL345 va Arduino Nano yordamida tezlashtirishni o'lchash: 4 qadam

Video: ADXL345 va Arduino Nano yordamida tezlashtirishni o'lchash: 4 qadam

Video: ADXL345 va Arduino Nano yordamida tezlashtirishni o'lchash: 4 qadam
Video: Lesson 18: Using Tile Angle Sensor SCA60C | Arduino Step By Step Course 2024, Iyul
Anonim
Image
Image

ADXL345-bu kichik, ingichka, ultra quvvatli, 3 o'qli akselerometr, yuqori aniqlikdagi (13 bitli) ± 16 g gacha. Raqamli chiqish ma'lumotlari 16 bitli ikkita qo'shimcha sifatida formatlangan va I2 C raqamli interfeysi orqali kirish mumkin. Nishab olishda tortishish statik tezlanishini, shuningdek harakat yoki zarba natijasida dinamik tezlanishni o'lchaydi. Uning yuqori aniqligi (3,9 mg/LSB) moyillik o'zgarishlarini 1,0 ° dan past o'lchash imkonini beradi.

Ushbu qo'llanmada ADXL345 sensor modulining arduino nano bilan o'zaro aloqasi tasvirlangan. Tezlashtirish qiymatlarini o'qish uchun biz I2c adapterli arduino -dan foydalanganmiz, bu I2C adapteri sensor moduliga ulanishni oson va ishonchli qiladi.

1 -qadam: Uskuna kerak:

Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi
Uskunalar talab qilinadi

Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:

1. ADXL345

2. Arduino Nano

3. I2C kabeli

4. Arduino Nano uchun I2C qalqoni

2 -qadam: Uskuna ulanishi:

Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi
Uskuna ulanishi

Uskuna ulanish bo'limi asosan sensor va arduino nano o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:

ADXL345 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.

Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz.

Sizga faqat to'rtta sim kerak! Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.

Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.

3 -qadam: Tezlikni o'lchash kodi:

Tezlikni o'lchash kodi
Tezlikni o'lchash kodi

Endi arduino kodidan boshlaylik.

Sensor modulini arduino bilan ishlatganda, biz Wire.h kutubxonasini o'z ichiga olamiz. "Wire" kutubxonasida sensorlar va arduino kartalari o'rtasida i2c aloqasini osonlashtiradigan funktsiyalar mavjud.

Foydalanuvchining qulayligi uchun butun arduino kodi quyida keltirilgan:

#qo'shing

// ADXL345 I2C manzili - 0x53 (83)

#aniqlang Addr 0x53

bo'sh o'rnatish ()

{

// I2C aloqasini MASTER sifatida boshlang

Wire.begin ();

// Seriyali aloqani ishga tushiring, bod tezligi = 9600 ni o'rnating

Serial.begin (9600);

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// tarmoqli kengligi tezligi registrini tanlang

Wire.write (0x2C);

// Oddiy rejim, Chiqish ma'lumoti tezligi = 100 Gts

Wire.write (0x0A);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Quvvatni boshqarish registrini tanlang

Wire.write (0x2D);

// Avtomatik uyquni o'chirish

Wire.write (0x08);

// I2C uzatishni to'xtating

Wire.endTransmission ();

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar formati registrini tanlang

Wire.write (0x31);

// Avtomatik sinov o'chirilgan, 4 simli interfeys, To'liq piksellar sonini, diapazon = +/- 2g

Wire.write (0x08);

// I2C uzatishni to'xtating

Wire.endTransmission ();

kechikish (300);

}

bo'sh halqa ()

{

imzosiz int ma'lumotlari [6];

uchun (int i = 0; i <6; i ++)

{

// I2C uzatishni boshlang

Wire.beginTransmission (Addr);

// Ma'lumotlar reestrini tanlang

Wire.write ((50 + i));

// I2C uzatishni to'xtating

Wire.endTransmission ();

// 1 bayt ma'lumotni so'rang

Wire.requestFrom (Addr, 1);

// 6 bayt ma'lumotni o'qing

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

agar (Wire.available () == 1)

{

ma'lumotlar = Wire.read ();

}

}

// Ma'lumotni 10 bitga aylantiring

int xAccl = (((ma'lumotlar [1] & 0x03) * 256) + ma'lumotlar [0]);

agar (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((ma'lumotlar [3] & 0x03) * 256) + ma'lumotlar [2]);

agar (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((ma'lumotlar [5] & 0x03) * 256) + ma'lumotlar [4]);

agar (zAccl> 511)

{

zAccl -= 1024;

}

// Ma'lumotlarni ketma -ket monitorga chiqarish

Serial.print ("X o'qida tezlashtirish bu:");

Serial.println (xAccl);

Serial.print ("Y o'qi bo'yicha tezlanish bu:");

Serial.println (yAccl);

Serial.print ("Z o'qida tezlashtirish bu:");

Serial.println (zAccl);

kechikish (300);

}

Tel kutubxonasida Wire.write () va Wire.read () buyruqlarni yozish va sensor chiqishini o'qish uchun ishlatiladi.

Arduino IDE seriyali monitorida sensorning chiqishini ko'rsatish uchun Serial.print () va Serial.println () ishlatiladi.

Sensorning chiqishi yuqoridagi rasmda ko'rsatilgan.

4 -qadam: Ilovalar:

Ilovalar
Ilovalar

ADXL345-bu kichik, ingichka, ultra quvvatli, 3 o'qli akselerometr bo'lib, u telefonlar, tibbiy asboblar va boshqalarda qo'llanilishi mumkin. O'yin va ishora asboblari, sanoat asboblari, shaxsiy navigatsiya qurilmalari va qattiq disk (HDD) himoyasini o'z ichiga oladi.

Tavsiya: