Operácie

Krokomer s akcelerometrom MMA8491Q: Rozdiel medzi revíziami

Zo stránky SensorWiki

StudentDVPS (diskusia | príspevky)
StudentDVPS (diskusia | príspevky)
Riadok 119: Riadok 119:


==== Popis registrov ====
==== Popis registrov ====
Pri práci s registrom budeme priamo vyčítavať hodnoty z jeho registrov, ktoré má uložené v pamäti od adresy 0x00. Senzor MMA8491Q obsahuje jeden stavový a šesť dátových registrov. Ich popis je uvedený nižšie.
'''Mapa registrov'''
'''Mapa registrov'''
[[Súbor:Registre.png|center]]
[[Súbor:Registre.png|center]]
* 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'''
'''Stavový register'''
Riadok 136: Riadok 140:
|----
|----
|ZDR
|ZDR
|ZDR je nastavený kedykoľvek je generovaná nová vzorka pre os Z. ZDR je vymazaný keď je prečítaný registr OUT_Z_MSB.
|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
0: Nie sú pripravené nové dáta v osi Z
1: Nové dáta v os Z sú pripravené
1: Nové dáta v osi Z sú pripravené
|----
|----
|YDR
|YDR
|YDR je nastavený kedykoľvek je generovaná nová vzorka pre os Y. YDR je vymazaný keď je prečítaný registr OUT_Y_MSB.
|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
0: Nie sú pripravené nové dáta v osi Y
1: Nové dáta v os Y sú pripravené
1: Nové dáta v osi Y sú pripravené
|----
|----
|XDR
|XDR
|XDR je nastavený kedykoľvek je generovaná nová vzorka pre os X. XDR je vymazaný keď je prečítaný registr OUT_X_MSB.
|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
0: Nie sú pripravené nové dáta v osi X
1: Nové dáta v os X sú pripravené
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,  
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,  

Verzia z 21:07, 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:

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

Pri práci s registrom budeme priamo vyčítavať hodnoty z jeho registrov, ktoré má uložené v pamäti od adresy 0x00. Senzor MMA8491Q obsahuje jeden stavový a šesť dátových registrov. Ich popis je uvedený nižšie.

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.

Schéma zapojenia snímača

Súbor:Example.jpg

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

program.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.