Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2017:vib-analysis

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2017:vib-analysis [2018/01/13 12:18]
Ondřej Fišer
2017:vib-analysis [2018/01/14 11:22] (aktuální)
Ondřej Fišer
Řádek 42: Řádek 42:
 </​code>​ </​code>​
 ===== IIR filtr ===== ===== IIR filtr =====
-Následuje blok IIR filtru, tento blok může částečně kompenzovat rezonanční křivku akcelerometru a zvětšit tak šířku pásma ve kterém zařízení může měřit. Zdrojový kód vychází z následujícího obrázku rovnic. Koeficienty byly vygenerovány pomocí programu Matlab. +Následuje blok IIR filtru, tento blok může částečně kompenzovat rezonanční křivku akcelerometru a zvětšit tak šířku pásma ve kterém zařízení může měřit. Zdrojový kód vychází z následujícího obrázku rovnic, dále je z něj patrné že je tento filtr rozdělen do dvou bloků. Koeficienty byly vygenerovány pomocí programu Matlab. 
-{{ :​2017:​vibro_fiser:​df2graf.png?​600 |}}{{ :​2017:​vibro_fiser:​df2diff2.png?​600 |}}+{{ :​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 74: Řádek 75:
 } }
 </​code>​ </​code>​
-{{ :​2017:​vibro_fiser:​cubemx.png?600 |}}+===== Numerická integrace ===== 
 +Část numerické integrace je tvořena prostým sumováním vzorkům z AD převodníku (přepočítaných na reálnou hodnotu po zesílení danou větví). Po každé periodě signálu dojde k vynulování integrační proměnné, tak aby nedošlo vlivem šumu (více v kapitole Závěr) "​ujetí"​ hodnoty po integrování směrem k nekonečnu.
  
 +**Simulace integrování v programu Matlab:**
 +{{ :​2017:​vibro_fiser:​integrace.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
  
2017/vib-analysis.1515842304.txt.gz · Poslední úprava: 2018/01/13 12:18 autor: Ondřej Fišer