VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Akcelerometrová myš Semestrální projekt do předmětu Základy robotiky Vypracovali: Daniel Piši a Ladislav Podivín
Obsah 1 Zadání 2 2 Hardwarová část 2 2.1 MEMS Akcelerometr ADXL203..................................... 2 2.2 Napájecí část............................................... 2 2.2.1 Napájení jednočipového mikrokontroléru............................ 2 2.2.2 Napájení analogové části..................................... 3 2.3 Analogová část.............................................. 3 2.4 Řídicí mikrokontrolér........................................... 3 3 Softwarová část 3 3.1 Mikrokontrolér.............................................. 3 3.1.1 Získání dat z akcelerometru................................... 3 3.1.2 Zpracování naměřených dat................................... 3 3.1.3 Kalibrace............................................. 4 3.2 Komunikace přes USB.......................................... 4 3.3 Osobní počítač.............................................. 5 4 Měření 5 5 Závěr 6 6 Příloha 7 6.1 Schéma zapojení............................................. 7 6.2 Seznam součástek............................................. 8 6.3 Osazovací plánky............................................. 9 6.3.1 Strana součástek......................................... 9 6.3.2 Strana spojů........................................... 9 6.4 Výkresy plošného spoje v měřítku 1:1................................. 10 6.4.1 Strana součástek......................................... 10 6.4.2 Strana spojů........................................... 10 1
1 Zadání Navrhněte koncepci a realizujte prototyp snímače polohy využívajícího dvouosý akcelerometr. Na základě provedených měření zhodnot te použitelnost akcelerometrů pro určování polohy. 2 Hardwarová část 2.1 MEMS Akcelerometr ADXL203 Obrázek 1: Blokové schéma akcelerometru ADXL203 ADXL203 je monolitický integrovaný obvod obsahující kapacitní senzor zrychlení a obvody pro předzpracování signálu. Výstupem je analogový napět ový signál úměrný zrychlení. Integrovaný obvod ADXL203 je určen pro měření kladných i záporných zrychlení v rozsahu ±1,7 g. Senzor zrychlení je vyroben technologií mikroobrábění. Pro měření zrychlení se využívá setrvačnosti hmoty. Výchylka pohyblivé elektrody má za následek změnu její kapacity vůči elektrodám pevným. Na jednotlivé pevné elektrody jsou přivedeny obdélníkové signály vzájemně posunuté o 180. Rozvážení diferenciálního kondenzátoru vede k změně amplitudy budicího signálu. Změna je přímo úměrná zrychlení. K vyhodnocení velikosti a směru zrychlení je použit fázově citlivý demodulátor. Výstup demodulátoru je zesílen a vyveden z čipu přes rezistor 32 kω, který společně s externím kondenzátorem definuje šířku pásma výstupního signálu. Použitý kondenzátor kapacity 100 n odpovídá šířce pásma 50 Hz. Měřicí rozsah Citlivost Šum Max. šířka pásma Osy Napájecí napětí ±1,7 g (1000 ± 40) mv/g 110 µg/ Hz 2,5 khz X, Y 3 V až 6 V 2.2 Napájecí část Tabulka 1: Parametry akcelerometru ADXL203 Akcelerometrová myš je napájena stejnosměrným napětím 5 V poskytovaným USB řadičem osobního počítače. Toto napětí je svou velikostí a šumem nevhodné pro přímé napájení jednotlivých částí, proto je dále upraveno, což je rozebráno v následujících sekcích. 2.2.1 Napájení jednočipového mikrokontroléru Použitý jednočipový mikrokontrolér AT91SAM7S64 vyžaduje pro svou činnost napájecí napětí 3,3 V pro periferie a 1,8 V pro jádro. Napětí 3,3 V je stabilizováno z napětí 5 V poskytovaného USB. Použit je lineární nízkoúbytkový stabilizátor TPS77633 s rychlou odezvou. Napětí 1,8 V je stabilizováno z 3,3 V integrovaným lineárním stabilizátorem v samotném mikrokontroléru. 2
2.2.2 Napájení analogové části Pro co nejlepší funkci analogové části je zapotřebí zajistit stabilní napětí 5 V s nízkým šumem. To je z napětí USB získáváno ve dvou krocích. Nejprve je napětí 5 V z USB zvýšeno na 6,96 V DC/DC měničem s obvodem LM2731Y pracujícím na konstantním kmitočtu 650 khz. Výstupní napětí měniče je filtrováno LC článkem s mezním kmitočtem 1,87 khz a dále RC článkem s mezním kmitočtem 339 Hz. Poté je vyfiltrované napětí stabilizováno na požadovaných 5 V nízkoúbytkovým lineárním stabilizátorem s nízkým výstupním šumem LT1761. 2.3 Analogová část Do analogové části patří výše popsaný akcelerometr ADXL203 a dva A/D převodníky AD7790. Ty slouží k digitalizaci analogového výstupu akcelerometru. Obvod AD7790 obsahuje 16-ti bitový A/D převodník typu sigma-delta 1. řádu s jedním diferenciálním vstupem. Pro zvýšení vstupní impedance je možno na vstup volitelně připojit diferenciální sledovač. Dále obvod obsahuje interní oscilátor, digitální zesilovač s programovatelným zesílením a řadič sběrnice SPI. Výstupy akcelerometrů jsou připojeny na neinvertující vstupy A/D převodníků. Na invertující vstupy je připojeno napětí 2,5 V, které odpovídá hodnotě výstupu akcelerometru při nulovém zrychlení. Velikosti referenčního napětí U ref = 2 V a napětí invertujících vstupů 2,5 V jsou přímo úměrné velikosti napájecího napětí stejně jako výstupní napětí akcelerometru. To je výhodné pro potlačení vlivů způsobených kolísáním napájecího napětí. Oba převodníky jsou připojeny na SPI sběrnici, která slouží ke komunikaci s řídicím mikrokontrolérem. Na jednotlivých vodičích sběrnice jsou pro potlačení vysokofrekvenčního rušení zařazeny 22Ω rezistory. Řídicí mikrokontrolér sice obsahuje integrovaný A/D převodník, ten však není použit z důvodu nedostatečné přesnosti (nízké rozlišení, možné rušení z digitální části mikrokontroléru a také kvůli typu převodníku). Důvodem pro použití dvou samostatných A/D převodníků je fakt, že signál na vstupu běžných vícekanálových převodníků je multiplexován, což může vést ke ztrátě užitečných dat. Dalším důvodem je omezená rychlost převodníků sigma-delta 1. řádu, přičemž použití rychlejšího převodníku sigma-delta 2. řádu by bylo spojeno s nárůstem chyby měřeného napětí, resp. zrychlení. 2.4 Řídicí mikrokontrolér Úkolem mikrokontroléru je sběr naměřených dat z A/D převodníků, jejich zpracování a odesílání po USB sběrnici připojenému osobnímu počítači. Zvolen byl mikrokontrolér Atmel AT91SAM7S64, zejména kvůli integrovanému řadiči USB, nízké ceně a značné popularitě této rodiny mikrokontrolérů. Jedná se o mikrokontrolér s 32-bitovým RISC jádrem ARM7TDMI von Neumannovi architektury, 64 kb flash paměti programu, 16 kb RAM a množstvím periferií. Zápis do paměti flash programu lze provést přes rozhraní JTAG, které je spolu s ladicím UARTem vyvedeno na 10 pinový konektor. 3 Softwarová část 3.1 Mikrokontrolér Program pro řídicí mikrokontrolér je napsán v jazyce C s využitím vývojových nástrojů GNU Toolchain for ARM Processors. 3.1.1 Získání dat z akcelerometru Oba A/D převodníky pracují v režimu kontinuálního měření s frekvencí převodu 120 Hz. Ostatní nastavení převodníku jsou ponechána ve výchozím nastavení. V obsluze přerušení časovače s frekvencí 200 Hz je prováděno čtení Status registru postupně obou převodníků. V případě, že bit RDY Status registru indikuje připravenost nových dat, je provedeno jejich čtení a následné zpracování. 3.1.2 Zpracování naměřených dat Prvním krokem je převod digitalizovaného napětí na zrychlení v m.s 2 podle následujícího vztahu a = (U U 0 ) K g = (X X 0 ) 2U ref 2 n K g 3
kde a je výsledné zrychlení v m.s 2, U výstupní napětí akcelerometru ve V, U 0 výstupní napětí akcelerometru při nulovém zrychlení ve V, K citlivost akcelerometru ve V/g a g tíhové zrychlení v m.s 2, X výstupní hodnota A/D převodníku, X 0 výstupní hodnota A/D převodníku při nulovém zrychlení, U ref referenční napětí A/D převodníku, n rozlišení převodníku v bitech, V našem případě U ref = 2 V, n = 16, K = 1 V/g a g = 9,81. Druhým krokem je výpočet rychlosti numerickou integrací lichoběžníkovou metodou v k = v k 1 + a k + a k 1 2 T = v k 1 + a k + a k 1 2f kde v k je rychlost v m.s 1 v k-tém kroku, v k 1 je rychlost v m.s 1 v (k-1)-ním kroku, a zrychlení v m.s 2, T perioda vzorkování a f frekvence vzorkování. Pro účely grafického zobrazení je rychlost omezena na ±1 m.s 1. Posledním krokem je výpočet polohy numerickou integrací lichoběžníkovou metodou s k = s k 1 + v k + v k 1 2 T = s k 1 + v k + v k 1 2f Kvůli grafické zobrazení je poloha omezena na ±1 m. Stejný postup je aplikován pro oba kanály, resp. obě souřadné osy. 3.1.3 Kalibrace Ke kalibraci nulového zrychlení dochází vždy po startu programu nebo příjmu požadavku z PC. Kalibrace každého kanálu spočívá ve změření 128 vzorků a provedení jejich aritmetického průměru. Výsledná hodnota X 0 je prohlášena za hodnotu odpovídající nulovému zrychlení. V případě kalibrace 1 g pro obě souřadné osy je postup obdobný. Kalibrace je zahájena po naklonění myši do svislé polohy v příslušné ose a odeslání požadavku z PC. 3.2 Komunikace přes USB Komunikace je postavena na třídě Communication Device Class (CDC). Implementace komunikačního rozhraní vychází z AT91 USB frameworku poskytnutého společností Atmel. Ze strany hostitelského PC se k zařízení přistupuje jako k sériovému portu. K tomu je zapotřebí zavést odpovídající ovladač zařízení. To v prostředí GNU/Linux znamená zavést modul usbserial příkazem modprobe usbserial vendor=0x03eb product=0x6119. Data jsou přenášena pomocí paketů sestávajících z následujících položek hlavička verze typ příznaky index značka začátku paketu, vždy 0xCA verze datagramu, nyní 0x01 typ datagramu, 0x01 pro CommandStream, 0x02 pro IsochronousStream rezervováno pro pozdější využití číslo paketu, zatím nevyužito zdroj. port rozlišení odesilatele (program / komponenta programu) cíl. port typ cíle délka dat data CRC16 rozlišení příjemce (program / komponenta programu) identifikační číslo příjemce počet bytů datového segmentu vlastní data kontrolní součet celého datagramu V závislosti na typu dat lze volit mezi dvěma typy datových proudů (CommandStream a IsochronousStream). CommandStream je primárně určen pro přenos řídicích povelů. Každý datagram odpovídá jednomu povelu. V případě příjmu více povelů jsou tyto řazeny do fronty a prováděny v pořadí, v jakém byly přijaty. IsochronousStream zajišt uje přenos dat, přičemž jeho prioritou je zajištění aktuálnosti dat, ne bezchybné doručení všech dat. 4
3.3 Osobní počítač Program pro osobní počítač slouží k odesílání řídicích povelů a grafickému znázornění naměřených hodnot polohy, rychlosti a zrychlení. Obrázek 2: Snímek obrazovky programu pro PC Komunikace s myší se provádí prostřednictvím ovládacích prvků v panelu na levé straně okna. K zařízení se lze připojit stiskem tlačítka Připojit. Po připojení je zahájeno čtení a grafické znázornění měřených dat. Grafické znázornění je prováděno v hlavní části okna. Poloha je znázorněna červeným křížem, rychlost zelenou šipkou a zrychlení modrou šipkou. Jednotlivé ukazatele je možno deaktivovat ovládacími prvky pod hlavní částí okna. V případě potřeby lze spustit výše popsané kalibrace nebo se od zařízení odpojit. V levé dolní části okna jsou zobrazovány zprávy přijaté od myši a je zde možné příkazy odesílat. Program je vytvořen v jazyce C++ s využitím Qt toolkitu a odladěn pro operační systém GNU/Linux. 4 Měření Omezujícím faktorem použití akcelerometrů pro určování polohy je šum výstupního signálu, jehož negativní vliv na přesnost určení polohy je umocněn dvojnásobnou integrací měřeného zrychlení. Abychom se přesvědčili, zda je i přes tento vliv prototyp akcelerometrové myši použitelný pro určování polohy, bylo provedeno následující měření. Prototyp byl ponechán v klidu na pevné rovné podložce a zkalibrován. Byla měřena doba, za kterou absolutní hodnota chyby polohy narostla na 10 cm. Bylo provedeno celkem 10 měření, před zahájením každého z nich byla provedena opětovná kalibrace nulového zrychlení. Výsledky měření jsou v následující tabulce. 5
Číslo měření Doba t [ms] 1 16861 2 17558 3 16438 4 18975 5 10784 6 19621 7 16197 8 26670 9 19957 10 14552 Prům. doba t [ms] 17761 Tabulka 2: Naměřené hodnoty 5 Závěr V rámci tohoto projektu byl navržen a zkonstruován prototyp akcelerometrové myši určující svou polohu dvojí integrací měřeného zrychlení. Zrychlení je měřeno dvouosým MEMS akcelerometrem ADXL203 jehož výstupní napětí je digitalizováno dvojicí 16-ti bitových sigma-delta převodníků 1. řádu. Digitalizovaný signál je zpracován jednočipovým mikrokontrolérem AT91SAM7S64. Ten mimo to zajišt uje komunikaci s hostitelským osobním počítačem přes sběrnici USB, přes kterou je prototyp také napájen. Počítač naměřená data graficky znázorňuje a umožňuje odesílání řídicích povelů. Na základě výsledků výše popsaného měření je možno usoudit, že navržený prototyp akcelerometrové myši není použitelný pro určování polohy bez periodické kalibrace za pomoci údajů z dalšího snímače. Největší měrou se na špatné použitelnosti podílí šum na výstupu akcelerometru, který je dvakrát integrován. Druhým zdrojem chyb měření je omezení šířky pásma výstupu akcelerometru způsobující zkreslení měřeného signálu. Hodnota integrálu zkresleného signálu je jiná než signálu původního, což vede k chybnému vyhodnocení rychlosti mající za následek pohyb kurzoru i po zastavení myši. 6
6 Příloha 6.1 Schéma zapojení 7
6.2 Seznam součástek Označení Ks Hodnota Pouzdro Poznámka C1 1 1n SMD 0603 C12 1 33p SMD 0603 C13, C14 2 15p SMD 0603 C15, C17 2 100n SMD 0805 C16 1 100u SMD C Tantal 6,3 V C18, C22 2 22u SMD A Tantal 6,3 V C19-C21, C23, C24, C26-C32 12 100n SMD 0603 C2, C7 2 10n SMD 0603 C3, C9 2 8p2 SMD 0603 Ker. NPO C4 1 390p SMD 0603 C5 1 22u SMD B Tantal 10 V C6, C8, C10, C11, C25 5 10u SMD 0805 Ker. X5R D1 1 BAS85 SOD80C D2 1 LED SMD 1206 Červená D3 1 LED SMD 1206 Žlutá F1 1 100uA SMD 1210 Polyswitch IC1 1 LM2731Y SOT23-5 Lze nahradit LT3460 IC2 1 LT1761 SOT23-5 Lze nahradit LP2985 IC3 1 TPS77633 SOIC 8 IC4 1 AT91SAM7S64 LQFP64 IC5, IC7 2 AD7790 MSOP RM-10 IC6 1 ADXL203 LCC E-8 L1, L3 2 10u SMD 1210 Murata LQH3C10UH L2 1 330u SMD 1210 Murata LQH3N330UH Q1 1 18.432Mhz HC49S R1, R5 2 1k5 SMD 0603 R13 1 4k3 SMD 0603 1 % R14 1 22R SMD 0603 R15 1 3k3 SMD 0603 1 % R16, R17 2 270R SMD 0603 R18 1 1k SMD 0603 1 % R2 1 47R SMD 0805 R3 1 51k SMD 0603 R4 1 62k SMD 0603 R6 1 13k3 SMD 0603 R7, R8 2 27R SMD 0603 R9, R10, R11, R12 4 10k SMD 0603 RN1 1 22R 4R-N0603-ARC T1 1 SI2301 SOT23 X1 1 MA04-1W Pinová lišta 1-řadá, 90 X2 1 53047-10 Molex 1,25mm 10 pinů 8
6.3 Osazovací plánky 6.3.1 Strana součástek 6.3.2 Strana spojů 9
6.4 Výkresy plošného spoje v měřítku 1:1 6.4.1 Strana součástek 6.4.2 Strana spojů 10