Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
|
2019:hb100-radar [2020/01/20 10:24] Tuan Ha [Závěr] |
2019:hb100-radar [2020/01/20 16:48] (aktuální) Tuan Ha |
||
|---|---|---|---|
| Řádek 5: | Řádek 5: | ||
| Přenos je realizován pomocí virtuálního COM portu. | Přenos je realizován pomocí virtuálního COM portu. | ||
| - | ====Realizace==== | + | =====Realizace===== |
| - | Na obrázku je schéma externí destičky. Velikost zesílení byla zvolena tak, aby bylo možné detekovat pohyb v přímé blízkosti senzoru pro jednodušší testování.\\ | + | ====Destička==== |
| + | Na obrázku je schéma externí destičky. Velikost zesílení byla zvolena tak, aby bylo možné detekovat pohyb v přímé blízkosti senzoru pro jednodušší testování.Výsledný analogový signál ze senzoru je přiveden na AD převodník ADC 1 (pin PA1)\\ | ||
| {{2019:tha:schema.png?350}} {{2019:tha:tha_deska.png?250}}\\ | {{2019:tha:schema.png?350}} {{2019:tha:tha_deska.png?250}}\\ | ||
| - | K vytvoření firmwaru sloužil nástroj STM32CubeMX, schopný generovat kód s již nakonfigurovanými periferiemy (ADC, VCP ..). Jako uživatelské rozhraní posloužilo IDE od IAR EW, které mají knihovnu CMSIS - DSP v základu.\\ | + | ====FFT==== |
| - | CMSIS nabízí mnoho způsobů výpočtu spektra mezi nejpoužívanější patří výpočet komplexní (CFFT) a reálného (RFFT) FFT v kódu jsou implementovány oba způsoby a na následujících obrázcích je jejich srovnání. Obě dvě spektra jsou měřeny bez pohybu ve vnějším okolí.\\ | + | K vytvoření firmwaru sloužil nástroj STM32CubeMX, schopný generovat kód s již nakonfigurovanými periferiemi (ADC, VCP ..). Jako uživatelské rozhraní posloužilo IDE od IAR EW, které má knihovnu CMSIS - DSP v základu.\\ |
| + | CMSIS nabízí mnoho způsobů výpočtu spektra, mezi nejpoužívanější patří výpočet komplexní (CFFT) a reálného (RFFT) FFT. V kódu jsou implementovány oba způsoby a na následujících obrázcích je jejich srovnání. Obě dvě spektra jsou měřeny bez pohybu ve vnějším okolí.\\ | ||
| {{2019:tha:RFFT.png?350}} {{2019:tha:CFFT.png?350}}\\ | {{2019:tha:RFFT.png?350}} {{2019:tha:CFFT.png?350}}\\ | ||
| - | Na levém obrázku je spektrum RFFT a na pravém CFFT (resp. jeho modul). Oproti CFFT má RFFT jednodušší výpočet, ale vykazuje vyšší zašumění spektra. Pro realizaci byl vybrán CFFT s výpočtem modulu Data byly vyextrahovány z debuggeru IAR a vykresleny v matlabu.\\ | + | Na levém obrázku je spektrum RFFT a na pravém CFFT (resp. jeho modul). Oproti CFFT má RFFT jednodušší výpočet, ale vykazuje vyšší zašumění spektra. Pro realizaci byl vybrán CFFT s výpočtem modulu. Data byly vyextrahovány z debuggeru IAR a vykresleny v matlabu.\\ |
| - | Pro přesné určení frekvence z modulu je nutné nastavit rozlišení spekrta. Toto rozlišení je dané velikostí tzv. "Binu". Bin je disktrétní elementátrní hodnota vypočteného spektra . Výpočet binu se realizuje podílem = (vzorkovací frekvence/počet prvků), kde maximální hodnota prvků je 2048 a vzorkovací frekvence je dána nstavenou rychlostí ADC. Miniální vzorkovací frekvence ADC je 1,3125 MHz (předdělička 16 pro PCLK2 a 8 pro samotné ADC). | + | Pro přesné určení frekvence z modulu je nutné nastavit rozlišení spekrta. Toto rozlišení je dané velikostí tzv. "Binu". Bin je disktrétní elementátrní hodnota vypočteného spektra. Výpočet binu se realizuje podílem - vzorkovací frekvence/počet prvků, kde maximální hodnota prvků je 2048 a vzorkovací frekvence je dána nstavenou rychlostí ADC. Minimální vzorkovací frekvence ADC je 1,3125 MHz (předdělička 16 pro PCLK2 a 8 pro samotné ADC). |
| - | S touto frekvencí vychází velikost binu (tedy i minimální rozlišení) na 641 Hz, takto hrubá velikost je nevhodná (chůze = 100Hz). Proto je mezi vzorky vloženo úmělé zpoždění k snížení vzorkovací frekvence. Nevýhodou je, že nelze přesně určit velikost vzorkovací frekvence, ta je nyní dána zpožděním HAL_delay a dobou provedení instrukcí (navzorkování ADC, uložení atd.). Předpokládám vyšší uplatnění doby zpoždění HAL_delay(0.8).Vzorkovací frekvence bude tedy 1250 Hz a velikost binu 0.61 Hz. | + | S touto frekvencí vychází velikost binu (tedy i minimální rozlišení) na 641 Hz, takto hrubá velikost je nevhodná (chůze = 100Hz). Proto je mezi vzorky vloženo úmělé zpoždění k snížení vzorkovací frekvence. Nevýhodou této metody je, že nelze přesně určit velikost vzorkovací frekvence, ta je nyní dána zpožděním HAL_delay a dobou provedení instrukcí (navzorkování ADC, uložení atd.). Předpokládám vyšší uplatnění doby zpoždění HAL_delay(0.8). Vzorkovací frekvence bude tedy 1250 Hz a velikost binu 0.61 Hz. |
| <code c> | <code c> | ||
| for(int i = 0;i < TEST_LENGTH_SAMPLES;i++){ //delka 2048 | for(int i = 0;i < TEST_LENGTH_SAMPLES;i++){ //delka 2048 | ||
| Řádek 26: | Řádek 28: | ||
| </code> | </code> | ||
| + | ====Detekce==== | ||
| Po navzorkovaní je na vstupní data aplikována CFFT a kde je poté detekován bin s nejvyšší hodnotou pomocí arm_max_f32(). Před detekcí je navíc nulována stejnosměrná složka, aby nedošlo k její detekci. Pokud maximální hodnota vyhovuje podmínce tresholdu je poslána pomocí VCP do PC. Podmínka treshold se uplatní v případě, že v okolí není detekován pohyb. Potom do PC vyšle hodnotu 0. | Po navzorkovaní je na vstupní data aplikována CFFT a kde je poté detekován bin s nejvyšší hodnotou pomocí arm_max_f32(). Před detekcí je navíc nulována stejnosměrná složka, aby nedošlo k její detekci. Pokud maximální hodnota vyhovuje podmínce tresholdu je poslána pomocí VCP do PC. Podmínka treshold se uplatní v případě, že v okolí není detekován pohyb. Potom do PC vyšle hodnotu 0. | ||
| <code c> | <code c> | ||
| Řádek 43: | Řádek 45: | ||
| position = testIndex; | position = testIndex; | ||
| </code> | </code> | ||
| + | ====VCP (Virtual COM port)==== | ||
| Dalším krokem je poslání výsledku pomocí sériové linky do PC, kde jsou data zpracovány. Ty jsou ve firmwaru poslány následovně. | Dalším krokem je poslání výsledku pomocí sériové linky do PC, kde jsou data zpracovány. Ty jsou ve firmwaru poslány následovně. | ||
| <code c> | <code c> | ||
| Řádek 59: | Řádek 61: | ||
| - | ====Výsledky==== | + | =====Výsledky===== |
| Ukázka videa:https://www.youtube.com/watch?v=JGoTKWbEG4E&feature=youtu.be | Ukázka videa:https://www.youtube.com/watch?v=JGoTKWbEG4E&feature=youtu.be | ||
| - | Pro kontrolu byly navzorkovány data stejného pohybu a transformována do spektra v Matlabu. Na obrázku je znázorněné spektrum pohybu větráku. Spektrální čára (bin) odpovídá rychlosti a spektrální | + | Pro kontrolu byly navzorkovány data stejného pohybu a transformována do spektra v Matlabu. Na obrázku je znázorněné spektrum pohybu větráku. Spektrální čára 654.bin odpovídá rychlosti 20,48 km/h a 327.bin odpovídá 10,24 km/h. Na binu 1024 dochází k zrcadlení spektra. Detektor není vytvořen k detekci kruhového pohybu, proto dochází ke generaci dvou harmonických signálů. |
| - | {{2019:tha:spektrum.png}} | + | {{ 2019:tha:spektrum.png }} |
| ====Zdrojové kódy==== | ====Zdrojové kódy==== | ||
| - | + | https://mega.nz/#F!L0cUwKLJ!BFwxEzVCoT_sDPsceQKR3Q | |