Zhodnotenie výsledkov projektu detekcia pohybu
1. | Opis použitých technológií |
2. | Analýza požiadaviek pre detekciu pohybu |
3. | Realizácia projektu detekcie pohybu |
4. | Zhodnotenie výsledkov projektu detekcia pohybu
|
Obsah
Obsahom tejto kapitoly je porovnanie spotreby zariadenia pri rôznych konfiguráciách mikrokonotroléra a SPI rozhrania. Ďalej sa v nej nachádzajú výpočty, ktoré boli použité pri tomto porovnaní, ktorého cieľom bolo zníženie elektrickej spotreby mikrokontroléra.
Energetická spotreba zariadenia
Jedným z cieľov práce bolo dosiahnuť veľmi nízku spotrebu energie navrhnutého zariadenia, vďaka čomu by sa dalo použiť aj pri napájaní z batérie. Na tento bod sme brali ohľad už pri výbere mikrokontroléra a preto sme sa rozhodli použiť STM32L432KC, nakoľko sa vyznačuje nízkou spotrebou a dostatočne vysokým výkonom. Celkovú spotrebu zariadenia však môžme znížiť aj optimálnym nastavením frekvencie, na ktorej beží procesor, tohto mikrokontroléra. Cieľom bolo nájsť optimálne nastavenie frekvencie jadra, ktoré by zabezpečilo nízku spotrebu, ale aj dostatočne rýchly čas spracovania dát.
Zvýšenie frekvencie jadra má za následok hneď niekoľko zmien; zvýši sa rýchlosť spracovania dát, skráti sa doba spracovania dát a zvýši sa spotreba zariadenia. Od frekvencie mikrokontroléra závisí aj rýchlosť, v ktorej dokáže pracovať rozhranie SPI, nakoľko hodnota frekvencie mikrokontroléra musí byť aspoň dvojnásobkom frekvencie rozhrania SPI pracujúceho v režime master. Frekvencia SPI rozhrania zároveň nesmie byť rýchlejšia, než podporuje zariadenie pracujúce v režime slave. Čím vyššia je teda frekvencia mikrokontroléra, o to rýchlejšie môže prebiehať sériová komunikácia cez SPI rozhranie medzi zariadeniami a zrýchli sa tak čas čítania nameraných hôdnot z registrov senzorov.
Keďže použitý mikrokontrolér môže pracovať pri frekvencii až 80MHz, umožňuje nám nastaviť SPI rozhranie na 40MHz. Rozhodujúcim faktorom pri riešení však bolo zariadenie slave, ktorým je v našom prípade senzor LSM9DS1. Ten v režime slave podporuje maximálnu frekvenciu SPI rozhrania 10MHz [19]. Preto sme sa rozhodli zvoliť hornú hranicu frekvencie SPI rozhrania na 10MHz a dolnú hranicu na 1MHz.
Meranie času komunikácie cez SPI rozhranie
Za účelom porovnania rôznych nastavení frekvencií SPI rozhrania a mikrokontroléra sme odchytávali komunikáciu medzi mikrokontrolérom a senzormi na logickom analyzátore. Výsledkom je graf priebehu komunikácie, v ktorom možno vidieť hodnoty, ktoré odosielal mikrokontrolér a senzor. Z grafu je možné zistiť dobu trvania prečítania jedného merania pre jednotlivé nastavenia SPI rozhrania.
Na grafe 1.3 nie sú zreteľne viditeľné hodnoty, ktoré zariadenia odosielali pri vzájomnej komunikácii a to z dôvodu, že analyzátor nedokázal kvôli vysokej rýchlosti zosnímať túto komunikáciu. Pracuje totiž na vzorkovacej frekvencii 25MHz, ktorá nie je dostatočná na snímanie SPI signálu s frekvenciou 10MHz. Pre správne snímanie musí byť hodnota vzorkovacej frekvencie aspoň trojnásobkom snímanej frekvencie. Naopak na grafe 1.1 je po priblížení v analyzátore možno vidieť presné hodnoty získané pri danom meraní. Z týchto grafov sme zistili čas potrebný na prečítanie jedného merania a použili sme ho pri porovnaní jednotlivých konfigurácií SPI rozhrania. Ten sa rovnal [math]443,25 \mu{s}[/math] pri frekvencii 1MHz, [math]88,46 \mu{s}[/math] pri frekvencii 5MHz a [math]32,68 \mu{s}[/math] pri frekvencii 10MHz.
Výpočet spotreby elektrického prúdu
K nájdeniu optimálneho nastavenia nám stačilo zistiť veľkosť elektrického náboja pôsobiaceho pri zvolených konfiguráciach. Aby sme ho však dokázali určiť, potrebovali sme zistiť koľko elektrického prúdu potrebuje mikrokontrolér pri rôznych nastaveniach frekvencie jadra. Použili sme aplikáciu STM32CubeMX, ktorá poskytuje nástroj schopný vypočítať túto hodnotu na základe nastavenia operačného režimu a zvolenej frekvencie a spotrebu elektrického prúdu následne zobrazí na grafe.
V grafe 1.4 je zobrazená spotreba elektrického prúdu pri troch rôznych konfiguráciách frekvencie mikrokontroléru a SPI rozhrania. Ide o tri rôzne nastavenia, ktoré boli použité pri meraní času komunikácie pre SPI rozhranie. Výsledné hodnoty elektrickej spotreby pri použití zvolených konfigurácií:
- Mikrokontrolér 2MHz, SPI 1MHz [math]\Rightarrow\; I\; =\; 526,6\mu{A}[/math]
- Mikrokontrolér 10MHz, SPI 5MHz [math]\Rightarrow\; I\; =\; 1,84mA[/math]
- Mikrokontrolér 20MHz, SPI 10MHz [math]\Rightarrow\; I\; =\; 3,38mA[/math]
Porovnanie spotreby rôznych konfigurácií
Keďže už poznáme dobu prečítania jedného merania a zároveň aj spotrebu elektrického prúdu, dokážeme vypočítať hodnotu elektrického náboja pre zvolené konfigurácie. Zo získaných výsledkov vieme určiť výhodnejšie nastavenie frekvencií pre SPI rozhranie a mikrokontrolér. Pre výpočet elektrického náboja bol použitý vzorec: [math]Q\; =\; \int_{0}^{t}\; i\; dt\; =\; I\; *\; \int_{0}^{t}\; dt\; =\; I\; *\; t[/math] kde:
- [math]Q[/math] - je veľkosť elektrického náboja pre danú konfiguráciu,
- [math]i[/math] - je okamžitý prúd spotrebovávaný mikrokontrolérom,
- [math]I[/math] - je prúd spotrebovávaný mikrokontrolérom,
- [math]t[/math] - je čas prečítania jedného merania,
pričom uvažujeme, že hodnota elektrického prúdu je konštantná.
[math]Q_{2MHz}\; =\; 526,6\mu{A}\; *\; 443,25\mu{s}\; =\; 233415,45\mu{C} \doteq 233,4 mC[/math]
[math]Q_{10MHz}\; =\; 1840\mu{A}\; *\; 88,46\mu{s}\; =\; 162766,40\mu{C} \doteq 162,7 mC[/math]
[math]Q_{20MHz}\; =\; 3380\mu{A}\; *\; 32,68\mu{s}\; =\; 110458,40\mu{C} \doteq 110,4 mC[/math]
Z výsledkov vyplýva, že konfigurácia s vyššou frekvenciou bola pri čítaní hodnôt energeticky výhodnejšia a to aj napriek vyššej spotrebe. Načítanie údajov pri frekvencii SPI rozhrania 10MHz bolo až 13,5-krát rýchlejšie než pri frekvencii 1MHz. Tento čas je možné skrátiť, no SPI rozhranie je spomalené pauzami medzi odosielaním jednotlivých bajtov, ktoré možno vidieť na grafoch 1.1, 1.2 a 1.3. Tieto pauzy sú nečinné a predlžujú tak celkovú dobu komunikácie. Nakoľko pri našom riešení používame HAL knižnicu, nie je možné tento čas eliminovať. Na jeho odstránenie sa naskytuje možnosť využiť nízko-úrovňové knižnice, ktoré síce riešenie skomplikujú, no umožnia nám v budúcnosti výrazné zrýchlenie komunikácie medzi zariadeniami.
Záver
Úlohou pri riešení tejto práce bolo navrhnúť a vytvoriť zariadenie schopné detegovať polohou objektov v trojrozmernom priestore. Zariadenie malo pozostávať z kombinácie mikrokontroléra a senzorov akcelerometra a gyroskopu. Kvôli nutnosti čítania dát zo senzorov musel byť pre mikrokontrolér vytvorený firmvér, schopný komunikovať so senzormi. Získané hodnoty mali byť následne použité pri vizuálizácii polohy v desktopovej aplikácii.
Na začiatok sme sa zamerali na výber vhodných komponentov, ktoré boli pri riešení práce použité. Ohľad sme brali najmä na cenu daných zariadení a kompatibilitu s rôznymi komunikačnými protokolmi. Rozhodli sme sa pre použitie mikrokontroléra STM32L432KC, ktorý sa vyznačuje nízkou spotrebou energie a ponúka dostatočne vysoký výkon. Pri výbere senzorov sme sa rozhodli pre dosku so senzormi LSM9DS1, ktorá disponuje 3-osovým akcelerometrom, gyroskopom a magnetometrom.
Prvým krokom pri riešení práce bol návrh hardvérového zapojenia mikrokontroléra so senzormi. Následne sme sa venovali tvorbe firmvéru, ktorý umožnil spoluprácu medzi týmito zariadeniami. Obsahuje kód, ktorý riadi komunikačné rozhranie SPI, ktoré sprostredkováva plne duplexnú komunikáciu medzi zariadeniami a funkciu pre spracovanie žiadostí odosielaných z počítača. Firmvér bol napísaný v programovacom jazyku C a vytvorený v prostredí SW4STM32.
Ďalším krokom bol návrh a vytvorenie desktopovej aplikácie. Aplikácia obsahuje dve samostatné okná s možnosťou nastavenia sériového portu a senzorov akcelerometra a gyroskopu. Jej úlohou je spracovať namerané dáta a vypočítané hodnoty vizualizovať na 3D modeli v prostredí hlavného okna. Bola vytvorená za použitia dvoch programovacích jazykov a to značkovacieho jazyka XAML, ktorý bol použitý pri tvorbe používateľského rozhrania a objektovo-orientovaného programovacieho jazyka C#, ktorý zabezpečuje funkčnosť aplikácie a spracovanie nameraných údajov.
Výsledkom tejto práce je zariadenie, ktoré dokáže zmerať zrýchlenie objektu v troch osiach prostredníctvom akcelerometra a zo získaných hodnôt dokáže určite natočenie objektu v dvoch osiach. Ak by sme chceli získať schopnosť detegovať natočenie aj v tretej osi a možnosť snímania smeru pohybu, museli by sme do nášho riešenia implementovať aj dáta získavané z gyroskopu, prípadne magnetometra. Tento krok nám umožní použiť zariadenie na testovanie v reálnych situáciách a riešeniach, v ktorých by sa mohlo uplatniť. Zariadenie by tak mohlo byť použité pri ovládaní počítačových hier, riadení jednoduchého robota a zdravotníckych pomôckach, kde by sa dalo použiť na sledovanie pohybu pacientov.
Zoznam použitej literatúry
[1] Adafruit. Schematic and Fabrication Print. 2016. url: https://learnadafruit.com/adafruit-lsm9ds1-accelerometer-plus-gyro-plus-magnetometer-9-dof-breakout/downloads (cit. 30. 04. 2019).
[2] Circuit Basics. Basics of the SPI Communication Protocol. 2016. url: http://www.circuitbasics.com/basics-of-the-spi-communication-protocol/ (cit. 14. 12. 2018).
[3] Per Christensson. GPIO Definition. 2014. url: https://techterms.com/definition/gpio (cit. 16. 04. 2019).
[4] Per Christensson. RISC Definition. 2006. url: https://techterms.com/definition/risc (cit. 01. 05. 2019).
[5] Helix Toolkit Contributors. Introduction. 2015. url: http://docs.helixtoolkit.org/en/latest/introduction/introduction.html (cit. 19. 04. 2019).
[6] John. MEMS Accelerometer. 2011. url: http://www.instrumentationtoday.com/mems-accelerometer/2011/08/ (cit. 08. 04. 2019).
[7] F. Leens. “An introduction to I2C and SPI protocols”. In: IEEE Instrumentation & Measurement Magazine 12 (2009), s. 8–13.
[8] Microsoft. Introduction to WPF. 2013. url: https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/aa970268(v=vs.100) (cit. 22. 04. 2019).
[9] Microsoft. Lambda expressions (C# Programming Guide). 2019. url: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions (cit. 26. 04. 2019).
[10] Microsoft. Math Class. 2018. url: https://docs.microsoft.com/en-us/dotnet/api/system.math?view=netframework-4.8 (cit. 19. 04. 2019).
[11] Microsoft. Overview of Visual Studio 2017. 2018. url: https://docs.microsoft.com/en-us/visualstudio/get-started/visual-studio-ide?view=vs-2017 (cit. 14. 02. 2019).
[12] Motorola. SPI Block Guide V03.06. 2000. url: https://opencores.org/usercontent/doc/1499360489 (cit. 16. 12. 2018).
[13] Carmine Noviello. Mastering STM32. Leanpub, 2018. (Cit. 14. 12. 2019).
[14] Alex Khenkin a Kieran Harney Rob O’Reilly. Sonic Nirvana: Using MEMS Ac-celerometers as Acoustic Pickups in Musical Instruments. 2009. url: https://www.analog.com/en/analog-dialogue/articles/mems-accelerometers-as-acoustic-pickups.html (cit. 08. 04. 2019).
[15] Freescale Semiconductor. Tilt Sensing Using a Three-Axis Accelerometer. 2013. url: https://cache.freescale.com/files/sensors/doc/app_note/AN3461.pdf (cit. 22. 04. 2019).
[16] NXP Semiconductors. I 2 C-bus specification and user manual. 201. url: https://www.nxp.com/docs/en/user-guide/UM10204.pdf (cit. 17. 02. 2019).
[17] STMicroelectronics. Datasheet - STM32L432KB STM32L432KC. url: https://www.st.com/resource/en/datasheet/stm32l432kc.pdf (cit. 17. 12. 2018).
[18] STMicroelectronics. Introduction to MEMS gyroscopes. 2010. url: https://electroiq.com/2010/11/introduction-to-mems-gyroscopes/ (cit. 06. 03. 2019).
[19] STMicroelectronics. LSM9DS1 iNEMO inertial module. url: https://www.st.com/resource/en/datasheet/DM00103319.pdf (cit. 16. 12. 2018).
[20] STMicroelectronics. Microcontrollers. 2018. url: https://www.st.com/en/microcontrollers.html (cit. 20. 12. 2018).
[21] STMicroelectronics. STM32 Nucleo-32 boards. url: https://www.st.com/resource/en/data_brief/nucleo-l432kc.pdf (cit. 19. 12. 2018).
[22] STMicroelectronics. STM32 Nucleo-32 boards (MB1180). 2018. url: https://www.st.com/content/ccc/resource/technical/document/user_manual/e3/0e/88/05/e8/74/43/a0/DM00231744.pdf/files/DM00231744.pdf/jcr:content/translations/en.DM00231744.pdf (cit. 30. 04. 2019).
[23] STMicroelectronics. STM32CubeMX. 2018. url: https://www.st.com/resource/en/data_brief/stm32cubemx.pdf (cit. 14. 02. 2019).
[24] STMicroelectronics. SW4STM32. 2018. url: https://www.st.com/en/development-tools/sw4stm32.html (cit. 14. 02. 2019).
[25] Antonín Vojáček. Integrované MEMS GYROSKOPY. 2009. url: https://automatizace.hw.cz/integrovane-mems-gyroskopy (cit. 05. 04. 2019).