Krokomer s akcelerometrom MMA8491Q
Zo stránky SensorWiki
Autori: | Michal Hlavatý, Michal Stromko | |
Študijný odbor: | Aplikovaná mechatronika a elektromobilita | 1. Ing. (2016) |
Zadanie
Pomocou akcelerometra, ktorý sa nachádza na doske Xtrinsic Sensors board vytvorte aplikáciu/program, ktorý bude realizovať funkciu jednoduchého krokomeru.
Xtrinsic Sensors board
Zoznam senzorov:
- MPL3115A2: High-precision Pressure Sensor (20 – 110 kPa)
- MAG3110: Digital 3-axis Magnetometer
- MMA8491Q 3-axis Low-g Accelerometer
Body zadania:
- K použitému senzoru nájdite datasheet a preštudujte jeho štruktúru, spôsob pripojenia, komunikácie, a čítania dát.
- Na základe predošlých vedomostí navrhnite spôsob pripojenia k vhodnej riadiacej jednotke
- Napíšte program v prostredí Arduino zabezpečujúci:
- Komunikáciu so snímačom
- Načítanie a spracovanie potrebných dát
- Realizácia funkcionality krokomeru
- V ľubovoľnom programovacom jazyku/prostredí vytvorte aplikáciu na vizualizáciu a demonštráciu predloženého riešenia
- Dokumentáciu odovzdajte prostredníctvom tejto wiki stránky.
Literatúra:
- Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
- Product page
- Datasheet
- Data Manipulation and the Basic Settings of Xtrinsic MMA8491Q Accelerometer
- Full-Featured Pedometer Design Realized with 3-Axis Digital Accelerometer
Analýza
Použitý senzor
Na realizáciu funkcie krokometra využijeme už vyššie spomínaný senzor Xtrinsic MMA8491Q 3-Axis Multifunction Digital Accelerometer. Je to nízko napäťový, 3-osí "low-g" akcelerometer uložený v 3 mm x 3 mm QFN púzdre. Zariadenie poskytuje dve konfigurácie. Prvou z nich je 45° senzor naklonenia a druhou akcelerometer s digitálnym výstupom cez I2C zbernicu. Pre nás je zaujímavá funkcia akcelerometra kedy senzor poskytuje 14-bit ± 8g dáta, ktoré môžu byť prečítané s 1 mg/LSB rozlíšením.
Vlastnosti
- Extrémne nízka spotreba 400 nA na Hz
- Ultra rýchly čas prenosu, ~700 μs
- Napájací rozsah od 1,95 do 3,6 V
- 3 mm x 3 mm, 0,65 mm stúpanie s vizuálnou inšpekciou spájkovacích spojov
- ± 8g rozsah
- 14-bit digitálny výstup, 1 mg/LSB rozlíšenie
- rýchlosť prenosu výstupných dát (ODR), v závislosti na implementácii od 1 Hz do 800 Hz
- I2C digitálne rozhranie
- výstup v troch osiach a 45° natočenie
Popis vývodov
C | Pin | Funkcia |
1 | Byp | Pripojenie výstupného kondenzátora interného regulátora |
2 | V_DD | Napájacie napätie |
3 | SDA | I2C dátová linka |
4 | EN | Povoľovací pin |
5 | SCL | I2C hodinová linka |
6 | Gnd | Zem |
7 | Gnd | Zem |
8 | Zout | Výstup detekcie naklonenia v osi Z |
9 | Yout | Výstup detekcie naklonenia v osi Y |
10 | Xout | Výstup detekcie naklonenia v osi X |
11 | NC | Nepripojené |
12 | NC | Nepripojené |
Popis registrov
Mapa registrov
Stavový register
Register 0x00 obsahuje real-time stavové informácie o vzorkách X, Y a Z dát. Bity (ZYXDR, ZDR, YDR, XDR) sa nastavia keď sú nové nasnímané dáta pripravené na čítanie.
Pole | Popis |
ZYXDR | ZYXDR signalizuje, že sú pripravené nové vzorky vo všetkých kanáloch. ZYXDR je vymazaný keď sú prečítané registre horných bitov vo všetkých kanáloch (OUT_X_MSB, OUT_Y_MSB, OUT_Z_MSB).
0: Nie je pripravený nový set dát 1: Nový set dát je pripravený |
ZDR | ZDR je nastavený kedykoľvek je generovaná nová vzorka pre os Z. ZDR je vymazaný keď je prečítaný registr OUT_Z_MSB.
0: Nie sú pripravené nové dáta v osi Z 1: Nové dáta v os Z sú pripravené |
YDR | YDR je nastavený kedykoľvek je generovaná nová vzorka pre os Y. YDR je vymazaný keď je prečítaný registr OUT_Y_MSB.
0: Nie sú pripravené nové dáta v osi Y 1: Nové dáta v os Y sú pripravené |
XDR | XDR je nastavený kedykoľvek je generovaná nová vzorka pre os X. XDR je vymazaný keď je prečítaný registr OUT_X_MSB.
0: Nie sú pripravené nové dáta v osi X 1: Nové dáta v os X sú pripravené |
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje, ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:
- popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
- obrázok zapojenia vývodov použitej súčiastky
- odkaz na katalógový list
- priebehy dôležitých signálov
- este jedna polozka
Popis riešenia
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru (nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.
Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo nahrať už aspoň 10 študentov.
Algoritmus a program
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili. Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu. Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
Vyberte podstatné časti zdrojového kódu, použite na to prostredie source:
/* A nezabudnite zdroják hojne komentovať */
int main(void) {
printf("Hello, World!\n");
return(0);
}
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
Zdrojový kód: serial.h a main.c
Overenie
Nezabudnite napísať čosi ako užívateľský návod. Z neho by malo byť jasné čo program robí, ako sa prejavuje a aké má užívateľské rozhranie (čo treba stlačiť, čo sa kde zobrazuje). Ak ste namerali nejaké signály, sem s nimi. Ak je výsledkom nejaký údaj na displeji, odfotografujte ho.
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.