Ezúttal az ADXL335 analóg háromtengelyű gyorsulásmérő és az Arduino összekapcsolásával foglalkozunk.
Szükséges
- - Arduino;
- - ADXL335 gyorsulásmérő;
- - személyi számítógép Arduino IDE fejlesztői környezettel.
Utasítás
1. lépés
A gyorsulásmérőket a gyorsulási vektor meghatározására használják. Az ADXL335 gyorsulásmérőnek három tengelye van, és ennek köszönhetően meg tudja határozni a gyorsulási vektort háromdimenziós térben. Annak a ténynek köszönhetően, hogy a gravitációs erő is vektor, a gyorsulásmérő meghatározhatja saját orientációját a háromdimenziós térben a Föld közepéhez képest.
Az ábrán az ADXL335 gyorsulásmérő útlevelének képei láthatók (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf). Itt láthatók a gyorsulásmérő érzékenységének koordinátatengelyei az eszköz testének geometriai elhelyezéséhez viszonyítva, valamint egy táblázat a 3 gyorsulásmérő csatornájának feszültségértékeiről, az űrben való elhelyezkedésétől függően. A táblázat adatai egy nyugalmi szenzorra vonatkoznak.
Vizsgáljuk meg közelebbről, mit mutat nekünk a gyorsulásmérő. Hagyja, hogy az érzékelő vízszintesen feküdjön, például az asztalon. Ekkor a gyorsulási vektor vetülete 1 g lesz a Z tengely mentén, vagy Zout = 1g. A másik két tengelynek nullái lesznek: Xout = 0 és Yout = 0. Amikor az érzékelőt "a hátára" fordítjuk, akkor a gravitációs vektorral ellentétes irányba, azaz. Zout = -1g. Hasonlóképpen, a méréseket mindhárom tengelyen elvégzik. Nyilvánvaló, hogy a gyorsulásmérő tetszés szerint elhelyezhető az űrben, ezért mindhárom csatornáról nullától eltérő leolvasást veszünk.
Ha a szondát erősen megrázza a függőleges Z tengely, a Zout értéke nagyobb lesz, mint "1g". A maximálisan mérhető gyorsulás mindkét tengelyben bármely irányban "3g" (azaz "plusz" és "mínusz" egyaránt).
2. lépés
Azt hiszem, kitaláltuk a gyorsulásmérő működésének elvét. Most nézzük meg a csatlakozási rajzot.
Az ADXL335 analóg gyorsulásmérő chip meglehetősen kicsi, és egy BGA csomagban található, és otthon nehéz táblára szerelni. Ezért egy kész GY-61 modult fogok használni, ADXL335 gyorsulásmérővel. Az ilyen modulok a kínai online áruházakban csaknem egy fillérbe kerülnek.
A gyorsulásmérő táplálásához +3, 3 V feszültséget kell táplálni a modul VCC tűjéhez. Az érzékelő mérőcsatornái az Arduino analóg csapjaihoz vannak csatlakoztatva, például "A0", "A1" és " A2 ". Ez az egész áramkör:)
3. lépés
Töltsük be ezt a vázlatot az Arduino memóriájába. Három csatornán leolvassuk az analóg bemenetek olvasmányait, átalakítjuk feszültségre és kimenjük a soros portra.
Az Arduino 10 bites ADC-vel rendelkezik, és a megengedett legnagyobb tűfeszültség 5 volt. A mért feszültségeket olyan bitek kódolják, amelyek csak 2 értéket vehetnek fel - 0 vagy 1. Ez azt jelenti, hogy a teljes mérési tartomány el lesz osztva (1 + 1) -nel a 10. teljesítményig, azaz 1024 egyenlő szakaszon.
Ahhoz, hogy a leolvasott értékeket volttá konvertálja, el kell osztania az analóg bemeneten mért értékeket 1024-vel (szegmensek), majd megszorozni 5-vel (volt).
Nézzük meg, mi is származik a gyorsulásmérőből, példaként a Z tengelyt használva (az utolsó oszlop). Amikor az érzékelő vízszintesen van elhelyezve és felfelé néz, a számok jönnek (2,03 +/- 0,01). Tehát ennek meg kell felelnie a "+ 1g" gyorsulásnak a Z tengely mentén és 0 fokos szögnek. Fordítsa meg az érzékelőt. Megérkeznek a számok (1, 69 +/- 0, 01), amelyeknek "-1g" -nek és 180 fokos szögnek kell megfelelniük.
4. lépés
Vegyük az értékeket a gyorsulásmérőből 90 és 270 fokos szögben, és írjuk be őket a táblázatba. A táblázat mutatja a gyorsulásmérő forgásszögeit ("A" oszlop) és a megfelelő Zout értékeket voltban ("B" oszlop).
Az érthetőség kedvéért a Zout kimeneten a feszültség diagramját mutatjuk be a forgásszöggel szemben. A kék mező a nyugalmi tartomány (1g gyorsulásnál). A grafikon rózsaszínű mezője margó, így + 3g-ig és -3g-ig mérhetjük a gyorsulást.
90 fokos forgatásnál a Z tengely gyorsulása nulla. Azok. 1,67 volt érték egy feltételes nulla Zo a Z tengelyhez. Ezután megtalálhatja a következő gyorsulást:
g = Zout - Zo / érzékenység_z, itt a Zout a mért érték millivoltban, Zo a nulla gyorsulás értéke millivoltban, az érzékenység_z az érzékelő érzékenysége a Z tengely mentén. kalibrálja a gyorsulásmérőt és számítsa ki az érzékenységi értéket érzékelő a képlet segítségével:
érzékenység_z = [Z (0 fok) - Z (90 fok)] * 1000. Ebben az esetben a gyorsulásmérő érzékenysége a Z tengely mentén = (2, 03 - 1, 68) * 1000 = 350 mV. Hasonlóképpen ki kell számolni az érzékenységet az X és Y tengelyekre.
A táblázat "C" oszlopa az öt szögre számított gyorsulást mutatja 350 érzékenység mellett. Mint látható, gyakorlatilag egybeesnek az 1. ábrán bemutatottakkal.
5. lépés
Az alapvető geometriai tanfolyamra emlékezve megkapjuk a képletet a gyorsulásmérő forgásszögeinek kiszámításához:
szög_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Az értékek radiánban vannak megadva. Ahhoz, hogy fokra konvertáljuk, osszuk el Pi-vel és szorozzuk meg 180-mal.
Ennek eredményeként az ábra egy teljes vázlatot mutat, amely kiszámítja a gyorsulásmérő gyorsulási és forgási szögeit az összes tengely mentén. A megjegyzések magyarázatot adnak a programkódra.
Amikor a "Serial.print ()" portra lép, a "\ t" karakter egy tabulátor karaktert jelöl, így az oszlopok párosak, az értékek pedig egymás alatt helyezkednek el. A "+" a húrok összefűzését (összefűzését) jelenti. Ezenkívül a "String ()" operátor kifejezetten megmondja a fordítónak, hogy a numerikus értéket stringekké kell konvertálni. A kör () operátor a sarkot 1 fokos pontossággal kerekíti.
6. lépés
Tehát megtanultuk, hogyan kell adatokat venni és feldolgozni az ADXL335 analóg gyorsulásmérőből az Arduino segítségével. Most felhasználhatjuk a gyorsulásmérőt a terveinkhez.