. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Test akcelerometru Freescale MMA7260QT
13. května 2009 | Petr Gábrlík | Test akcelerometru Freescale MMA7260QT | Komentářů: 8  

Test akcelerometru Freescale MMA7260QT

Pokus s 3D akcelerometrem Freescale včetně zdrojových kódů jednoduchého obslužného programu.

Rozhodl jsem se zakoupit a otestovat v dnešní době čím dál více využívaný integrovaný akcelerometr. Jedná se o součástku, která je schopná měřit zrychlení a převádět jeho velikost na elektrický signál. Vše je realizováno na jednom čipu za pomocí MEMS technologie a zapouzdřeno v miniaturním SMD pouzdře. Právě díky tomu se dnes nachází v řadě mobilních telefonů a komunikátrů jako orientační senzor (měření statického zrychlení), nebo v zařízeních citlivých na otřesy jako například HDD MP3 přehrávače a podobě (měření dynamického zrychlení). Další uplatnění si nachází v robotice a automatizaci.


Obr. 1: Modul akcelerometru ACC7260 s čipem Freescale MMA7260QT

Akcelerometry nejsou zrovna obvyklé součástky a není jich na trhu mnoho, obzvláště v ČR. Mě zaujal MEMS akcelerometr od firmy Freescale MMA7260. Jedná se o tříosý akcelerometr v SMD pouzdře s měnitelnými rozsahy a analogovým výstupem. Jelikož nemám moc prostředků k pájení SMD součástek, obzvláště miniaturní QFN pouzdro s ploškami zespodu, ve kterém je zapouzdřený čip, vybral jsem si modul akcelerometru ACC7260, který obsahuje zmiňovaný akcelerometr a je vybaven konektorem pro jednodušší práci.

Popis akcelerometru MMA7260
Jak jsem už psal, hlavním rysem tohoto akcelerometru je schopnost měřit zrychlení ve všech třech osách (XYZ). Dokáže měřit statické i dynamické zrychlení, neboli statické zrychlení je všudypřítomné tíhové zrychlení (v klidu je ve vodorvné poloze naměřeno 1g v ose Z) a dynamické zrychlení je způsobeno změnou rychlosti pohybu. Výstupní signály všech tří os jsou analogové, proto je pro přesné měření nutné použít AD převodník. Výhodou tohoto akcelerometru je možnost přepínání rozsahů (citlivosti), které jsou čtyři; 1,5g (800mV/g), 2g (600mV/g), 4g (300mV/g), 6g (200mV/g). Dalšími vlastnostmi je nízká spotřeba 500uA, při aktivním Sleep Mode 3uA, napájecí napětí v rozsahu 2,2 – 3,6V.


Obr. 2: Zjednodušený princip snímání zrychlení (datasheet)

Snímání zrychlení je zjednodušeně realizováno pomocí měření kapacity vzduchových kondenzátorů, kde jedna elektroda je pohyblivá. Viz. obrázek výše. Opravdová struktura je ovšem mnohem složitější. Ta je na čipu realizována pomocí MEMS technologie (Micro-Electro-Mechanical Systems).

Citace Wikipedie:
Pod tímto pojmem se míní velmi sofistikované umístění elektronických, ale především mikro-mechanických prvků, na křemíkovou bázi pomocí moderních výrobních metod, které mají svůj původ ve výrobě integrovaných obvodů.

Modul akcelerometru ACC7260
Jak jsem psal v úvodu, zakoupil jsem zmiňovaný akcelerometr osazený v jednoduchém modulu ACC7260. Jeho výhoda je především zjednodušení práce při pokusech v ohledu manipulace a napájení. Modul má rozměry 23×28mm a obsahuje patici DIL8 0,6", proto se s ním dá pracovat jako s jakýmkoliv klasickým integrovaným obvodem. Na pinech patice jsou vyvedeny všechny potřebné vstupy a výstupy čipu. Celý modul je možné napájet napětím 3,6 – 16V, jelikož obsahuje stabilizátor napětí. Spotřeba modulu je uváděna 600uA. Na výstupu všech tří os je RC filtr, jak je doporučeno také v datasheetu čipu. Schéma modulu je na obrázku níže, fotky modulu jsou v úvodu článku.


Obr. 3: Schéma zapojení modulu akcelerometru ACC7260 (datasheet)

Test akcelerometru – statické zrychlení
Jedna z možností využití akcelerometru je měření náklonu, neboli měření statického (tíhového) zrychlení. Dnes se nachází v kdejakém mobilu či foťáku jako orientační senzor pro změnu orientace obrazu displeje, nebo pro otáčení fotografií. Takové měření si vystačí i s nějakým komparátorem. Úhel náklonu lze ale měřit přesně pomocí AD převodníku.

Proto jsem všechny tři výstupy akcelerometru připojil na AD převodníky ATmegy16 a zpracované data odesílám pomocí Bluetooth (UART) do počítače k vyhodnocení. Pro přehlednost jsem vytvořil jednoduchý program ve Visual C++. Zapojení vypadá následovně.


Obr. 4: Zjednodušené schéma zapojení testu akcelerometru MMA7260 (modulu ACC7260)

Výstup osy X a Z akcelerometru jsou přímo připojeny na AD převodníky ATmegy16. Výstup osy Y akcelerometru je připojen přes napěťový dělič, jelikož jeho napětí dosahuje vyšší hodnoty než 2,56V, což je zvolená vnitřní reference AD převodníku. Přenos děliče je zhruba 0,92, čímž se bezpečně dostávám pod hodnotu reference. Chybu výstupu způsobenou děličem zanedbávám. V následující tabulce jsou stěžejní hodnoty výstupu všech tří os pro měření statického zrychlení při rozsahu 1,5g.

  –1g 0g +1g
Ux [V] 0,83 1,65 2,46
Uy [V] 0,96 1,67 2,40
Uz [V] 0,79 1,59 2,39

Hodnoty v tabulce jsou pouze orientační, přesné doladění jsem provedl až v počítači. Hodnoty pro osu Y jsou měřeny až za zmiňovaným děličem.

AD převodník ATmegy16 je 10-bitový, data můžou nabývat hodnoty 0 – 1023 (při 0 – 2,56V). Z toho vyplývá, že naměřený vzorek každé osy zabírá 2 bajty, celkem teda po každém měření odesílám do počítače 6 bajtů. Posloupnost programu je tedy taková, že postupně změřím napětí na všech osách (X-Y-Z) a následně je ve stejném pořadí hned za sebou odešlu na seriovou linku UART. Poté následuje prodleva okolo 10ms a proces se opakuje.

Software pro zpracování dat
Když už odesílám do počítače přesná data z každé osy akcelerometru, je dobré to nějak graficky zpracovat, aby ty hodnoty byly vypovídající. Nejprve pro každou osu dva přijaté bajty dat spojím a získám dekadické číslo v rozmezí 0 – 1023. Toto číslo je přímo úměrné měřenému napětí, stačí ho vynásobit konstantou 1023/2,56 = 0,0025 a získáme hodnotu napětí.
Dále přijaté data přepočítám na hodnotu tíhového zrychlení g. Tato hodnota může být kladná i záporná, podle orientace senzoru. Od aktuálních přijatých dat odečtu hodntu odpovídající nulovému zrychlení (0g) a vydělím konstantou odpovídající počtu dílků mezi úrovněmi 0g a +1g (popř. –1g). Tím zajistím, že při působení tíhovného zrychlení se hodnota bude pohybovat vždy na intervalu –1g – +1g.
Dalším zajímavým údajem je úhel náklonu dané osy vůči zeskému povrchu. Tento údaj není lineárně úměrný tíhovému zrychlení. Hodnotu 0g považuji za vodorovnou polohu osy (rovnoběžná se zemským porchem), neboli náklon 0°. Hodnotu 1g (-1g) považuji za polohu osy kolmou k zemskému povrchu, neboli úhel 90° (-90°). Ovšem hodnota 0,5g neodpovídá úhlu 45°, nýbrž úhlu 30°. Vše se dá jednoduše představit na jednotkové kružnici, kdy hodnota tíhového zrychlení je hodnotou sinu. Proto úhel náklonu osy získáme funkcí arcsin(g).
Program zpracovává náklon jednotlivých os také graficky, jak jde vidět z následujícího obrázku.


Obr. 5: Program pro zpracování a zobrazení dat z akcelerometru. Akcelerometr je vodorovně se zemí, osa Z je kolmá k zemi a celkové tíhové zrychlení působí pouze v jejím směru.

Pro kontrolu údajů o zrychlení počítá program ještě celkové zrychlení jako výslednici zrychlení v jednotlivých osách. To podle vztahu sqrt( X2 + Y2 + Z2 ). Hodnota je označená jako Total g-size a za působení pouze tíhového zrychlení by měla být rovna 1. Malé odchylky jsou způsobeny chybou měření, kalibrace, zaokrouhlování atd. Při pohybu akcelerometru je zanášeno do měření také dynamické zrychlení a hodnota je menší nebo větší než 1.


Obr. 6: Akcelerometr je nakloněn v ose Y o 19,9°, tím pádem se změnil náklon také osy Z. Tíhové zrychlení je rozloženo mezi tyto dvě osy a jeho výslednice je rovna 1 (0,99).


Obr. 7: V tomto případě je akcelerometr nakloněn v ose X i Y a tím pádem také v ose Z. Tíhové zrychlení se rozkládá mezi všechny tři osy a jeho výslednice je opět rovna 1 (0,99).

Pár poznámek na k programu:

  • Rozsah výpočtu a znázornění náklonu je pouze 180° (+-90° od vodorovné osy) a né 360°, což by odpovídalo realitě. Při překročení náklonu 90° se náklon „zrcadlí“.
  • Hodnoty náklonu blízkých 90° obsahují velkou chybu vycházející z průběhu funkce sinus. Např. hodnota 0,95g odpovídá úhlu 72° a hodnota 0,99g úhlu 82°.
  • Hodnoty z akcelerometru jsou snímány zhruba každých 10ms. Program 15 po sobě jdoucích hodnot zprůměruje a teprve s touto hodnotou dále pracuje. Jinak jsou data těžce čitelná pro jejich rychle měnící se hodnotu. Může to být způsobeno drobnými vibracemi, např. od PC na stole.
  • Software jsem psal ve Visual C++ ve Visual Studiu 2008
Stáhněte si prosím Flash Player pro přehrávání videí.

Závěr
Pomocí akcelerometru se mi podařilo poměrně přesně měřit náklon ve všech osách, neboli tíhové zrychlení na něj působící. Fyzika není moje silná stránka tak se omlouvám za případné nepřesnosti. Program pro ATmegu16 i vytvořený software pro počítač přikládám ke stažení. Je to moje vůbec první Windows aplikace vytvořená ve Visual Studiu, proto zdrojové kódy berte s rezervou.
Příště bych chtěl zkusit zpracování údájů dynamického zrychlení.

Autor: Petr Gábrlík

Odkazy & Download:
Oficiální stránky výrobce akcelerometru MMA7260
Snail Instruments - prodejce modulu akcelerometru ACC7260

3D akcelerometr MMA7260
Datasheet akcelerometru MMA7260
Datasheet modulu akcelerometru ACC260

Zdrojové soubory k programům







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (8):

Zobrazit starší 30 dnů (8)...



Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
XPort XE
Síťový převodník řady Xport, integrovaný do konektoru RJ45
Skladem od 850 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007