90 likes | 292 Views
Medical Instrumentation #8. Digital Signal Processing, Digita l Filter, QRS detector. 제출일 : 2014. 05. 13 . 생체의공학과 2010103789 박 준 환. 1. Digital Signal Processing. < Measurand >. Analog Signal Processing. Digital Signal Processing. Output. 80 bpm . + -. Amp. ADC. R A. uP.
E N D
Medical Instrumentation #8 Digital Signal Processing, Digital Filter, QRS detector 제출일 : 2014. 05. 13. 생체의공학과 2010103789 박 준 환
1. Digital Signal Processing <Measurand> Analog Signal Processing Digital Signal Processing Output 80 bpm + - Amp ADC RA uP 심전도의 출력과 QRS 검출 LA Keypad * 12bit ADC * 200Hz : 아래 파형의12bit data가 5ms 간격으로 들어옴 RL * Heart rate 표시 * : 전극이 떨어지면 LED on, Sound 출력(삐-삐-) * : QRS가 나오지 않으면 LED on, sound 출력(삐삐- 삐삐-) * : QRS발생할때 마다 LED 깜빡 sound (삣-삣-) sensor
1. Digital Signal Processing * 언어 : C language(Firmware 생성 : uP에서 돌아가는 Program) * 예시(기본적인 형태) ……… Main(){ initialize(); // uP내 정보 초기화, 사용목적에 따라 변수와 기능 조절 While(1) // 꺼질 때 까지 계속 Program 수행 { d=get_ECGdata(); l=get_Contact_data(); QRSdetection(); // 논문 참고 (다음시간) Update_Display(); Respond_To_user(); // 사용자 입력에 대한 반응 alarm(); //알람기능추가시 사용 Senddata(); } } 2) DSP-Programming
2. Digital Filter x[n] x[n-1] nTs t [n-1]Ts 0 * Raw Data Sampling X(t) X(n) H[z] X[n] Y[n]
2. Digital Filter - 1종류의 Digital Filter의 형태 - 의 값에 따라 Filter의 특성이 바뀜 * IIR Filter - Z-transform * FIR Filter
2. Digital Filter - b1, b2, …,bm = 0인 경우 :FIR Filter b1, b2, …,bm이 하나라도 0이 아닌 경우 : IIR Filter - Frequency Response를 알고 싶을 때 : Z-transform에 (jw) 대입해서 확인해 볼 것 - 예제
// 입력을 받아 출력을 return시키는 프로그램 intMyFirst_DigitalFilter( int d ) // x[n]에 해당되는 data를 d로 설정 { Static int x1, x2, y1, y2; // 계산 후에도 없어지면 안됨 int y; // 계산해주면 없어져도 됨 y = d + (x1 << 1) + x2 – (y1 >> 2) + [(y2+y2+y2) >> 3]; // x1 << 1 : 왼쪽으로 1 bit Shifting //Real-time에 의해 다음 값을 받기위한 준비과정 x2 = x1; x1 = d; y2 = y1; y1 = y; // y값 return return(y); } - 딱 떨어지는 숫자가 나오지 않으면 : 좋은 uP사용, 근사값으로 바꾼 뒤 바뀐 값이 큰 이상이 없으면 그대로 사용. 2. Digital Filter
3. QRS detector - use “ring buffer” : 처음에는 알 수 없는 값 (60ms 이내는 쓰레기 값이 생김) : 다시 돌아가기 위해 x[13]~x[25]의 1 copy 를 더함 : Source Code int QRS_LPF( int d ) { static int x[26], n = 12, y1 = 0 , y2 = 0; int y; x[n] = x[n+13] = d; // n=12이면 25번 째에도 같은 값이 써짐 y = x[n] – (x[n+6] << 1) + x[n+12] + (y1 <<1) – y2; y2 = y1; y1 = y; if (--n < 0) { n = 12 } return (y); } 1) Low-pass Filter