Kaip Prijungti Akselerometrą Prie „Arduino“

Turinys:

Kaip Prijungti Akselerometrą Prie „Arduino“
Kaip Prijungti Akselerometrą Prie „Arduino“

Video: Kaip Prijungti Akselerometrą Prie „Arduino“

Video: Kaip Prijungti Akselerometrą Prie „Arduino“
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Lapkritis
Anonim

Šį kartą spręsime analoginio triašio akselerometro ADXL335 prijungimą prie „Arduino“.

Analoginis akselerometras ADXL335
Analoginis akselerometras ADXL335

Būtinas

  • - Arduino;
  • - akselerometras ADXL335;
  • - asmeninis kompiuteris su „Arduino IDE“kūrimo aplinka.

Nurodymai

1 žingsnis

Akselerometrai naudojami pagreičio vektoriui nustatyti. ADXL335 akselerometras turi tris ašis ir dėl to jis gali nustatyti pagreičio vektorių trimatėje erdvėje. Dėl to, kad sunkio jėga taip pat yra vektorius, akselerometras gali nustatyti savo orientaciją trimatėje erdvėje, palyginti su Žemės centru.

Iliustracijoje parodytos nuotraukos iš paso (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf), skirtos ADXL335 akselerometrui. Čia parodytos akselerometro jautrumo koordinatės ašys, palyginti su prietaiso korpuso geometriniu išdėstymu erdvėje, taip pat įtampos verčių lentelė iš 3 akselerometro kanalų, atsižvelgiant į jo orientaciją erdvėje. Lentelėje pateikti duomenys apie jutiklį ramybės būsenoje.

Pažvelkime atidžiau į tai, ką mums rodo akselerometras. Leiskite jutikliui gulėti horizontaliai, pavyzdžiui, ant stalo. Tada pagreičio vektoriaus projekcija bus lygi 1g išilgai Z ašies, arba Zout = 1g. Kitose dviejose ašyse bus nuliai: Xout = 0 ir Yout = 0. Kai jutiklis bus pasuktas „ant nugaros“, jis bus nukreiptas priešinga kryptimi, palyginti su sunkio vektoriu, t. Zout = -1g. Panašiai matavimai atliekami visose trijose ašyse. Akivaizdu, kad akselerometrą erdvėje galima pastatyti taip, kaip norima, todėl iš visų trijų kanalų imsime kitus nei nulis rodmenis.

Jei zondas stipriai sukratomas išilgai vertikalios Z ašies, Zout vertė bus didesnė nei „1g“. Didžiausias išmatuojamas pagreitis yra „3g“kiekvienoje ašyje bet kuria kryptimi (ty tiek „plius“, tiek „minusas“).

Akselerometro jautrumo ašys ir išvesties verčių lentelė
Akselerometro jautrumo ašys ir išvesties verčių lentelė

2 žingsnis

Manau, kad mes supratome akselerometro veikimo principą. Dabar pažvelkime į ryšio schemą.

Analoginio akselerometro „ADXL335“lustas yra gana mažas ir įdėtas į BGA pakuotę, todėl namuose sunku jį pritvirtinti ant lentos. Todėl naudosiu paruoštą GY-61 modulį su ADXL335 akselerometru. Tokie moduliai Kinijos internetinėse parduotuvėse kainuoja beveik centą.

Norėdami įjungti akselerometrą, į modulio VCC kaištį reikia tiekti įtampą +3, 3 V. Jutiklio matavimo kanalai yra prijungti prie analoginių „Arduino“kaiščių, pavyzdžiui, "A0", "A1" ir " A2 ". Tai yra visa grandinė:)

ADXL335 akselerometro prijungimo schema prie Arduno
ADXL335 akselerometro prijungimo schema prie Arduno

3 žingsnis

Įkraukime šį eskizą į „Arduino“atmintį. Mes perskaitysime rodmenis iš trijų kanalų analoginių įėjimų, paversime juos įtampa ir išvesime į nuoseklųjį prievadą.

„Arduino“turi 10 bitų ADC, o didžiausia leistina kaiščių įtampa yra 5 voltai. Išmatuotos įtampos yra užkoduotos bitais, kurie gali užimti tik 2 reikšmes - 0 arba 1. Tai reiškia, kad visas matavimo diapazonas bus padalytas iš (1 + 1) iki 10-os galios, t. 1024 vienoduose segmentuose.

Norėdami perskaičiuoti rodmenis į voltus, kiekvieną vertę, išmatuotą analoginiame įėjime, turite padalyti iš 1024 (segmentai) ir padauginti iš 5 (voltai).

Pažiūrėkime, kas iš tikrųjų gaunama iš akselerometro, naudojant Z ašį kaip pavyzdį (paskutinis stulpelis). Kai jutiklis yra horizontaliai ir atrodo aukštyn, skaičiai ateina (2,03 +/- 0,01). Taigi tai turėtų atitikti pagreitį „+ 1g“išilgai Z ašies ir 0 laipsnių kampą. Apverskite jutiklį. Gaunami skaičiai (1, 69 +/- 0, 01), kurie turėtų atitikti "-1g" ir 180 laipsnių kampą.

Akselerometro skaitymo eskizas
Akselerometro skaitymo eskizas

4 žingsnis

Paimkime vertes iš akselerometro 90 ir 270 laipsnių kampu ir įrašykime jas į lentelę. Lentelėje pateikiami akselerometro sukimosi kampai (stulpelis "A") ir atitinkamos Zout vertės voltais (stulpelis "B").

Aiškumo dėlei parodytas įtampų diagrama Zout išėjime, palyginti su sukimosi kampu. Mėlynas laukas yra diapazonas ramybės būsenoje (esant 1g pagreičiui). Rausva grafiko dėžutė yra paraštė, kad galėtume išmatuoti pagreitį iki + 3g ir iki -3g.

Pasukus 90 laipsnių kampu, Z ašies pagreitis yra nulis. Tie. 1,67 voltų vertė yra sąlyginis nulis Zo Z ašiai. Tada galite rasti tokį pagreitį:

g = Zout - Zo / jautrumas_z, čia Zout yra išmatuota vertė milivoltais, Zo yra vertė, kai pagreitis nulinis, milivoltais, jautrumas_z - jutiklio jautrumas išilgai Z ašies. kalibruokite akselerometrą ir apskaičiuokite jautrumo vertę konkrečiai savo jutiklis pagal formulę:

jautrumas_z = [Z (0 laipsnių) - Z (90 laipsnių)] * 1000. Šiuo atveju akselerometro jautrumas išilgai Z ašies = (2, 03 - 1, 68) * 1000 = 350 mV. Panašiai reikės apskaičiuoti jautrumą X ir Y ašims.

Lentelės „C“stulpelyje rodomas pagreitis, apskaičiuotas penkiems kampams esant 350 jautrumui. Kaip matote, jie praktiškai sutampa su 1 paveiksle pavaizduotais.

Akselerometro sukimosi kampų atitikimas rodmenims
Akselerometro sukimosi kampų atitikimas rodmenims

5 žingsnis

Prisimindami pagrindinį geometrijos kursą, gauname pagreičio matuoklio sukimosi kampų apskaičiavimo formulę:

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

Vertės yra radianai. Norėdami konvertuoti juos į laipsnius, padalykite iš Pi ir padauginkite iš 180.

Dėl to iliustracijoje parodytas visas eskizo pagreičio ir sukimosi kampų visose ašyse skaičiavimo eskizas. Komentaruose pateikiami programos kodo paaiškinimai.

Išvedant į prievadą „Serial.print ()“, simbolis „\ t“žymi skirtuko simbolį, kad stulpeliai būtų lygūs, o vertės būtų išdėstytos viena po kitos. „+“reiškia styginių sujungimą (sujungimą). Be to, operatorius „String ()“kompiliatoriui aiškiai nurodo, kad skaitinė vertė turi būti paversta eilute. Apvalus () operatorius apvalina kampą iki 1 laipsnio tikslumo.

Eskizas, kuris apskaičiuoja akselerometro pagreitį ir kampus
Eskizas, kuris apskaičiuoja akselerometro pagreitį ir kampus

6 žingsnis

Taigi, mes sužinojome, kaip imti ir apdoroti duomenis iš analoginio akselerometro ADXL335 naudojant „Arduino“. Dabar mes galime naudoti akselerometrą savo projektuose.

Rekomenduojamas: