Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2017:vib-analysis

Toto je starší verze dokumentu!


Zadání

Naprogramujte na vývojovém kitu s STM32F407VET6 program pro kompletní zpracování analogového signálu z jednoosého akcelerometru, zahrnující vstupní FIR filtry, detekci otáček a FFT analýzu. Výsledky FFT ukládejte na SD kartu a RMS hodnotu vibrací posílejte v reálném čase přes UART do PC.

Úvod

V současné době Průmyslu 4.0 je velkým trendem měření různých veličin během výrobního procesu. Měření vibrací je jednou ze složek, které se v mnoha společnostech monitorují. V minulosti měli některé společnosti speciálního člověka, který stroje obcházel a sluchem „kontroloval“ kondici ložisek, dnes tyto lidi nahrazuje program, který má v počítači na ploše oddělení údržby.

Průběžným měřením vibrací u rotačních stroj je možné zjisti například kondici ložisek, nesouosoti hřídelí nebo uvolnění mechanických součástí. Velkou výhodou tohoto systému je možnost předejít závadě a odstavení výrobní linky. Opravu je možné pak provést v plánovaném termínu.

Cílem projektu je HW řešení předzesilovačů pro zesílení vstupního signálu z akcelerometru a připojení čtečky na SD karetu. Dále je cílem vytvořit ovládací SW pro mikrokontrolér v prostředí Embitz.

HW řešení

Základem řešení je vývojová deska STM32_F4VE osazená mikroprocesorem STM32F407VET6. Jako měřící prvek byl vybrán precizní akcelerometr ADXL1002 od společnosti Analog Devices. Tento akcelerometr pracuje ve frekvenčním pásmu do 11 kHz. Je napájen nesymterickým napětím a výstupní střídavé napětí posouvá ofset roven polovině napájecího napětí.

Blokové schéma zařízení: Předzesilovače jsou připojeny k pinům 23-25, na kterých jsou namapovány vstupy IN1 AD převodníků 1-3. IC2A funguje jako rozdílový zesilovač a odstraňuje stejnosměrnou složku, další zesilovače slouží k zesílení signálu třemi cestami s různými zesíleními - tak aby vždy byla využita dynamika AD převodníku. V zapojení nejsou záměrně využity žádné vazební kondenzátory, neboť svými parametry velmi znepřesňují měření. Posledním důležitým obvodem vstupní části je digitální potenciometr MCP4461, pomocí kterého je možné libovolně nastavovat offset všem zesilovačům.

Schéma předzesilovače:

SW řešení

Prvním blokem je vlastní AD převodník. Prvním problémem, který bylo nutné vyřešit bylo periodické vzorkování a přepínání převodník mezi sebou v případě vysoké nebo nízké vstupní úrovně signálu. Periodické vzorkování je řešeno tak, že časovač Timer2 přetéká každých 10 us a tím spustí jeden převod AD převodníku. Tím je zajištěna vzorkovací frekvence 100 kHz. Následně po dokončení převodu nastává další přerušení a data se z převodníku vyčtou (není použito DMA). Přepínání převodníků mezi sebou je řešeno tak, že v proměnné je držena minimální a maximální hodnota vstupních vzorků a kdykoliv během měření dojde k překročení limitu hladin 96 nebo 4000 je převodník vypnut a zapnut další s menším zesílením. Naopak pokud je signál příliš malý tak dojde po skončení periody k přepnutí převodníku s vyšším zesílením.

Ovládací software a jeho hlavní části popisuje následující obrázek: 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.

uint16_t IIR( float coef[][5], uint16_t ADCval)
{
	        static double v1[2];
		static double v2[2];
		static double accu;
		static double y[2];
		static double vn1;
		accu=sample/2+coef[0][2]*v1[0]+coef[0][4]*v2[0];
		vn1 = 2* accu;
		accu=coef[0][0]*vn1+coef[0][1]*v1[0]+coef[0][3]*v2[0];
		y[0]=2*accu;
 
		v2[0]=v1[0];
		v1[0]=vn1;
 
		accu=y[0]/2+coef[1][2]*v1[1]+coef[1][4]*v2[1];
		vn1 = 2* accu;
		accu=coef[1][0]*vn1+coef[1][1]*v1[1]+coef[1][3]*v2[1];
		y[1]=2*accu;
 
		v2[1]=v1[1];
		v1[1]=vn1;
 
		sample=y[1];
 
  return( sample);
}

2017/vib-analysis.1515840862.txt.gz · Poslední úprava: 2018/01/13 11:54 autor: Ondřej Fišer