Mundarija:

Gyro, akselerometr va Arduino yordamida burchakni o'lchash: 5 qadam
Gyro, akselerometr va Arduino yordamida burchakni o'lchash: 5 qadam

Video: Gyro, akselerometr va Arduino yordamida burchakni o'lchash: 5 qadam

Video: Gyro, akselerometr va Arduino yordamida burchakni o'lchash: 5 qadam
Video: Lesson 18: Using Tile Angle Sensor SCA60C | Arduino Step By Step Course 2024, Noyabr
Anonim
Gyro, akselerometr va Arduino yordamida burchakni o'lchash
Gyro, akselerometr va Arduino yordamida burchakni o'lchash

Qurilma - bu o'z -o'zidan muvozanatli robotga aylanadigan prototip, bu teshikning ikkinchi qismi (akselerometrni o'qing va dvigatelni o'z balansida boshqaring). Bu erda biz faqat gyro bilan birinchi qismni topamiz, bu ko'rsatmada biz burchakni gyro va akselerometr yordamida o'lchaymiz va har ikkala sensorni birlashtiradigan uskuna yordamida silliq signal olamiz. Texnika "qo'shimcha filtr" deb ataladi. Oldingi

1 -qadam: Bizga nima kerak:

Bizga nima kerak
Bizga nima kerak
Bizga nima kerak
Bizga nima kerak
Bizga nima kerak
Bizga nima kerak
Bizga nima kerak
Bizga nima kerak

Ba'zi bir qismlarni o'zgartirish mumkin, va ba'zi o'zgartirishlar sizning dasturingizga mos bo'lishi kerak. Ushbu loyihada biz quyidagilarni ishlatamiz:- Breadboard- Mikrokontroller, men Arduinoboard- Wire- Jumper Wires- Gyroscope XV-8100- Nunchuck Wii (akselerometr uchun)- Arduino uchun Nunchuck Wii adapteri

2 -qadam: qurilish …

Qurilish…
Qurilish…
Qurilish…
Qurilish…
Qurilish…
Qurilish…

O'chirish arduino -ning 0 -portiga to'g'ridan -to'g'ri ulangan giroskopdan va I2C portidagi nunchuck wii -dan iborat. - gyrosni non taxtasiga ulang2. - simli narsa:- Arduino-dagi analog portga ulangan gyrodan ovozli pin (och to'q sariq sim)- erga ulangan gyrodan pin (oq sim)- Vdd ga ulangan girodan V+ pin (to'q sariq sim) yig'ish akselerometr: 1. - adapterni nunchuck2 ga ulang. - adapter3 yordamida nunchukni arduino -ga ulang. - aksel sensorini yuqoridagi rasmga joylashtiring

3 -qadam: Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar

Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar
Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar
Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar
Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar
Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar
Davom etishdan oldin ba'zi qo'shimcha ma'lumotlar

Ikkala sensordan ham biz burchakni o'lchashimiz mumkin, lekin ikkita alohida usuldan foydalanamiz. Burchakni gyro yordamida o'lchash uchun biz signalni birlashtirishimiz kerak, lekin nima uchun buni qilishimiz kerak? Jiroskop bizga burchak tezligini bergani uchun, burchak olishning oddiy usuli - burchak tezligini vaqtga ko'paytirishi [burchak = burchak + w * dt] Akselerometr yordamida burchakni o'lchash uchun biz har birining tortishish kuchini sezishimiz kerak. akselerometr o'qi, bu nimani anglatadi, tortishish tezlanishining sensorning har bir yo'nalishi bo'yicha proektsiyasi bizga burchak haqida tasavvur beradi. [angle_accel = arctg (Ay / sqrt (Ax^2 + Az^2))] Xo'sh, nega biz bitta sensor o'rniga ikkita sensorni ishlatamiz? Sensorning ikkala xususiyatidan ham foydalanish uchun. Agar siz gyro ma'lumotlarining uzluksiz o'sishiga qarasangiz, bu drift deb ataladi va akselerometr ma'lumotlari qisqa vaqt ichida tez o'zgaradi va ikkala signalni qanday birlashtirish mumkin? Biz qo'shimcha filtr deb nomlangan texnikadan foydalanamiz. Men buning aniq nazariyasini bilmayman, lekin u yaxshi ishlaydi. Internetda ba'zi ma'lumotlar bor, agar qo'shimcha ma'lumot kerak bo'lsa, uni google -ga kiriting. Bu havola juda ko'p ma'lumotlarga ega va foydali bo'lishi mumkin.filtered_angle = HPF*(filtered_angle + w*dt) + LPF*(angle_accel); bu erda HPF + LPF = 1 HPF va LPF qiymatlarini filter.pdf faylidagi havolada topish mumkin. Sizga "DIY Segway" dan rahmat. Faqat sinov maqsadida biz bu qiymatlarni shunday o'rnatamiz: HPF = 0.98 va LPF = 0.02.

4 -qadam: Kod:

Kod - bu men boshqa loyihada ishlatgan koddan moslashtirish. Ehtimol, ishlatilmagan ba'zi o'zgaruvchilar bor, men kutubxonadan https://todbot.com/blog/ saytidagi nunchuck ma'lumotlarini o'qish uchun foydalanardim. Rahmat, Tod E. Kurt. Kodga sharhlar portugal tilida, bo'sh vaqtim bo'lgach, uni tarjima qilaman. Kod ketma -ket chiziq orqali shunday naqshli ba'zi raqamlarni chiqaradi: dt: w: teta: pitch: filter_teta $ time: angular_velocity: gyro_angle: accel_angle: filtered_angle $ Shunday qilib, siz bu qiymatlarni ketma -ket terminalda saqlashingiz va grafik chizishingiz yoki boshqa narsalar uchun burchakdan foydalanishingiz mumkin. ziplangan Faqat oching, oching va uni arduino -ga yuklang.

5 -qadam: Sinov va xulosa

Sinov va xulosa
Sinov va xulosa
Sinov va xulosa
Sinov va xulosa

Tizimni sinab ko'rish uchun men ma'lumotlarni Termit deb nomlangan dastur yordamida saqladim, keyin bu ma'lumotlarni excel -ga import qilib, filtrimni qanchalik yaxshi ekanligini aniqlash uchun grafikni tuzing. Natijalar ajoyib. Albatta, siz signalni motorni yoki boshqa narsalarni haydash uchun ishlatishingiz mumkin. Har qanday izoh, shubhasiz, har qanday ma'lumot yo'qolsa, menga ayting va men uni tuzataman. Agar sizga bu yoqsa, baho bering. Barchangizga rahmat.

Tavsiya: