Arduinoya Bir Akselerometr Necə Bağlanır

Mündəricat:

Arduinoya Bir Akselerometr Necə Bağlanır
Arduinoya Bir Akselerometr Necə Bağlanır

Video: Arduinoya Bir Akselerometr Necə Bağlanır

Video: Arduinoya Bir Akselerometr Necə Bağlanır
Video: Акселерометр ADXL345 Вики учебник Arduino / ArduBlock 2024, Noyabr
Anonim

Bu dəfə ADXL335 analog üç eksenli akselerometrin Arduinoya qoşulması ilə məşğul olacağıq.

Analog Accelerometer ADXL335
Analog Accelerometer ADXL335

Zəruri

  • - Arduino;
  • - ADXL335 akselerometri;
  • - Arduino IDE inkişaf mühitinə sahib fərdi kompüter.

Təlimat

Addım 1

Sürət vektorunu təyin etmək üçün akselerometrlərdən istifadə olunur. ADXL335 akselerometrinin üç oxu var və bu sayədə üçölçülü fəzada sürət vektorunu təyin edə bilər. Cazibə qüvvəsinin də bir vektor olduğuna görə, akselerometr Yerin mərkəzinə nisbətən üç ölçülü fəzada öz istiqamətini təyin edə bilər.

Şəkildə ADXL335 akselerometri üçün pasportdan (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) şəkillər göstərilir. Burada akselerometrin həssaslığının cihaz gövdəsinin kosmosdakı həndəsi yerləşdirilməsi ilə əlaqəli koordinat oxları, eləcə də onun fəzadakı istiqamətindən asılı olaraq 3 akselerometr kanalından gərginlik dəyərləri cədvəli göstərilir. Cədvəldəki məlumatlar istirahətdə olan bir sensor üçün verilmişdir.

Gəlin akselerometrin bizə nə göstərdiyini daha ətraflı nəzərdən keçirək. Sensorun yatay şəkildə, məsələn, bir masanın üstündə yerləşməsinə icazə verin. Sonra sürətləndirmə vektorunun proyeksiyası Z oxu boyunca 1g-ə bərabər olacaq və ya Zout = 1g. Digər iki oxda sıfır olacaq: Xout = 0 və Yout = 0. Sensor "arxa tərəfə" çevrildikdə, cazibə vektoruna nisbətən əks istiqamətə yönəldiləcək, yəni. Çənə = -1g. Eynilə, üç oxda da ölçmələr aparılır. Aydındır ki, akselerometr kosmosda istədiyi kimi yerləşdirilə bilər, buna görə də hər üç kanaldan sıfırdan başqa oxu götürəcəyik.

Zond şaquli Z oxu boyunca güclü bir şəkildə silkələnərsə, Zout dəyəri "1g" dən çox olacaqdır. Maksimum ölçülə bilən sürət istənilən oxda hər oxda "3g" dir (yəni hər ikisi "artı" və "mənfi" ilə).

Akselerometr həssaslığı oxları və çıxış dəyərləri cədvəli
Akselerometr həssaslığı oxları və çıxış dəyərləri cədvəli

Addım 2

Hesab edirəm ki, akselerometrin işləmə prinsipini müəyyənləşdirdik. İndi əlaqə diaqramına baxaq.

ADXL335 analog akselerometr çipi olduqca kiçikdir və BGA paketində yerləşdirilir və evdə bir lövhəyə yerləşdirmək çətindir. Buna görə bir ADXL335 akselerometr ilə hazır GY-61 modulundan istifadə edəcəyəm. Çin onlayn mağazalarındakı bu cür modulların qiyməti bir qəpiyə başa gəlir.

Akselerometri gücləndirmək üçün modulun VCC piminə +3, 3 V gərginlik vermək lazımdır Sensor ölçmə kanalları Arduinonun analog sancaqlarına, məsələn "A0", "A1" və " A2 ". Bu, bütün dövrdür:)

ADXL335 akselerometrinin Arduno-ya qoşulma diaqramı
ADXL335 akselerometrinin Arduno-ya qoşulma diaqramı

Addım 3

Bu eskizi Arduino yaddaşına yükləyək. Üç kanaldakı analog girişlərdən oxumaları oxuyacağıq, gərginliyə çevirəcəyik və serial porta çıxardırıq.

Arduino 10 bitlik bir ADC-yə malikdir və icazə verilən maksimum pin gərginliyi 5 voltdur. Ölçülən gərginliklər yalnız 2 dəyər - 0 və ya 1 ala bilən bitlərlə kodlanır, yəni bütün ölçü aralığının (1 + 1) 10-cu gücə bölünməsi deməkdir. 1024 bərabər seqmentdə.

Oxunuşları voltlara çevirmək üçün analoq girişdə ölçülən hər bir dəyəri 1024 (seqment) bölmək və sonra 5 (volt) ilə çoxaltmaq lazımdır.

Nümunə olaraq Z oxunu istifadə edərək akselerometrdən nəyin gəldiyini görək (son sütun). Sensor yatay olaraq yerləşdikdə və yuxarıya baxdıqda rəqəmlər gəlir (2.03 +/- 0.01). Yəni bu, Z oxu boyunca sürətlənməyə "+ 1g" və 0 dərəcə bir açıya uyğun olmalıdır. Sensoru çevirin. Rəqəmlər (1, 69 +/- 0, 01) gəlir, bu rəqəm "-1g" və 180 dərəcə bir açıya uyğun olmalıdır.

Akselerometr oxu eskizi
Akselerometr oxu eskizi

Addım 4

Akselerometrdən 90 və 270 dərəcə bucaqlardakı dəyərləri götürüb cədvələ daxil edək. Cədvəldə akselerometrin fırlanma açıları (sütun "A") və volt ilə uyğun Zout dəyərləri göstərilir (sütun "B").

Aydınlıq üçün Zout çıxışındakı fırlanma bucağına qarşı bir gərginlik sahəsi göstərilir. Mavi sahə (1g sürətlənmə ilə) istirahət üçündür. Qrafadakı çəhrayı qutu bir haşiyədir ki, sürətlənməni + 3g-ə və -3g-ə qədər ölçə bilərik.

90 dərəcə fırlanma zamanı Z oxu sıfır sürətlənməyə malikdir. O. 1.67 volt dəyər Z oxu üçün şərti bir sıfır Zo olur, sonra belə bir sürətlənməni tapa bilərsiniz:

g = Zout - Zo / həssaslıq_z, burada Zout millivolt ilə ölçülən dəyərdir, Zo millivoltdakı sıfır sürətlənmə dəyəridir, həssaslıq_z sensörün Z oxu boyunca həssaslığıdır. akselerometri kalibr edin və həssaslıq dəyərini xüsusi olaraq sizin üçün düsturdan istifadə edərək sensor:

həssaslıq_z = [Z (0 dərəcə) - Z (90 dərəcə)] * 1000. Bu vəziyyətdə akselerometrin Z oxu boyunca həssaslığı = (2, 03 - 1, 68) * 1000 = 350 mV. Eynilə, X və Y oxları üçün həssaslığın hesablanması lazımdır.

Cədvəlin "C" sütununda 350 həssaslıqla beş bucaq üçün hesablanmış sürət göstərilir. Gördüyünüz kimi praktik olaraq Şəkil 1-də göstərilənlərlə üst-üstə düşür.

Akselerometrin fırlanma açılarının oxunuşlara uyğunluğu
Akselerometrin fırlanma açılarının oxunuşlara uyğunluğu

Addım 5

Əsas həndəsə kursunu xatırlayaraq, akselerometrin fırlanma açılarını hesablamaq üçün düsturu əldə edirik:

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

Dəyərlər radiandadır. Onları dərəcələrə çevirmək üçün Pi-yə bölün və 180-ə vurun.

Nəticədə, akselerometrin bütün oxlar boyunca sürətlənmə və fırlanma açılarını hesablayan tam bir eskiz şəkildə göstərilmişdir. Şərhlər proqram kodu üçün izahatlar verir.

"Serial.print ()" portuna çıxarkən, "\ t" işarəsi nişan xarakterini ifadə edir ki, sütunlar bərabər olsun və dəyərlər bir-birinin altında yerləşsin. "+" simlərin birləşməsi (birləşməsi) deməkdir. Üstəlik, "String ()" operatoru tərtibçiyə ədədi dəyərin sətrə çevrilməli olduğunu açıq şəkildə bildirir. Dəyirmi () operatoru küncü 1 dərəcəyə qədər yuvarlaqlaşdırır.

Akselerometrin sürətini və açılarını hesablayan bir eskiz
Akselerometrin sürətini və açılarını hesablayan bir eskiz

Addım 6

Beləliklə, Arduinodan istifadə edərək ADXL335 analog akselerometrdən məlumatların necə götürülməsini və işlənməsini öyrəndik. İndi dizaynlarımızda akselerometrdən istifadə edə bilərik.

Tövsiyə: