Arduinoga Akselerometrni Qanday Ulash Mumkin

Mundarija:

Arduinoga Akselerometrni Qanday Ulash Mumkin
Arduinoga Akselerometrni Qanday Ulash Mumkin

Video: Arduinoga Akselerometrni Qanday Ulash Mumkin

Video: Arduinoga Akselerometrni Qanday Ulash Mumkin
Video: Гироскоп-Акселерометр MPU-6050. Первое знакомство 2024, Noyabr
Anonim

Bu safar biz ADXL335 analog triaksial akselerometrni Arduino-ga ulash bilan shug'ullanamiz.

Analog akselerometr ADXL335
Analog akselerometr ADXL335

Kerakli

  • - Arduino;
  • - akselerometr ADXL335;
  • - Arduino IDE rivojlanish muhiti bo'lgan shaxsiy kompyuter.

Ko'rsatmalar

1-qadam

Tezlashtirish vektorini aniqlash uchun akselerometrlardan foydalaniladi. ADXL335 akselerometri uchta o'qga ega va shu tufayli u uch o'lchovli kosmosdagi tezlanish vektorini aniqlay oladi. Og'irlik kuchi ham vektor ekanligi sababli akselerometr Yerning markaziga nisbatan uch o'lchovli fazoda o'z yo'nalishini aniqlay oladi.

Rasmda ADXL335 akselerometri uchun pasportdan (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) rasmlar ko'rsatilgan. Bu erda akselerometr sezgirligining qurilma tanasining kosmosdagi geometrik joylashishiga nisbatan koordinatali o'qlari, shuningdek uning fazoda yo'nalishiga qarab 3 akselerometr kanalidan kuchlanish qiymatlari jadvali ko'rsatilgan. Jadvaldagi ma'lumotlar dam olish holatidagi sensor uchun berilgan.

Keling, akselerometr nimani ko'rsatayotganini batafsil ko'rib chiqaylik. Sensor gorizontal ravishda, masalan, stol ustiga yotqizilsin. U holda tezlanish vektorining proyeksiyasi Z o'qi bo'ylab 1g ga teng bo'ladi yoki Zout = 1g. Qolgan ikkita o'qning nollari bo'ladi: Xout = 0 va Yout = 0. Sensor "orqasiga" o'girilganda, u tortishish vektoriga nisbatan teskari yo'nalishda yo'naltiriladi, ya'ni. Zout = -1g. Xuddi shunday, o'lchovlar uchta o'qda ham olinadi. Akselerometrni kosmosda kerakli tarzda joylashtirish mumkinligi aniq, shuning uchun biz uchta kanaldan noldan tashqari ko'rsatkichlarni olamiz.

Agar zond vertikal Z o'qi bo'ylab kuchli silkitilsa, Zout qiymati "1g" dan katta bo'ladi. O'lchanadigan maksimal tezlanish har qanday yo'nalishdagi o'qlarning har birida "3g" dir (ya'ni ikkalasi ham "ortiqcha" va "minus" bilan).

Akselerometrning sezgirlik o'qlari va chiqish qiymatlari jadvali
Akselerometrning sezgirlik o'qlari va chiqish qiymatlari jadvali

2-qadam

O'ylaymanki, biz akselerometrning ishlash printsipini aniqladik. Endi ulanish sxemasini ko'rib chiqamiz.

ADXL335 analog akselerometr mikrosxemasi juda kichkina va BGA paketida joylashgan bo'lib, uni uyda taxtaga o'rnatish qiyin. Shuning uchun men ADXL335 akselerometri bilan tayyor GY-61 modulidan foydalanaman. Xitoy onlayn-do'konlarida bunday modullar deyarli bir tiyinga teng.

Akselerometrni quvvatlantirish uchun +3, 3 V kuchlanishni modulning VCC pimiga etkazib berish kerak. Datchik o'lchash kanallari Arduino analog pimlariga ulangan, masalan, "A0", "A1" va " A2 ". Bu butun elektron:)

ADXL335 akselerometrining Ardunoga ulanish sxemasi
ADXL335 akselerometrining Ardunoga ulanish sxemasi

3-qadam

Keling, ushbu eskizni Arduino xotirasiga yuklaymiz. Biz uchta kanaldagi analog kirish ma'lumotlarini o'qiymiz, ularni voltajga aylantiramiz va ketma-ket portga chiqaramiz.

Arduino 10-bitli ADC-ga ega va maksimal pin kuchlanishi 5 voltni tashkil qiladi. O'lchangan kuchlanishlar faqat 2 qiymatni olishi mumkin bo'lgan bitlar bilan kodlangan - 0 yoki 1. Bu shuni anglatadiki, butun o'lchov diapazoni (1 + 1) 10-darajaga bo'linadi, ya'ni. 1024 teng segmentda.

Ko'rsatkichlarni voltsga aylantirish uchun siz analog kirishda o'lchangan har bir qiymatni 1024 ga (segmentlarga) bo'lishingiz va keyin 5 ga (volts) ko'paytirishingiz kerak.

Keling, akselometrdan nimani kelib chiqishini Z o'qi misolida ko'rib chiqamiz (oxirgi ustun). Sensor gorizontal ravishda joylashganda va yuqoriga qaraganida, raqamlar keladi (2.03 +/- 0.01). Demak, bu Z o'qi bo'ylab "+ 1g" tezlanishiga va 0 daraja burchakka to'g'ri kelishi kerak. Sensorni aylantiring. Raqamlar keladi (1, 69 +/- 0, 01), ular "-1g" ga va 180 daraja burchakka to'g'ri kelishi kerak.

Akselerometr o'qish eskizi
Akselerometr o'qish eskizi

4-qadam

Keling, akselerometrdan 90 va 270 daraja burchakdagi qiymatlarni olib, ularni jadvalga kiritamiz. Jadvalda akselerometrning burilish burchaklari ("A" ustun) va mos keladigan Zout qiymatlari voltsda ko'rsatilgan ("B" ustun).

Aniqlik uchun Zout chiqishidagi burilish burchagiga nisbatan kuchlanishlar chizig'i ko'rsatilgan. Moviy maydon - bu dam olish oralig'i (1 g tezlanishda). Grafadagi pushti quti chekka, shuning uchun biz tezlashtirishni + 3g gacha va -3g gacha o'lchashimiz mumkin.

90 daraja burilishda Z o'qi nol tezlanishga ega. O'sha. 1,67 voltsli qiymat - bu Z o'qi uchun shartli nol Zo, shunda quyidagi tezlanishni topishingiz mumkin:

g = Zout - Zo / Sensorlik_z, bu erda Zout - millivoltlarda o'lchangan qiymat, Zo - millivoltlarda nol tezlashuvdagi qiymat, Sensorlik_z - sensori Z o'qi bo'ylab sezgirligi. akselerometrni kalibrlang va sezgirlik qiymatini o'zingiz uchun maxsus hisoblang formuladan foydalangan holda sensor:

sezgirlik_z = [Z (0 daraja) - Z (90 daraja)] * 1000. Bunday holda akselerometrning Z o'qi bo'ylab sezgirligi = (2, 03 - 1, 68) * 1000 = 350 mV. Xuddi shunday, sezgirlikni X va Y o'qlari uchun hisoblash kerak bo'ladi.

Jadvalning "C" ustunida 350 ta sezgirlikda beshta burchak uchun hisoblangan tezlanish ko'rsatilgan. Ko'rib turganingizdek, ular amalda 1-rasmda ko'rsatilganlarga to'g'ri keladi.

Akselerometrning aylanish burchaklarining ko'rsatkichlarga mosligi
Akselerometrning aylanish burchaklarining ko'rsatkichlarga mosligi

5-qadam

Asosiy geometriya kursini eslab, akselerometrning burilish burchaklarini hisoblash formulasini olamiz:

angle_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].

Qadriyatlar radianlarda. Ularni darajaga o'tkazish uchun Pi ga bo'ling va 180 ga ko'paytiring.

Natijada, akselerometrning barcha o'qlar bo'ylab tezlashishi va burilish burchaklarini hisoblaydigan to'liq eskiz rasmda ko'rsatilgan. Izohlarda dastur kodi uchun tushuntirishlar mavjud.

"Serial.print ()" portiga chiqarishda "\ t" belgisi ustunlar juft bo'lishi va qiymatlar bir-birining ostiga joylashishi uchun yorliq belgisini bildiradi. "+" satrlarni birlashtirish (birlashtirish) degan ma'noni anglatadi. Bundan tashqari, "String ()" operatori aniq qiymatni qatorga aylantirish kerakligini kompilyatorga aniq aytadi. Dumaloq () operator burchakni 1 darajaga qadar yaxlitlaydi.

Akselerometrning tezlanishi va burchaklarini hisoblaydigan eskiz
Akselerometrning tezlanishi va burchaklarini hisoblaydigan eskiz

6-qadam

Shunday qilib, biz Arduino yordamida ADXL335 analog akselerometridan ma'lumotlarni olishni va qayta ishlashni o'rgandik. Endi biz akselerometrni dizaynimizda qo'llashimiz mumkin.

Tavsiya: