You are on page 1of 11

Biolgiai jelek rgzitse s feldolgozsa

ksztette: Fehr ron szak: Automatika s alkalmazott informatika 2.v

1 |O l d a l

Clkitzs: a biolgiai jelek mintavtelezsnek, kondcionlsnak, s feldolgozsnak tanulmnyozsa, illetve egy sajt mintavtelez/feldolgoz rendszer ltrehozsa.

A biolgiai jelek tanulmnyozsval fontos informcikat nyerhetnk testnk mkdsrl, ezen jelek felhasznlsval bizonyos tevkenysgek elvgzst is megknnythetjk. A legfontosabb biolgiai elektromos jelek az EEG, EKG, es EMG jelek. Az EEG jelek amplitdja 10V - 100V, az EMG jelek 50V 30mV kztti rtket vehet fel, mg az EKG jelek mV-os nagysgrendek. Kt mdszerrel lehet tanulmnyozni a biolgiai jeleket: felleti s invazv eljrssal. A ksrletezs cljbl az elbbi mdszert alkalmaztuk. Az elernyedt izomszvet elektromosan inaktv. Az egyen feszltsg mindig jelen van a kontakt potencil illetve a galvnjelensgek miatt, illetve a enuromuszkulris csompontok spontn aktivitsa is zavarknt jelentkezik. Az emltett jelensgekbl, illetve a fenti jelek nagysgrendjbl kvettkeztethetnk, hogy egy specifikus jel klnll mrshez bonyollt szrrendszereket, magas felbonts mintavtelezst kell alkamazni. A fenti informcit felhasznlva egy EEG elektrda testreszabsval kezdtk tanulmnyozsainkat. A felersitett jeleket a Microchip dspicdem 1.1 fejlesztpanelnek segtsvel digitalizltuk, szrtk, s vittk be a szmtgpbe, ahol egy sajt programmal vizsgltuk az izmok ltal kivltott jeleket. A Microchip dspicdem 1.1 fellet egy dsPIC30F6014 16-bites mikrokontrollert tartalmaz, mely idelis a jelek feldolgozsra. A firmware fejlesztsre a mikroElektronika MikroC kompiltort hasznltam, a program getshez az ICD3 egysget MplabX krynezetben. Az rajelrt egy 7.37MHz-es kvarc kristly felel, PLL hasznlata nlkl. A kd egyszersge, illetve a stabil tpegysg miatt nem hasznlok Brow-out reset impulzusokat s Watchdog idztt.

2 |O l d a l

1.bra a dsPICDem 1.1 ideiglenesen sszektve az elektrdval.

2.bra tesztelsi krnyezet.

3 |O l d a l

#define Lo(param) ((char *)&param)[0] #define Hi(param) ((char *)&param)[1] const unsigned BUFFER_SIZE = 512; const unsigned FILTER_ORDER = 20; unsigned inext; ydata unsigned input[BUFFFER_SIZE];

const unsigned COEFF_B[FILTER_ORDER+1] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x0000, 0xFFF6, 0xFFE4, 0xFFCB, 0xFFB0, 0xFF9B, 0x7F93, 0xFF9B, 0xFFB0, 0xFFCB, 0xFFE4, 0xFFF6, 0x0000, 0x0003, 0x0002, 0x0001, 0x0000}; void ADC1Int() org IVT_ADDR_ADCINTERRUPT { unsigned CurrentValue; input[inext] = ADCBUF0; CurrentValue = FIR_Radix(FILTER_ORDER+1, COEFF_B, BUFFER_SIZE, input, inext); inext = (inext+1) & (BUFFER_SIZE-1); UART2_WRITE(255); Uart2_Write(Hi(CurrentValue)); Uart2_Write(Lo(CurrentValue)); ADIF_bit = 0; }//~

void Timer1Int() org IVT_ADDR_T1INTERRUPT { if (DONE_bit){ SAMP_bit = 1; } PORTC.RC1 = ~PORTC.RC1;

4 |O l d a l

T1IF_bit }//~

= 0;

int main() { TRISB.B0 = 1; TRISC.RC1 = 0; PortC.RC1 = 1; UART2_INIT(115200); inext = 0; Vector_Set(input, BUFFER_SIZE, 0); TRISB = 0xFFFF; ADCON1 = 0x00E2; ADCON2 = 0x0000; ADCON3 = 0x0202; ADPCFG = 0x0000; ADCHS = 0x0000; ADCSSL = 0; ADPCFG = 0x0000; IFS0 = 0; IFS1 = 0; IFS2 = 0; NSTDIS_bit = 1; INTCON2 = 0; T1IE_bit = 1; ADIE_bit = 1; T1IP0_bit = 1; IPC2.B13 = 1; PR1 = 0x05FF; TON_bit = 1; ADON_bit = 1; SAMP_bit = 1; while (1); }

5 |O l d a l

Mivel a dsPIC A/D talaktja 12bites, de az UART kommunikci csak 8bites adatot tud tovbbitani fel kell darabolni a mintavtelezett jelet. Ehhez definiltam a Lo/Hi makrkat. A rendszerben jelentkez 50Hz-es zajt egy svzr szrvel lehet kikszblni, ezt FIR vagy IIR eljrssal lehet megrni. A FIR szrre esett a vlaszts, mivel maga a program kismret, nem ignyel sok szmtst ( ha sok szmtst kellene vgezni IIR lenne az optimlis vlaszts), ugyanakkor lineris fzis-szrst vgez. Egy 20-adrend FIR szrt hasznlok 49-51Hz kszbkkel ( amit a hexadecimlis b koefficiens tmb hatroz meg). A teljes program megszakts alap, ezrt a vgtelen ciklusban semmit sem kell tegyen. Az ADC megszakitsban mintt veszek, majd a Fir_Radix utasitssal a meglv adatok s a szrsi koefficiens konvolutv szorzatt kpezem.Nvelem az inext indexet a BUFFER_SIZE maradk osztlyon, illetve az UART soros kimeneten kldm tovbb a jelet, majd nullzom a megszakits flag-et. A Timer1 a mintavtelezsi frekvencit lltja el, illetve egy ngyszgjelet general az RC1 lbon( az ellenrzs kedvrt). A f fggvny csak a ki/bemenetek-rt felels regisztereket lltja be, a konverzi felttelt, UART felttelt, flag-ek kezdrtkt, s a megszaktsok prioritst.

3.bra a svzr szr vlasza egy vltakoz frekvencij szinuszos jelre.

A tovbbiakban a tanulnyozott jelek alakjait figyelhetjk meg:

6 |O l d a l

4.bra potencilvltozs az alkaron izomfeszts kzben.

5.bra potencilvltozs vizsglata a bicepszen.

7 |O l d a l

6.bra EKG mrs a V6 poziciban.

7.bra EKG mrs a III. poziciban.

8 |O l d a l

Sajtfejleszts mintavtelez/feldolgoz rendszer rvid ismertetse:

8.bra kapacitv elektrda A fenti brn lthat egy elektrda rajza. A beltets ktoldalas NYK-ra trtnik, az als rteg az rzkel korongot s az rnykol gyrt tartalmazza lakkozott szigetelssel, a fels rteg az ramkri elemeket( kt feszltsgkvet ramkr impedancia illesztsre, s kapacitv jelleg kikszblsre). 9.bra RLD ramkr mellyel a kzs mdus interferencit kszblm ki.

9 |O l d a l

10.bra 4 csatorns ersit, AD konverterrel s rdifrekvencis adval. A 10.brn az elektrdk vezrmoduljt szemlltetem, mely egy 34dB-es ersit fokozatot, egy 4-edrend Shallen-Key aloltereszt szrt ( 75Hz vgsi frekvencival), mgegy 34dB-es ersit fokozatot, s egy 12bit-es 200kSPS ADC ramkrt tartalmaz. A digitalis adatot egy 8-bites PIC mikrokontroller veszi s adja tovbb egy 2.4GHz-es ad-vev modulnak ( mindezt SPI kommunikcin). A rendszer tpllst egy 3.3V-ra cskkentett 6V-os Ni-MH akku tpllja( sajt tlt ramkrrel).

10 |O l d a l

11.bra USB-s vev ramkr A fenti brn a vevramkr lthat. Egy 16bit-es dsPIC mely SPI kommunikcival olvassa a jelet az RF vevrl, vgzi a digitalis szrst illetve ms mveleteket, majd I2C kommunikcin adja tovbb az FTDI chip-nek. Az ramkr tpllsa kzvetlenl a szmtgprl tortnik.

A tovbbiakban a fenti rendszert szeretnm tanlmnyozni, megpteni majd az agy tevkenysget vizsglni az alvs klnbz szakaszaiban, fleg az lmods alatt.

11 |O l d a l

You might also like