Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
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 zarracha fotoni bilan o'zaro aloqasi tasvirlangan. Tezlashtirish qiymatlarini o'qish uchun biz I2c adapterli zarrachadan foydalanganmiz, bu I2C adapteri sensor moduliga ulanishni oson va ishonchli qiladi.
1 -qadam: Uskuna kerak:
Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:
1. ADXL345
2. Foton zarrachalari
3. I2C kabeli
4. Zarrachalar fotoni uchun I2C qalqoni
2 -qadam: Uskuna ulanishi:
Uskuna ulash bo'limi asosan sensor va zarracha fotoni 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:
Endi zarracha kodidan boshlaylik.
Sensor modulini zarracha bilan ishlatganda, biz application.h va spark_wiring_i2c.h kutubxonasini o'z ichiga olamiz. "application.h" va spark_wiring_i2c.h kutubxonasi sensor va zarracha o'rtasidagi i2c aloqasini osonlashtiradigan funktsiyalarni o'z ichiga oladi.
Butun zarracha kodi foydalanuvchiga qulay bo'lishi uchun quyida keltirilgan:
#qo'shing
#qo'shing
// ADXL345 I2C manzili - 0x53 (83)
#aniqlang Addr 0x53
int xAccl = 0, yAccl = 0, zAccl = 0;
bo'sh o'rnatish ()
{
// O'zgaruvchini o'rnating
Particle.variable ("i2cdevice", "ADXL345");
Particle.variable ("xAccl", xAccl);
Particle.variable ("yAccl", yAccl);
Particle.variable ("zAccl", zAccl);
// 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);
// Chiqish ma'lumotlarining tezligini tanlang = 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 uyqu o'chirishni tanlang
Wire.write (0x08);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar formati registrini tanlang
Wire.write (0x31);
// To'liq piksellar sonini tanlang, +/- 2g
Wire.write (0x08);
// I2C uzatishni tugatish
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 ();
// Qurilmadan 1 bayt ma'lumot so'rash
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 ();
}
kechikish (300);
}
// 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 boshqaruv paneliga chiqarish
Particle.publish ("X o'qida tezlashtirish bu:", String (xAccl));
Particle.publish ("Y o'qida tezlashtirish bu:", String (yAccl));
Particle.publish ("Z o'qida tezlashtirish bu:", String (zAccl));
}
Particle.variable () funktsiyasi sensorning chiqishini saqlash uchun o'zgaruvchilarni yaratadi va Particle.publish () funktsiyasi saytning boshqaruv panelida chiqishini ko'rsatadi.
Ma'lumot uchun sensor chiqishi yuqoridagi rasmda ko'rsatilgan.
4 -qadam: 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.