Mototsikl uchun Arduino tezlashuv sensori.

topshirish / Golovna

2 Ajoyib o'quvchi

Avvalo, giroskop va akselerometr modullarini ko'rib chiqaylik, menimcha, bu nima ekanligini qisqacha muhokama qilishdan tortinmaymiz. Giroskop - bu boshqariladigan tananing yo'nalishidagi o'zgarishlarga javob beradigan qurilma. Klassik xususiyat inertial ob'ekt bo'lib, tezda ilgichlarga o'raladi.

Natijada, o'ralgan ob'ekt ehtiyotkorlik bilan saqlanishi kerak va ilmoqlarning holati parvarish qilish yo'nalishini aniqlash uchun ishlatilishi mumkin.

Darhaqiqat, elektron giroskoplar boshqa sxemaga asoslangan va komponentlar ko'proq yig'iladigan (mikrosxemaga o'ralgan qobiqni surish oson bo'lmaydi).

  • Akselerometr - bu ob'ektning haqiqiy tezlashishi va tortishish tezlanishi o'rtasidagi farqni yaratadigan tezlanish proyeksiyasini o'lchaydigan qurilma.
  • Oddiy dumbada bunday tizim buloqni o'z ichiga olgan suspenziyaga o'rnatilgan massadan iborat (dust uchun buloq).
  • Shunday qilib, Yaksho Taku dan tizim PID Yakimos Kutu-ni Knoiti-ga, zim vidkhileni uchun masi í í í í í ib rukhida, piring piddreagu tayog'i Liíine gradatsiyasiga, murakkab bo'lishi uchun aylantirildi.
  • Shunday qilib, giroskop fazodagi o'zgarishlarga to'g'ridan-to'g'ri harakatga bog'liq bo'lmagan holda reaksiyaga kirishadi, akselerometr yordamida jismning chiziqli tezlanishini o'lchash mumkin va shu bilan jismning fazodagi harakatini alohida o'lchash mumkin.
  • Teri asboblari o'zlarining afzalliklari va kamchiliklariga ega.
  • 8 MGts chastotadagi ichki osilator (modul 32,768 kHz yoki 19,2 MGts chastotada tashqi kvarts rezonatorini ulash imkonini beradi)

Imkoniyatni hisobga olish kerak MPU6050 AUX ulanishlari uchun I2C master rejimida mavjud, undan oldin siz boshqa tashqi sensorni (masalan, magnitometr) ulashingiz mumkin.

Rostini aytsam, bu nima uchun kerakligini tushunmayapman, chunki mikrokontrollerning I2C avtobusiga qo'shimcha sensorlarni ulash osonroq.

  • MPU6050 xususiyatlari:
  • 16 bitli ADC bilan uch o'qli MEMS giroskopi
  • 16 bitli ADC bilan uch o'qli MEMS akselerometri
  • Raqamli harakat protsessori (DMP)
  • mikrokontrollerga ulanish uchun qul I 2 C
  • qo'shimcha sensor mikrosxemalariga ulanish uchun master I 2 C
  • sensor ma'lumotlar registrlari
  • haddan tashqari gavjum
  • harorat sensori
  • giroskop va akselerometrni o'z-o'zini tekshirish

qurilma identifikatsiya registri

GY-521 modulining tashqi ko'rinishi:

To'plam pinli ulanishlar va to'g'ri chiziqlar bilan birga keladi.

To'g'ri pinli ulagich yordamida lehim. Sensor ma'lumotlarini saqlash registrlaridan ham, FIFO funksiyalaridan ham o'qish mumkin.

Keling, akselerometr va giroskop sensorlarini qanday o'zgartirish mumkinligini aniqlaylik.

Biz harorat sensorini chizmaymiz - biz harorat haqidagi ma'lumotlarni o'qiymiz, odamlardan ma'nolarni tarjima qilamiz va ulardan foydalanamiz.

Giroskop mitt salqinligi qiymatlarini sozlamalarda ko'rsatilgan alohida tezlikda, masalan, soniyada 2000 daraja ko'rsatadi.

Akselerometrdan olingan ma'lumotlar har doim to'g'ri bo'lishi kerak, shuning uchun har qanday oqim tufayli nol har doim nolga qaytariladi (o'z vaqtida yoki oqimning tabiatida yotmaslik muhim), qisqa vaqtdan keyin u har qanday ma'lumotlar oralig'ida shovqin borligi, keyin o'nlab darajagacha bo'lgan darajalar aniq ko'rinmaydi.

Keyin, eksperimental ma'lumotlarga asoslanib, to'liq darajali qiymatlarning aniqligi butunlay barqarordir.

Chiziqli tezliklar oqimi haqida unutmang.

Sensor qo'shilganligi sababli siz modulning ichki qismlariga va bosh elementga - MPU6050 mikrosxemalariga qarashga o'tishingiz mumkin. Ma'lumotlar mikrosxema registrlarida saqlanadi, ulardan 100 dan ortiq (!). Va bu yerdagi o'q - ulug'vor suv osti qoyasi.

Nashriyot hujjatdagi barcha ma'lumotlarni yozishni bezovta qilmaydi, faqat eng kerakli narsalar haqida ma'lumot beradi. O'qish yoki yozish yoki ikkalasi uchun qancha registrlar mavjudligi noma'lum.

Bundan tashqari, ushbu reestrda uning nomidan tashqari hech qanday ma'lumot yo'q.

Xo'sh, siz registrda qayd etilgan qiymatlarni eksperimental ravishda aniqlashingiz kerak bo'ladi.

Bu erda biz RK displeyda 2004A (har biri 20 belgidan iborat 4 qator) ko'rsatilgan Atmega8 mikrokontrolleridan foydalanamiz.

Mavjud ma'lumotlar ekranda ko'rsatiladi, olinadi va MPU6050 modulining mikrosxemalariga aylantiriladi: 1. akselerometrning uchta o'qidagi qiymatlar, 2. giroskopning uchta o'qidagi qiymatlar, 3. harorat , 4. akselerometr ma'lumotlarini monitoring qilish (mikrokontroller resurslari bilan qoplangan), giroskop ma'lumotlari uchun Z o'qi bo'ylab (shuningdek, mikrokontrollerlarni qo'llab-quvvatlash usuli).

Ushbu ma'lumotlarning birinchi va boshqa nuqtalari mitten xarakterga ega - saqlash registrlaridan o'qiladiganlar, ya'ni giroskop uchun oqim yo'q va oxirida barcha qiymatlar nolga teng bo'ladi.

Bundan tashqari, akselerometrning Y o'qi bo'ylab sensorning joylashishiga qarab yonib turadigan 6 ta LED mavjud.

Sensor moduli 3,3 voltli stabilizatorni o'z ichiga oladi, u ham 5 voltgacha, ham 3,3 voltgacha ulanishi mumkin.

Mikrokontroller I 2 C darajasiga xalaqit bermaslik uchun 3,3 volt kuchlanish bilan quvvatlanadi.

Rivojlanish taxtasidagi qurilmalar to'plami:

Mikrokontroller konfiguratsiyasi sug'urta bitlarini (Atmega8) dasturlash uchun:

Bunday sensorlarning ishlash maydoni juda keng.

Ushbu modul ko'pincha giroskop va akselerometr komponentlari orqali kvadrokopter oqimini barqarorlashtirish uchun ishlatiladi. Bundan tashqari, modul turli qurilmalarni muvofiqlashtirish uchun ishlatilishi mumkin - oddiygina rok detektoridan tortib turli robotlar uchun orientatsiya tizimigacha yoki roklarni yoki boshqa qurilmalarni boshqarish uchun. Bunday sensorli qurilmalarning maydoni yangi va havaskor texnologiyani qabul qilish va rivojlantirish uchun foydalidir. Shuni ham ta'kidlashni istardikki, bu modul arzon va o'zgaruvchan gyroskop va/yoki akselerometrga bo'lgan ehtiyoj haqida gap ketganda yaxshi echimlar beradi, ularni sozlash mumkin bo'lgan ko'plab sensorlar, modulning kichik o'lchamlari; ko'p sonli sxemalarga osongina integratsiya qilinishi mumkin. Statistikaga mikrokontrollerning dasturiy ta'minoti, chiqish kodi, MPU6050 uchun hujjatlar va kontaktlarning zanglashiga olib keladigan sensori ishining videosi kiradi.Radio elementlari ro'yxatiUchrashuv
Turi DenominatsiyaMiqdori1 Eslatma Do'kon
Mening daftarim MOD1

Modul

1 Do'kon
GU-521 MPU6050 asosida

Bloknot oldidan

1 Do'kon
IC1 MPU6050 asosida

MK AVR 8-bit

1 Do'kon
ATmega8 VR1Lineer regulyator1 Do'kon
L7805AB VR21 Do'kon
AMS1117-3.3 HG1LCD displey3 Do'kon
2004 A C1470 mkF1 Do'kon
C2, C3, C5 C1Kondensator1

100 nF

Akselerometrlar tezlanish vektorining qiymatini aniqlash uchun ishlatiladi.
ADXL335 akselerometri uchta o'qga ega va shuning uchun ahamiyatsiz bo'shliqda tezlashuv vektorini aniqlay oladi.
Yerning tortishish kuchi vektor ekanligini hisobga olsak, akselerometr Yerning markaziga yaqin bo'lgan arzimas bo'shliqda uning atmosfera yo'nalishini ko'rsatishi mumkin.
Rasmda pasportdagi kichkintoylar (http://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) ADXL335 akselerometriga ishora qilingan.

Bu erda qurilma tanasining kosmosda geometrik joylashishiga nisbatan akselerometr sezgirligining koordinata o'qlari tasvirlari, shuningdek akselerometrning 3 ta kanalidagi kuchlanish qiymatlari jadvali uning yo'nalishiga qarab joylashgan. bo'sh joy.
Jadvaldagi ma'lumotlar sensorning xavfsizligini ta'minlash uchun o'rnatiladi.
Keling, akselerometrni ko'rsatadigan hisobotni ko'rib chiqaylik.

Sensor gorizontal holatda, masalan, stol ustida yotadi.
Arduino-da 10 bitli ADC mavjud va chiqishda ruxsat etilgan maksimal kuchlanish 5 voltni tashkil qiladi.
Kuchlanish diapazonlari 2 tagacha qiymatga ega bo'lishi mumkin bo'lgan bitlar bilan kodlangan - 0 yoki 1. Bu degani, 10-bosqichda barcha diapazonlar (1+1) ga bo'linadi.
1024 kesish darajasida.

Olingan ko'rsatkichlarni voltga aylantirish uchun siz analog kirishdagi teri qiymatlarini 1024 (kuchlanish) ga bo'lishingiz va keyin 5 (volt) ga ko'paytirishingiz kerak.
Ajablanarlisi shundaki, akselerometrni Z o'qi (qolgan qismi) bilan ishlatish haqiqatan ham mumkin.
Sensor gorizontal harakatlansa va yuqoriga qarasa, raqamlar keladi (2,03 +/-0,01).
Shuning uchun Z o'qi va 0 daraja bo'ylab "+1g" tezlashuvini ko'rsatish mumkin.
Keling, sensorni aylantiramiz.
Raqamlar keladi (1,69 +/-0,01), bu "-1g" va 180 darajani ko'rsatishi mumkin.

Akselerometr qiymatlari 90 va 270 daraja burchaklarda ma'lum va jadvalga kiritilgan.
Jadvalda akselerometrning aylanish tezligi ("A" bo'limi) va voltsdagi mos keladigan Zout qiymatlari ("B" bo'limi) ko'rsatilgan.
Aniqlik uchun Zout chiqishidagi kuchlanish grafigi burilishga qarab chiziladi.
Natijada, rasmda akselerometrning barcha o'qlar bo'ylab tezlashishi va aylanishini hisoblaydigan yangi eskiz ko'rsatilgan.
Sharhlar dastur kodini tushuntirishni beradi.

"Serial.print()" portiga chiqarilganda, "\t" belgisi teng qiymatlar birma-bir to'planishi uchun yorliq belgisini bildiradi.

"+" qatorlarni birlashtirish (birlashtirish) degan ma'noni anglatadi.

Bundan tashqari, "String ()" operatori kompilyatorga raqamli qiymatlarni qatorga aylantirish kerakligini aniq aytadi.

"round()" operatori 1 daraja atrofida yaxlitlanadi.

Shunday qilib, biz Arduino yordamida ADXL335 analog akselerometridan ma'lumotlarni qanday chiqarish va qayta ishlashni o'rgandik. Endi biz qurilmalarimizda akselerometrdan foydalanishimiz mumkin.

X, Y, Z to'g'ridan-to'g'ri o'qlarining tezlanishini aniqlashga imkon beradi va ob'ektning kosmosda belgilangan yo'nalishini o'rnatadi: rulon va qadam o'rtasida.

Video ko'rib chiqish

Ulanish va sozlash Akselerometr I²C/TWI protokoli yordamida keramik elektronika bilan birlashtirilgan. Vikorni ulash uchun ikkita 3 simli halqa kerak. Modulni Arduino-ga ulashda siz uni qo'lda tanlashingiz kerak. Vikorni ulash uchun ikkita 3 simli halqa kerak. Akselerometrdan ma'lumotlarni olish uchun biz Troyka-IMU kutubxonasini yozdik. U akselerometrdan ma'lumotlar uzatiladigan barcha nozik protokollarni o'z ichiga oladi va qiymatni ko'rsatish uchun oddiy va mazmunli funktsiyalarni ta'minlaydi. Robot dumba Ketma-ket portda dumba qanday ko'rsatilishi va X, Y, Z o'qlari bo'ylab tezlanishning kattaligi. accelerometer.ino// kutubxona I²C ishidan oldin #o'z ichiga oladi// IMU modullari bilan ishlash kutubxonasi // akselerometr yordamida ob'ekt yaratish Akselerometr tezlashuvi; bekor o'rnatish() ( // oxirgi portni oching Serial.begin(115200); // Initsializatsiya boshlanishi haqida bildirishnomalarni ko'rsatadi Serial.println("Akselerometrni ishga tushirish..."); // akselerometrni ishga tushirish) ; accel.begin();// akselerometrning sezgirligini o'rnating // akselerometrni ishga tushirish) ; // 2g - tozalash uchun, 4g, 8g accel.setRange(RANGE_2G) ; // akselerometrni ishga tushirish// Masofadan ishga tushirish haqida bildirishnomani ko'rsatadi /* // to'g'ridan-to'g'ri tezlanish qiymati m/s² X, Y í Z float x, y, z; }

accel.readAXYZ(&x, &y, &z);

Serial.print(x);

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

Serial.print(y);

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

Serial.print(z);

Serial.println("");

kechikish (100);

  1. */
  2. Elementi to'lash
  3. LIS331DLH da akselerometr
  4. Akselerometr LIS331DLH chipiga asoslangan va LGA 16 (3x3x1 mm) paketidagi STMicroelectronicsd kompaniyasining MEMS texnologiyasi asosidagi miniatyura tezlashuv sensoriga ega.
  5. Akselerometr I²C/TWI protokoli yordamida keramik elektronika bilan birlashtirilgan.
  6. Manzillar 0b0011000 raqamiga qo'shiladi.
  7. Texnik bozorda arzon va maxsus dizaynda yig'ilishi mumkin bo'lgan minglab sensorli modullar mavjud.

Bundan oldin modullar dasturlashtirilgan mikrokontrollerga ulanadi.

Akselerometr - bu jismning tortishish kuchi va tortishish tezlashishi o'rtasidagi farqni aniqlash uchun ishlatiladigan asbob.

Sensor o'rnatilgan mikrosxemadan tayyorlangan taxtadan iborat.

Qurilma to'xtab qoladi.

Komponent MPU-6050 mikrosxemasiga asoslangan.

To'plam ikkita elementni o'z ichiga oladi - giroskop va akselerometr.

Ushbu qurilmalar dizayndan oldin yig'iladi va keyin interfeys orqali to'g'ridan-to'g'ri mikrokontrollerga o'tkaziladi

Sensor moduli asbobning kosmosdagi joylashuvi va harakatini aniqlashga yordam beradi.

Differensial va qirralarning o'rash jarayonida tortishish va suyuqlikning qo'shimcha vektori bilan belgilanadi.

Haroratni sozlash funktsiyasi ham kiritilgan.

Siqish chiziqli tezlanish va suyuqlik bilan ko'rsatiladi.

Butun rasm 3 eksa bo'ylab chizilgan.

Ko'pincha odamning vestibulyar apparati bilan bog'liq bo'lgan komponent, odamlarga tortishish kuchini idrok etishga va tortishish kuchini boshqarishga yordam beradi.

Prototiplash uchun mo'ljallangan ishlab chiqish kengashi

Yaxshilash kundalik elektron sxemalarning noma'lum qismidir.

Rivojlanish kengashi elektron jihozlarni loyihalash uchun ajralmas hisoblanadi. Ilgari, vino sanoati an'anaviy non taxtalaridan foydalangan, ammo hozir keng tarqalgan bo'lib, ular qo'shimcha lehimlashni talab qilmaydigan qulaydir.
Shu tarzda, elektron sxemalarni yig'ish va nozik sozlash jarayoni sezilarli darajada tezlashadi: noto'g'ri radio komponentlarini o'zgartirish uchun lehim temirni tez-tez olib tashlashingiz shart emas. Lehimsiz elektron platalarning prototipini tayyorlash uchun material plastikdir.
Bundan tashqari, barcha kontaktlar to'lovdan oldin ishonchli tarzda muhrlangan, shuning uchun hech qanday elementni almashtirishning hojati yo'q. Bundan tashqari, barcha kontaktlar to'lovdan oldin ishonchli tarzda muhrlangan, shuning uchun hech qanday elementni almashtirishning hojati yo'q.
Tug'ilgan kuningiz bilan tato-tato Asl dartlar biz uchun bir xil, ular jumper dartlari deb ham ataladi.
Ular arzon va to'g'ridan-to'g'ri, har qanday bozorda yoki radio havaskorlari uchun onlayn-do'konda sotiladi. Croc 2. Akselerometrning Arduino mikrokontrolleriga ulanish diagrammasi
  1. Jarayon va ulanish sxemasi oddiy:
  2. GY-521 (MPU-6050)
  3. Arduino Uno
  4. VCC
  5. 3,3 V

GND

SCL

A5

// Kerakli kutubxona ishini o'z ichiga oladi #include "MPU6050.h";

#o'z ichiga "I2Cdev.h";

#o'z ichiga "Wire.h";

Vikorni ulash uchun ikkita 3 simli halqa kerak. // MPU6050 axeler sensor modulining ramziy ob'ektini yarating;<< 8) | data); accY = ((data << 8) | data); accZ = ((data << 8) | data); tempRaw = ((data << 8) | data); gyroX = ((data << 8) | data); gyroY = ((data << 8) | data); gyroZ = ((data << 8) | data); /* Calculate the angls based on the different sensors and algorithm */ accYangle = (atan2(accX,accZ)+PI)*RAD_TO_DEG; accXangle = (atan2(accY,accZ)+PI)*RAD_TO_DEG; double gyroXrate = (double)gyroX/131.0; double gyroYrate = -((double)gyroY/131.0); gyroXangle += kalmanX.getRate()*((double)(micros()-timer)/1000000); // Calculate gyro angle using the unbiased rate gyroYangle += kalmanY.getRate()*((double)(micros()-timer)/1000000); kalAngleX = kalmanX.getAngle(accXangle, gyroXrate, (double)(micros()-timer)/1000000); // Calculate the angle using a Kalman filter kalAngleY = kalmanY.getAngle(accYangle, gyroYrate, (double)(micros()-timer)/1000000); timer = micros(); Serial.println(); Serial.print("X:"); Serial.print(kalAngleX,0); Serial.print(" "); Serial.print("Y:"); Serial.print(kalAngleY,0); Serial.println(" "); // The accelerometer"s maximum samples rate is 1kHz } void i2cWrite(uint8_t registerAddress, uint8_t data){ Wire.beginTransmission(IMUAddress); Wire.write(registerAddress); Wire.write(data); Wire.endTransmission(); // Send stop } uint8_t* i2cRead(uint8_t registerAddress, uint8_t nbytes) { uint8_t data; Wire.beginTransmission(IMUAddress); Wire.write(registerAddress); Wire.endTransmission(false); // Don"t release the bus Wire.requestFrom(IMUAddress, nbytes); // Send a repeated start and then release the bus after reading for(uint8_t i = 0; i < nbytes; i++) data [i]= Wire.read(); return data; }

// Kutubxona obyektini yaratish Wire Wire b;

// I2C kontakti I2Cdev h ramziy ob'ekt yaratish;

// 3 o'qdagi nuqtalarga mos keladigan raqamli ma'lumotlarni kiriting int16_t axx, axy, axz;

Modul turli elektron qurilmalarni muvofiqlashtirishga yordam beradi.

Misol uchun, u ko'pincha robot kamera uchun bo'lgani kabi, rox detektorida orientatsiya tizimini o'rnatish uchun ishlatiladi.

Sensor funksiyalarini yaxshilaydigan boshqa shunga o'xshash qurilmalar boshqa sohalarda muvaffaqiyat qozonishi mumkin.

Akselerometr - bu X, Y va Z uchta eksa bo'ylab dinamik va statik tezlanishni o'lchash imkonini beruvchi qurilma. Umuman olganda, statik tezlanishni kosmosdagi holatiga qarab aniqlash mumkin (akselerometer - aylanish sensori), va bir xilda. yo'l dinamik tezlashtirish (rulda yoki strus) to'g'ridan-to'g'ri tezlashtirish bilan aniqlanishi mumkin.

Raqamli akselerometr ADXL345 - ±16 g gacha bo'lgan o'qlar bo'ylab yuqori ajratish tezligi (13 bit) bo'lgan 3 o'qli akselerometr.

Modul kam energiya iste'moli va kichik o'lchamlarga ega.Modul bilan axborot almashinuvi keyingi I2C yoki SPI interfeyslari (3 yoki 4 simli) orqali amalga oshiriladi.ADXL345 akselerometrli Arduino modullari seriyasiga asoslangan.
Modulni, masalan, quyidagicha ko'rish mumkin:Ushbu modul GY-291 deb ataladi.
Bundan tashqari, barcha kontaktlar to'lovdan oldin ishonchli tarzda muhrlangan, shuning uchun hech qanday elementni almashtirishning hojati yo'q.Modul quyidagi funktsiyalarni o'z ichiga oladi:Bundan tashqari, barcha kontaktlar to'lovdan oldin ishonchli tarzda muhrlangan, shuning uchun hech qanday elementni almashtirishning hojati yo'q.Bundan tashqari, barcha kontaktlar to'lovdan oldin ishonchli tarzda muhrlangan, shuning uchun hech qanday elementni almashtirishning hojati yo'q.
Shu tarzda, elektron sxemalarni yig'ish va nozik sozlash jarayoni sezilarli darajada tezlashadi: noto'g'ri radio komponentlarini o'zgartirish uchun lehim temirni tez-tez olib tashlashingiz shart emas.Modul ekraniTopshiriqTopshiriq
Arduino platasiga ulaningSPI10 -
I2CYer- -
hayot+3,3V- -
C.S.Tanlangan SPI interfeysini tanlang12 -
Ular arzon va to'g'ridan-to'g'ri, har qanday bozorda yoki radio havaskorlari uchun onlayn-do'konda sotiladi.INT1
Uzilish chiqishi 1 (*)
11 Croc 2. Akselerometrning Arduino mikrokontrolleriga ulanish diagrammasi
Tug'ilgan kuningiz bilan tato-tatoINT213 Asl dartlar biz uchun bir xil, ular jumper dartlari deb ham ataladi.

Uzilish chiqishi 2 (*)

S.D.O.

Foydalanuvchi ma'lumotlari


Magistrdan SPI interfeysiga ma'lumotlar

I2C interfeysi uchun ma'lumotlar avtobusi Shinalarga teginish(*) Biz uzilgan ADXL345 maʼlumotlari bilan ishlamaymiz.

2 Eksa yaxshi, unda robotning uzilishlar bilan ovqatlanishi aniq tasvirlangan.

Tanlangan interfeysga qarab - SPI yoki I2C - modul ulanishlari jadvalda ko'rsatilganidek bo'ladi.


Ikkala holatda ham osonroq. Keling, ADXL345 mikrosxemalari registrlarining tuzilishini ko'rib chiqaylik: Boshqa tomondan, biz oziq-ovqat boshqaruvi reestrini ro'yxatdan o'tkazishimiz kerak, chunki Bu qurilmaning ishlash rejimini ko'rsatadi:, Men yaku haqida bir necha bor gapirganman.

Akselerometr sensorli plataga ulanishi va registrni o'qishi mumkin DEVID, Unda doimiy qiymat saqlanadi - ADXL345 akselerometrining identifikatori.


ID qiymati 0xE5.


O'qishdan oldin, 0x0 manzilidagi registrdan boshlab 0x80 buyrug'ini, shuningdek, biz o'qimoqchi bo'lgan akselerometrni yozishni unutmang (yuqoridagi diagrammaga qarang, kichik 38 - SPI 4-Wire Read):


Ko'rinib turibdiki, registrda texnik tavsifga (ma'lumotlar varag'iga) muvofiq ADXL345 akselerometr identifikatorining qiymati bo'lgan 0xE5 raqami mavjud. O'q soatlik jadvalda shunday ko'rinadi: Qurilma hamma narsa yaxshi ekanligini ko'rsatadi. Shinalarga teginish Endi biz akselerometrni karartma rejimiga o'tkazishimiz kerak.

Buning uchun ro'yxatdan o'tish kerak POWER_CTL (Ro'yxatga olish manzillari 0x2D) 0x08 raqami (bit YUQORIgacha). Shundan so'ng siz 0x32 dan 0x37 gacha bo'lgan registrlarni o'qishni boshlashingiz mumkin, ular uchta eksa bo'ylab tezlashuv ma'lumotlarini saqlaydi. } Men sizga Arduino bilan yordam bermoqchiman. Keling, quyidagi eskizni yozamiz: SPI uchun ADXL345 ma'lumotlarini o'qish uchun eskiz(jahlingiz chiqsin) #include } const bayt READ = 0x80; //bit o'qish belgisi const bayt MB = 0x40;//bit MB (katta bayt uzatish) const int CS = 10;

// Izdoshni tanlash uchun PIN


bekor o'rnatish() ( Serial.begin(115200); SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV32);- va 0x40 bilan - katta baytli uzatish belgisi Keling, ADXL345 mikrosxemalari registrlarining tuzilishini ko'rib chiqaylik:: 0x32 YOKI 0x80 YOKI 0x40 = 0011_0010 YOKI 1000_0000 YOKI 0100_0000 = 1110_1101 = 0xF2

Davolash ma'nosi nimani anglatadi?

3 Ushbu oziqlanish statistikaning qolgan qismida ko'rinadi. Bundan tashqari, Arduino uchun bir qator kutubxonalar mavjud bo'lib, ular akselerometrdan ma'lumotlarni sozlash va o'qishni soddalashtiradi, bu sizga registrlar va baytlar kabi past darajadagi nutq haqida o'ylamaslikka imkon beradi.

Kutubxonalarga xabar ham statistik ma'lumotlarga asoslanadi.


ADXL345 raqamli akselerometrli robot

I2C interfeysi orqasida POWER_CTL I2C interfeysi orqali ADXL345 bilan ma'lumot almashishning vaqt-soat diagrammasi quyidagicha ko'rinadi: YUQORIgacha). Keling, Arduino uchun eskizni qayta yozamiz, u xuddi shunday ishlaydi, faqat I2C interfeysi orqali almashish: } Men sizga Arduino bilan yordam bermoqchiman. ADXL345 I2C ma'lumotlarini o'qish uchun eskiz }

const int adxl345 = 0x53; DEVID// ADXL345 ning I2C manzillari


Serial.begin(9600);

Wire.begin();

4 // registr manziliga yozing DEVID Wire.beginTransmission(adxl345); Wire.write(bayt(0x00));

Wire.endTransmission();


Va eksa bizning eskizimizni Arduino IDE yadrosining ketma-ket porti monitorida ko'rsatishdir (siz ushbu qurilma jim rejimda himoyalanganligini aniqlashtirishingiz kerak - akselerometr fotosuratda bo'lgani kabi stolda mahkam yotadi).

Uchta shpal uchun mos ravishda X, Y va Z o'qlari bo'ylab akselerometr tomonidan aniqlangan statik tezlanish qiymatlari keltirilgan.


O'rta ustun - Y o'qi displeyi - yuqoriroq qiymatlarga ega, qolgan ikkitasi uchun pastroq. Ushbu qiymat akselerometr registrlarida qayd etilgan aqliy ma'lumotlarda berilgan. ADXL345 akselerometri keng doiradagi vimirlarga ega.

Keling, akselerometr sensori diapazonlari va o'lchamlari jadvalini ko'rib chiqaylik: Men taxmin qilaman g - bu tushishning tezlashishi bo'lib, u sekundiga taxminan 9,81 metrni tashkil qiladi (m/s 2). Yuvish uchun diapazon - ko'rish −16 g uchun

16 g Ushbu qiymat akselerometr registrlarida qayd etilgan aqliy ma'lumotlarda berilgan.(belanchak

32 g

).

Jadvalga mos keladigan bo'lsak, bu diapazon tezda 13 bit aniqlik va 2 13 = 8192 songa to'g'ri keladi. Shunday qilib, 1 qadam uchun tezlashuv 32g/8192 = 0,00390625g=0,00390625×9,81 ≈ 0,038 m/s 2 ga tushadi. Mayuchi tse na vazy, tashqariga chiqing, shunda men bu kontseptsiyada tezda eskizni qo'yaman:

  • Xo'sh, bu butunlay mantiqiy.

Qurilmangiz doimo quvvatlanadi va sinxronlashtiriladi.