Mundarija:

GY511 modulini Arduino bilan qanday ishlatish kerak [Raqamli kompas yasash]: 11 qadam
GY511 modulini Arduino bilan qanday ishlatish kerak [Raqamli kompas yasash]: 11 qadam

Video: GY511 modulini Arduino bilan qanday ishlatish kerak [Raqamli kompas yasash]: 11 qadam

Video: GY511 modulini Arduino bilan qanday ishlatish kerak [Raqamli kompas yasash]: 11 qadam
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Noyabr
Anonim
GY511 modulini Arduino bilan qanday ishlatish kerak [Raqamli kompas yasash]
GY511 modulini Arduino bilan qanday ishlatish kerak [Raqamli kompas yasash]

Sharh

Ba'zi elektronika loyihalarida biz har qanday vaqtda geografik joylashuvni bilishimiz va shunga mos ravishda ma'lum bir operatsiyani bajarishimiz kerak. Ushbu qo'llanmada siz raqamli kompas yaratish uchun Arduino bilan LSM303DLHC GY-511 kompas modulidan foydalanishni o'rganasiz. Birinchidan, siz ushbu modul va uning qanday ishlashini bilib olasiz, keyin LSM303DLHC GY-511 modulini Arduino bilan qanday bog'lashni bilib olasiz.

Siz nimani o'rganasiz

  • Kompas moduli nima?
  • Kompas moduli va Arduino interfeysi.
  • GY-511 moduli va Arduino yordamida raqamli kompas yarating.

1 -qadam: Kompas moduli haqida umumiy ma'lumot

Kompas moduli haqida umumiy ma'lumot
Kompas moduli haqida umumiy ma'lumot

GY-511 moduli 3 o'qli akselerometr va 3 o'qli magnitometrni o'z ichiga oladi. Bu sensor chiziqli tezlanishni ± 2 g / ± 4 g / ± 8 g / ± 16 g va magnit maydonlarni ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 o'lchovlarda o'lchashi mumkin. / ± 8.1 Gauss.

Ushbu modul magnit maydonga joylashtirilganda, Lorents qonuniga ko'ra, uning mikroskopik lasanida qo'zg'alish oqimi paydo bo'ladi. Kompas moduli bu tokni har bir koordinata yo'nalishi uchun differentsial kuchlanishga aylantiradi. Ushbu kuchlanishlardan foydalanib, siz magnit maydonini har bir yo'nalishda hisoblashingiz va geografik pozitsiyani olishingiz mumkin.

Maslahat

QMC5883L - bu boshqa kompas moduli. LMS303 moduliga o'xshash tuzilishga va dasturga ega bo'lgan bu modul ishlashda biroz farq qiladi. Agar siz loyihalarni amalga oshirayotgan bo'lsangiz, modul turiga ehtiyot bo'ling. Agar sizning modulingiz QMC5882L bo'lsa, tegishli kutubxona va o'quv qo'llanmasiga kiritilgan kodlardan foydalaning.

2 -qadam: kerakli komponentlar

Kerakli komponentlar
Kerakli komponentlar

Uskuna komponentlari

Arduino UNO R3 *1

GY-511 3 o'qli akselerometr + magnitometr *1

TowerPro Servo Dvigatel SG-90 *1

1602 LCD moduli *1

Yuguruvchilar *1

Dasturiy ta'minot ilovalari

Arduino IDE

3-qadam: Arduino bilan GY-511 kompas modulini ulash

Arduino bilan GY-511 kompas moduli
Arduino bilan GY-511 kompas moduli
Arduino bilan GY-511 kompas moduli
Arduino bilan GY-511 kompas moduli

GY-511 kompas modulida 8 ta pin bor, lekin Arduino bilan ishlash uchun ulardan atigi 4 tasi kerak. Bu modul Arduino bilan I2C protokoli yordamida aloqa o'rnatadi, shuning uchun modulning SDA (I2C chiqishi) va SCK (I2C soatli kirish) pinlarini Arduino kartasidagi I2C pinlariga ulang.

Eslatma Ko'rib turganingizdek, biz ushbu loyihada GY-511 modulidan foydalanganmiz. Ammo siz boshqa LMS303 kompas modullarini sozlash uchun ushbu yo'riqnomadan foydalanishingiz mumkin.

4-qadam: GY-511 kompas modulini kalibrlash

Navigatsiya qilish uchun siz avval modulni sozlashingiz kerak, ya'ni o'lchash diapazonini 0 dan 360 gradusgacha sozlang. Buning uchun modulni quyida ko'rsatilgandek Arduino -ga ulang va quyidagi kodni taxtangizga yuklang. Kodni bajargandan so'ng, ketma -ket monitor oynasida X, Y va Z o'qlari uchun o'lchov diapazonining minimal va maksimal qiymatlarini ko'rishingiz mumkin. Keyingi qismda sizga bu raqamlar kerak bo'ladi, shuning uchun ularni yozing.

5 -qadam: O'chirish

O'chirish
O'chirish

6 -qadam: kod

Ushbu kodda sizga I2C aloqasi uchun Wire.h kutubxonasi va kompas moduli uchun LMS303.h kutubxonasi kerak. Ushbu kutubxonalarni quyidagi havolalardan yuklab olishingiz mumkin.

LMS303.h kutubxonasi

Wire.h kutubxonasi

Eslatma QMC5883 dan foydalanayotgan bo'lsangiz, sizga quyidagi kutubxona kerak bo'ladi:

MechaQMC5883L.h

Bu erda biz LMS303 kodini tushuntiramiz, lekin siz QMC moduli uchun kodlarni ham yuklab olishingiz mumkin.

Keling, ba'zi yangi funktsiyalarni ko'rib chiqaylik:

compass.enableDefault ();

Modulni ishga tushirish

compass.read ();

Kompas modulining chiqish qiymatlarini o'qish

yugurish_min.z = min (yugurish_min.z, kompas.mz); yugurish_max.x = maksimal (yugurish_max.x, kompas.mx);

O'lchangan qiymatlarni solishtirish orqali o'lchov diapazonining minimal va maksimal qiymatlarini aniqlash.

7 -qadam: raqamli kompas yaratish

Modulni kalibrlashdan so'ng, biz servo dvigatelni modulga ulash orqali kompas qurmoqchimiz. Shunday qilib, servo ko'rsatkich har doim bizga kompas ustidagi qizil o'q kabi shimoliy yo'nalishni ko'rsatadi. Buning uchun kompas moduli birinchi navbatda geografik yo'nalishni hisoblab, Arduino -ga yuboradi va tegishli koeffitsient yordamida siz servo dvigatelning burilish burchagini hisoblaysiz, shunda uning ko'rsatkichi magnit shimolga ishora qiladi. Oxir -oqibat, biz bu burchakni servo dvigatelga qo'llaymiz.

8 -qadam: O'chirish

O'chirish
O'chirish

9 -qadam: kod

Kod
Kod

Bu qism uchun sizga Arduino dasturiga sukut bo'yicha o'rnatilgan Servo.h kutubxonasi kerak bo'ladi.

Keling, ba'zi yangi funktsiyalarni ko'rib chiqaylik:

Servo Servo1;

Modulni ishga tushirish

compass.read ();

Servo motorli ob'ekt bilan tanishish

Servo1. biriktirish (servoPin); kompas.init (); compass.enableDefault ();

Kompas modulini va servo motorni ishga tushirish

Servo1.attach () argumenti - servo dvigatelga ulangan pin raqami.

kompas.m_min = (LSM303:: vektor) { -32767, -32767, -32767}; kompas.m_max = (LSM303:: vektor) { +32767, +32767, +32767};

Bu satrlar yordamida siz oldingi qismda olingan diapazonni o'lchash uchun minimal va maksimal qiymatlarni aniqlaysiz.

float sarlavhasi = compass.heading ((LSM303:: vektor) {0, 0, 1});

Heading () funktsiyasi koordinata o'qi va sobit o'q o'rtasidagi burchakni qaytaradi. Ruxsat etilgan o'qni funktsiya argumentidagi vektor bilan belgilashingiz mumkin. Masalan, bu erda (LSM303:: vektor) {0, 0, 1} ni belgilab, Z o'qi doimiy o'q sifatida qabul qilinadi.

Servo 1. yozish (sarlavha);

Servo1.write () funktsiyasi kompas modulining o'qish qiymatini servo dvigatelda qo'llaydi.

E'tibor bering, servo dvigatel magnit maydonga ega bo'lishi mumkin, shuning uchun servo dvigatelni kompas modulidan mos keladigan masofada joylashtirish yaxshiroqdir, bu esa kompas modulining burilishiga olib kelmaydi.

Tavsiya: