Operácie

Elektronický kompas HMC5883L: Rozdiel medzi revíziami

Z SensorWiki

(Analýza)
(Analýza)
Riadok 55: Riadok 55:
 
'''I2C zbernica'''
 
'''I2C zbernica'''
  
Senzor HMC5883L využíva na komunikáciu zbernicu I2C, na ktorú sa pripojí ako slave zariadenie. Podporuje štandardné (100kHz) aj rýchle módy (400kHz).  
+
Senzor HMC5883L využíva na komunikáciu zbernicu I2C, na ktorú sa pripojí ako slave zariadenie pod master zariadením, ako je napríklad mikrokontroler. Podporuje štandardné (100kHz) aj rýchle módy (400kHz).  
  
 
Na pripojenie senzora k doske sme nepotrebovali externé pull-up rezistory vzhľadom na to, že už sú integrované v samotnom senzore (4k7 na SDA a 2k2 na SCL linke).
 
Na pripojenie senzora k doske sme nepotrebovali externé pull-up rezistory vzhľadom na to, že už sú integrované v samotnom senzore (4k7 na SDA a 2k2 na SCL linke).

Verzia zo dňa a času 11:02, 24. máj 2016

Autori: Tomáš Kováč, Vladimír Šimčák
Študijný odbor: Aplikovaná mechatronika a elektromobilita 1. Ing. (2016)

Zadanie

Implementujte HMC5883L elektronický kompas, vytvorte program a vizualizáciu pre jeho používanie.


Parallax HMC5883.jpg
  • Nájdite si k senzorom datasheet
  • Nájdite si schémy zapojenia dosky
  • Na základe predošlých vedomostí navrhnite spôsob pripojenia k riadiacej jednotke
  • Napíšte základný demonštračný program využívajúci vaše funkcie
  • Vymyslite a demonštrujte vhodnú aplikáciu
  • Dokumentáciu odovzdajte prostredníctvom tejto wiki stránky.


link title

Médiá:MojZdrojak.c


Literatúra:

  • Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.

Analýza

Treba popísať ako funguje samotný senzor, ako sa pripojí k mikropočítaču a čo vlastne meria. Vymyslieť vzorovú aplikáciu s vizualizáciou na PC. fotky zapojenia, datasheet, screenshot z datasheetu, co meria - mag pole (str. 9 datasheet)

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:

HMC5883L modul je magnetorezistívny obvod pozostávajúci z troch HMC118X senzorov pre tri osi. Integrovaný je 12 bitový AD prevodník pre presnosť kompasu 1 až 2 stupne. Senzor disponuje technoológiou AMR ktorá zaisťuje osovú citlivosť a linearitu. Princíp činnosti modulu spočíva v konverzii Zemského magnetického poľa na diferenciál napätia na troch osiach. Výstup tohto napätia sa dá nasledovne spracovať pre rôzne účely. Senzor sa využíva napríklad pre nízkonákladovú navigáciu alebo magnetometriu.


Špecifikácia senzora:

  • Napájanie: 2.7 až 6.5 VDC
  • Komunikačné prostredie: I2C (do 400kHz)
  • Operačné teploty: -30 až +85 °C
  • Rozmery: 1.9 x 1.7 cm


I2C zbernica

Senzor HMC5883L využíva na komunikáciu zbernicu I2C, na ktorú sa pripojí ako slave zariadenie pod master zariadením, ako je napríklad mikrokontroler. Podporuje štandardné (100kHz) aj rýchle módy (400kHz).

Na pripojenie senzora k doske sme nepotrebovali externé pull-up rezistory vzhľadom na to, že už sú integrované v samotnom senzore (4k7 na SDA a 2k2 na SCL linke).


  • popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)(i2c z wikipedie)
  • obrázok zapojenia vývodov použitej súčiastky(fotky, screeny z datasheetu)
  • odkaz na katalógový list
  • priebehy dôležitých signálov(datasheet?)
  • 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 Zapojenie.png

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.

MojObrazok.jpg

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!


Algoritmus pre mikropočítač bol vytvorený v programovom prostredí Arduino. Údaje namerané senzorom sú z registrov prostredníctvom zbernice I2C načítavané do mikropočítača a následne odosielané na rozhranie sériového portu, kde s nimi pracuje vizualizačná aplikácia vytvorená v programovacom jazyku C#, vo vývojovom prostredí Visual Studio 2015.

Algoritmus pre mikropočítač:

/* A nezabudnite zdroják hojne komentovať  */

int main(void) {
    
    printf("Tuto je ten kod!\n");  
    return(0);  
}

Vizualizácia riešenia sa skladá z niekoľkých častí, ich podstatné časti sa nachádzajú nižšie.

Vizualizačná aplikácia:

Kompas.jpg


Vývojový diagram pre funkcionalitu aplikácie:

Kompas diagram.jpg


Časť kódu pre zobrazenie všetkých dostupných portov v počítači kde beží aplikácia:

/* A nezabudnite zdroják hojne komentovať  */

int main(void) {
    
    printf("Nacitanie portov!\n");  
    return(0);  
}

Časť kódu pre parsovanie vstupu zo zvoleného COM portu:

/* A nezabudnite zdroják hojne komentovať  */

int main(void) {
    
    printf("Nacitanie portov!\n");  
    return(0);  
}

Výpočet uhla natočenia obrázku:

/* A nezabudnite zdroják hojne komentovať  */

int main(void) {
    
    printf("Nacitanie portov!\n");  
    return(0);  
}

Otočenie obrázku o príslušný uhol:

/* A nezabudnite zdroják hojne komentovať  */

int main(void) {
    
    printf("Nacitanie portov!\n");  
    return(0);  
}

Zvyšná časť programu sa nachádza v priložených súboroch.


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.

Vytvorená aplikácia pracuje ako elektronický kompas, ktorý ukazuje aktuálnu polohu natočenia senzoru. Namerané dáta sa zo senzoru pripojeného k mikropočítaču prostredníctvom zbernice I2C čítajú do programového prostredia vytvoreného v prostredí Arduino aktuálne nahratého do mikropočítača. Výsledné namerané dáta sú následne odosielané na príslušný sériový port vo forme súradníc (x,y,z). S nimi potom pracuje vizualizačná aplikácia, ktorá bola vytvorená v programovacom jazyku C#.

Natívne prostredie aplikácie umožňuje jednoduchý spôsob jej ovládania ako aj takmer okamžité zobrazenie výsledného natočenia senzoru. Po spustení aplikácie sa užívateľovi zobrazí možnosť výberu jedného z aktuálne dostupných sériových COM portov. Tu je nutné aby užívateľ aplikácie správne zvolil port, na ktorý mikropočítač odosiela namerané dáta. V prípade zvolenia jedného s príslušných portov a jeho úspešnom otvorení aplikácia začne okamžite z daného portu čítať dáta. V našom prípade je nevyhnutné aby na zvolený sériový port boli odosielané dáta v správnom tvare súradníc (x,y,z), ktoré zaručí program nahraný v mikropočítači. Načítané súradnice sú pri správnom načítaní zobrazené v príslušnom textovom poli. Aplikácia z nich následne vypočíta uhol natočenia senzora a aproximuje k nemu natočenie "kompasu" reprezentovaného obrázkom ružice kompasu. Červená šípka v aplikácii ukazuje aktuálne natočenie senzora. Teda napríklad ak šípka ukazujúca smer natočenia senzora a smer "W" (west - západ) ležia na jednej priamke prechádzajúcej stredom ružice znamená to, že senzor ja aktuálne natočený na príslušnú svetovú stranu - západ.

Ukážka funkcionality aplikácie:

Kompas animacia.jpg



Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.