Mundarija:

ADXL345 Arduino Uno R3 dan foydalanish: 5 qadam
ADXL345 Arduino Uno R3 dan foydalanish: 5 qadam

Video: ADXL345 Arduino Uno R3 dan foydalanish: 5 qadam

Video: ADXL345 Arduino Uno R3 dan foydalanish: 5 qadam
Video: Joystick Robot | Best Arduino Project #shorts 2024, Noyabr
Anonim
ADXL345 Arduino Uno R3 dan foydalanish
ADXL345 Arduino Uno R3 dan foydalanish

Bu darsda biz ADXL345 tezlashtirish sensori qanday ishlatilishini bilib olamiz.

1 -qadam: komponentlar

- Arduino Uno taxtasi * 1

- USB kabeli * 1

- ADXL345 *1

- Non paneli * 1

- o'tish simlari

2 -qadam: printsip

Akselerometr tezlashtirish paytida hosil bo'lgan kuchni o'lchash uchun ishlatiladi. Eng asosiysi-umumiy tortishish tezligi, ya'ni 1g.

Gravitatsiyadan kelib chiqadigan tezlanishni o'lchab, siz qurilmaning tekis yuzasiga burilish burchagini hisoblashingiz mumkin. Dinamik tezlanishni tahlil qilib, siz qurilmaning qanday harakatlanishini ayta olasiz. Masalan, o'z-o'zini muvozanatlaydigan taxta yoki hoverboard Kalman filtri va holatini to'g'rilash uchun tezlashtirish sensori va giroskopni qo'llaydi.

ADXL345

ADXL345-bu kichik, ingichka, kam quvvatli, 3 o'qli akselerometr bo'lib, yuqori aniqlikdagi (13-bitli) o'lchami ± 16 g gacha. Raqamli chiqish ma'lumotlari 16 bitli ikkita qo'shimcha sifatida formatlanadi va ularga SPI (3 yoki 4 simli) yoki I2C raqamli interfeysi orqali kirish mumkin. Bu tajribada I2C raqamli interfeysi ishlatiladi.

Nishabni aniqlashda tortishish statik tezlanishini, shuningdek harakat yoki zarba natijasida dinamik tezlanishni o'lchash uchun juda mos keladi. Uning yuqori aniqligi (4 mg/LSB) moyillik o'zgarishini 1,0 ° dan past o'lchash imkonini beradi. Va mukammal sezuvchanlik (3,9mg/LSB @2g) ± 16g gacha yuqori aniqlikdagi chiqishni ta'minlaydi.

ADXL345 qanday ishlaydi

ADXL345 old tomondan sezuvchi komponent bilan tezlanishni aniqlaydi, keyin elektr signalini sezuvchi komponent uni analogli elektr signaliga o'zgartiradi. Keyinchalik, modulga o'rnatilgan AD adapteri analog signalni raqamli signalga aylantiradi.

X_OUT, Y_OUT va Z_OUT - mos ravishda X, Y va Z o'qlaridagi qiymatlar. Modulni yuqoriga qarating: Z_OUT maksimal +1g ga yetishi mumkin, minimal X_OUT -Ax yo'nalishi bo'yicha -1g, Y_OUT minimal -Ay yo'nalishi bo'yicha -1g. Boshqa tomondan, modulni teskari tomonga burang: minimal Z_OUT -1g, maksimal X_OUT Ax yo'nalishi bo'yicha +1g, Y_OUT maksimal -Ay yo'nalishi bo'yicha +1g., quyida ko'rsatilganidek. ADXL345 modulini aylantiring va siz uchta qiymat o'zgarishini ko'rasiz.

A kanali yuqori darajadan past darajaga o'zgarganda, agar B kanali yuqori bo'lsa, bu aylanuvchi enkoderning soat yo'nalishi bo'yicha aylanishini ko'rsatadi (CW); agar o'sha paytda B kanali past darajada bo'lsa, bu soat yo'nalishi bo'yicha teskari aylanishni bildiradi (CCW). Agar biz A kanali past bo'lganida B kanalining qiymatini o'qigan bo'lsak, aylanadigan kodlovchi qaysi tomonga burilishini bilishimiz mumkin.

Printsip: Quyidagi Rotary Enkoder modulining sxematik diagrammasini ko'ring. Undan ko'rish mumkinki, aylanadigan kodlovchi 3 -pin, ya'ni moduldagi CLK, B. kanali, 5 -pin, DT, A kanali. Yozuvchining aylanish yo'nalishini bilish uchun CLK qiymatini o'qing va DT.

Tizimda 3,3 V kuchlanish regulyatori mavjud, shuning uchun siz 5 V yoki 3,3 V kuchlanishli modulni quvvatlantirishingiz mumkin.

SDO GND ga ulanganligi sababli, ADXL345 ning I2C manzili 0x53, yozish uchun 0xA6, o'qish uchun 0xA7.

ADXL345 modulining pin funktsiyasi.

3 -qadam: protseduralar

Qadam 1. Zanjirni yarating.

2 -qadam:

Kodni https://github.com/primerobotics/Arduino saytidan yuklab oling

3 -qadam:

Eskizni Arduino Uno taxtasiga yuklang

Kodni boshqaruv paneliga yuklash uchun Yuklash belgisini bosing.

Agar oynaning pastki qismida "Yuklandi" tugmasi paydo bo'lsa, bu eskiz muvaffaqiyatli yuklanganligini bildiradi.

Yuklashdan so'ng, aniqlangan ma'lumotlarni ko'rishingiz mumkin bo'lgan Serial Monitor -ni oching. Modul tezlashishi o'zgarganda, rasm shunga mos ravishda oynada o'zgaradi.

4 -qadam: kod

Kod
Kod

// ADXL335

/********************************

ADXL 335

Eslatma: vcc5v, lekin ADXL335 Vs - 3,3V

O'chirish:

5V: VCC

analog 0: x o'qi

analog 1: y o'qi

analog 2: z o'qi

Yonilgandan keyin

Dasturda ketma -ket monitorni disk raskadrovka oynasini oching, u erda aniqlangan ma'lumotlar ko'rsatiladi. Qachon tezlanish o'zgarsa, ko'rsatkich shunga mos ravishda o'zgaradi.

*********************************

/Elektron pochta:

// Veb -sayt: www.primerobotics.in

const int xpin =

A0; // akselerometrning x o'qi

const int ypin =

A1; // y o'qi

const int zpin =

A2; // z o'qi (faqat 3 o'qli modellarda)

bo'sh o'rnatish ()

{

// ketma -ket aloqalarni ishga tushirish:

Serial.begin (9600);

}

bo'sh halqa ()

{

int x = analogRead (xpin); // xpindan o'qing

kechikish (1); //

int y = analogRead (ypin); // ypindan o'qing

kechikish (1);

int z = analogRead (zpin); // zpindan o'qing

float zero_G = 338.0; // ADXL335 quvvat manbai

Vs 3.3V tomonidan: 3.3V/5V*1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

suzmoq

zero_Gx = 331.5; // x o'qining zero_G chiqishi: (x_max + x_min)/2

suzmoq

zero_Gy = 329.5; // y o'qining zero_G chiqishi: (y_max + y_min)/2

float zero_Gz = 340.0; //

z o'qining zero_G chiqishi: (z_max + z_min)/2

float shkalasi =

67.6; // Vs 3.3V quvvat manbai: 3.3v/5v *1024/3.3v *330mv/g = 67.6 g

float scale_x =

65; // x o'qi shkalasi: x_max/3.3v*330mv/g

float scale_y =

68.5; // y o'qi shkalasi: y_max/3.3v*330mv/g

float scale_z =

68; // z o'qi shkalasi: z_max/3.3v*330mv/g

Serial.print (((float) x

- zero_Gx)/miqyosi_x); // ketma -ket monitorda x qiymatini chop etish

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy)/miqyosi_y); // ketma -ket monitorda y qiymatini chop eting

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz)/scale_z); // ketma -ket monitorda z qiymatini chop eting

Serial.print ("\ n");

kechikish (1000); // 1 soniya kuting

}

5 -qadam: kodni tahlil qilish

ADXL345 eksperimentining kodi 3 qismdan iborat: har bir port va qurilmani ishga tushirish, sensorlardan yuborilgan ma'lumotlarni olish va saqlash va ma'lumotlarni konvertatsiya qilish.

Tavsiya: