Krokomer s akcelerometrom MMA8491Q: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 119: | Riadok 119: | ||
==== Popis registrov ==== | ==== Popis registrov ==== | ||
'''Mapa registrov''' | '''Mapa registrov''' |
Verzia z 21:08, 19. máj 2016
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
- Obsah registrov je zachovaný ak je EN pin po vzorkovaní nastavený na vysokú úroveň
- Obsah registrov je vynulovaný keď je EN pin nastavený na nízku úroveň.
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ý register OUT_Z_MSB.
0: Nie sú pripravené nové dáta v osi Z 1: Nové dáta v osi Z sú pripravené |
YDR | YDR je nastavený kedykoľvek je generovaná nová vzorka pre os Y. YDR je vymazaný keď je prečítaný register OUT_Y_MSB.
0: Nie sú pripravené nové dáta v osi Y 1: Nové dáta v osi Y sú pripravené |
XDR | XDR je nastavený kedykoľvek je generovaná nová vzorka pre os X. XDR je vymazaný keď je prečítaný register OUT_X_MSB.
0: Nie sú pripravené nové dáta v osi X 1: Nové dáta v osi X sú pripravené |
Dátové registre
Tieto registre obsahujú 14-bit výstupné dáta akcelerometra pre osi X, Y a Z vyjadrené v dvojkovom doplnku.
- OUT_X_MSB, OUT_X_LSB, OUT_Y_MSB, OUT_Y_LSB, OUT_Z_MSB, a OUT_Z_LSB sú uložené na adresnom rozsahu 0x01 – 0x06 pre automatickú inkrementáciu.
- LSB registre môžu byť prečítané len okamžite po prečítaní z korešpondujúceho MSB registra. "Random access" čítanie z LSB registrov nie je možné.
- Čítanie MSB a LSB registrov v sekvencii zabezpečuje, že obidva bajty patria rovnakej vzorke, dokonca aj vtedy ak medzi čítaním z MSB a LSB prídu nové dáta.
- Dátové registre by mali byť čítané len po tom ako stavový register potvrdil prítomnosť nových dát vo všetkých osiach.
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.