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 | ||
2017:vib-analysis [2018/01/14 10:18] Ondřej Fišer |
2017:vib-analysis [2018/01/14 11:22] (aktuální) Ondřej Fišer |
||
---|---|---|---|
Řádek 45: | Řádek 45: | ||
{{ :2017:vibro_fiser:df2graf.png?400 |}}{{ :2017:vibro_fiser:df2diff2.png?400 |}} | {{ :2017:vibro_fiser:df2graf.png?400 |}}{{ :2017:vibro_fiser:df2diff2.png?400 |}} | ||
+ | **Zdrojový kód IIR filtru složeného ze dvou bloků:** | ||
<code c> | <code c> | ||
uint16_t IIR( float coef[][5], uint16_t ADCval) | uint16_t IIR( float coef[][5], uint16_t ADCval) | ||
Řádek 79: | Řádek 80: | ||
**Simulace integrování v programu Matlab:** | **Simulace integrování v programu Matlab:** | ||
{{ :2017:vibro_fiser:integrace.png?600 |}} | {{ :2017:vibro_fiser:integrace.png?600 |}} | ||
- | {{ :2017:vibro_fiser:cubemx.png?600 |}} | + | Vlevo je originální sinusový signál, vpravo je signál po integraci. |
+ | ===== SD karta ===== | ||
+ | Čtečka SD karet je připojena pomocí 1 bitové datové sběrnice k rozhraní SDIO. Rozhraní běží na kmitočtu 24 MHz a v softwarové implementaci je využito knihovny fatfs.h pro obsluhu práce SD kartou a souborovým systémem FAT32. | ||
+ | **Zdrojový kód obsluhy práce s SD kartou:** | ||
+ | <code c> | ||
+ | if(BSP_SD_Init()==MSD_OK) | ||
+ | { | ||
+ | fresult=f_mount(&fatfs,"",1); | ||
+ | fresult=f_open(&myfile,"vibro.dat",FA_CREATE_ALWAYS|FA_WRITE); | ||
+ | sprintf((char*)buffer,"%d;%f;%f",vzorek,realADC,Integrace); | ||
+ | f_printf(&myfile,(const char*)buffer); | ||
+ | f_close(&myfile); | ||
+ | } | ||
+ | </code> | ||
+ | ===== Konfigurace STM32CubeMX ===== | ||
+ | Inicializační kódy jsou vygenerovány ve studiu STM32CubeMX. Hodiny jsou nakonfigurovány tak aby procesor pracoval na nejvyšších možných kmitočtech. V tomto projektu jsou využity následující periferie: ADC1, ADC2, ADC3, RCC, SDIO, TIM2, USART2. Middleware je využita pouze pouze knihovna FATFS. | ||
+ | |||
+ | **Mapování pinů a konfigrace hodiny mikrokontroléru:** | ||
+ | {{ :2017:vibro_fiser:cubemx.png?800 |}} | ||
+ | |||
+ | ====== Závěr ====== | ||
+ | V rámci tohoto projektu byla realizována deska předzesilovačů pro akcelerometr ADXL1002. Dále bylo implementováno periodické vzorkování AD převodníků, jejich přepínání podle úrovně signálu, IIR filtr a integrování vstupního signálu. Vstupy AD převodníků jsou zatížené poměrně vysokým šumem, který je způsobený nevhodným napájením analogové části (včetně referenčního vstupu) mikrokontroléru. Toto napájení je spojené s digitálním napájením, stejně tak není oddělená analogová a digitální zem. Pokud by byla vhodně řešeno zapojení země a referenční vstup by byl spojen s napájecím napětím akcelerometru, tak by se přesnost měření celkově zlepšila a nebylo by nutné nulovat integrační proměnnou po každé periodě. | ||
+ | Průběžné výsledky zpracování signálu je možné sledovat na UARTu nebo na SD kartě. | ||
+ | |||
+ | FFT analýza nebyla z časových důvodů implementována. Další práce bude spočívat v implementaci FFT analýzi (vysoké rozlišení bude pravděpodobně vyžadovat větší externí RAM paměť) a implementaci FreeRTOS pro jednodušší práci s dalšími periferiemi (RS485-ModBUS, OLED display, teplotní čidla atd.). | ||
+ | |||
+ | Použitá vývojová prostředí: Embitz, STM32CubeMX, Matlab | ||