본문 바로가기

프로젝트/기타

심박측정기 프로젝트(Atmega88)

반응형

- 프로젝트 명 : 심박측정기

- 프로젝트 주제 : 산소포화도를 이용한 심박측정기

- 개발 인원 : 3명 (홍유진, 오진택, 곽민규) , 지도교사 민병관

- 개발기간 : 2014/07 ~ 2014/11

- 개발환경: ATMega88, AVR Studio, OrCAD

- 지원 : 인천전자마이스터고

 

 

1. 프로젝트 개요

자신의 몸상태를 확인하거나 운동을 효율적으로 하기 위해서 심박측정이 필요한 경우가 있다. 최근 디지털헬스시계가 발달되어 운동하는데 손쉽게 심박을 측정할 수 있으나, 이러한 기기를 만 들어 보고 싶다는 생각에 이 프로젝트를 진행하게 되었다. 원리는 PPG(Photoplethysmography)를 이용하였고, 측정부에 손가락을 3~5초간 올려두면 자동으로 심박이 측정된다.

참고사이트

 

ATMega128을 이용한 PPG 맥박측정기 제작

자료는 용량관계로 스카이드라이브에 올렸습니다. https://skydrive.live.com/#!/?cid=26749d9a8205a512&am...

blog.naver.com

 

[자작] ATMega128을 이용한 Heart Rate[심박수] 측정기

전에 만들었던 심박수 모니터는 맥박신호를 증폭하여 단순히 블루투스를 통해 PC로 전송하는 것을 구현하...

blog.naver.com

 

2. 역할

홍유진 (리더)

- 프로젝트 기획, 자료 및 기술조사

- 회로 설계, 프로그래밍

오진택

- 도면작성과 PCB Artwork

- 회로 조립 및 도통 테스트

- 소자구매

곽민규

- 브래드보드 테스트

- 기구(외형)제작과 성우 초청

- PPT 제작, 전시용 자료 제작

3. 프로젝트 구조

3.1. 아날로그 제어부

- IR-LED, PD : 산소포화도를 이용하여 심박을 측정하는 핵심부. 이런 광 반도체 소자들은 민감한 주파수영역대가 정해져 있기에 주파수대역을 확인하고 쓰는게 좋다고 생각한다.

- LPF용 Condenser : 필터, 공진회로, 적분, 전하 축정 등 다양한 용도로 사용되는 콘덴서를 이용 하여 잡음을 제거하였다.

- LM358 : Dual형 OP-AMP로 PD에서 측정자의 혈관을 통해 나오는 신호를 증폭시켜주는 역할을 한다. 신호를 증폭시키지 않으면 ATMega에서 정확한 측정이 불가능하다.

- A/D변환용 Transistor : 3개의 반도체를 접합하여 만든 트랜지스터의 스위치 역할을 이용하여 아 날로그 신호를 디지털 신호로 변경하였다. 일정 이상의 산소포화도가 검출되면 심장이 뛰어 혈관 에 산소를 운반했다 생각하고, 이 신호를 기준으로 심박을 측정한다.

3.2. 디지털 제어부

- Atmega88 : 저전력 CMOS형 8비트 마이크로컨트롤러로 Tr에서 오는 데이터로 심박을 계산하고 LCD에 출력신호를 보내는 역할을 한다

- LCD : 소비전력이 낮은 16x2 LCD를 이용하여 심박을 표시한다.

3.3. 음성출력부

- APR9600 : 가변저항을 이용해 원하는 용량의 음질로 녹음/재생을 할 수 있는 소자. 이 칩으로 마이크와 스피커를 제어해 측정에 필요한 안내음성을 녹음하였다.

4. 측정방법

LED와 Photo transistor 또는 Photo Diode(PD)를 이용하여 PPG를 측정할 수 있다. 손가락을 투과하는 빛의 양을 측정 하는 방법과 손가락으로부터 반사되어 나오는 빛의 양을 측정하는 방법으로 나뉜다. Photo transistor 또는 Photo diode에 조사되는 빛의 양에 따라 전류량이 달라지는 특성을 이용하여 혈류량의 변화를 측정할 수 있다. 이 프로젝트에서는 PD와 반사되어 나오는 빛의 양을 측정하는 방법을 이용하였다.

측정 대상의 신체 조건과 같은 대상이여도 주변 상황에 따라 PPG는 변화가 많기 때문에 맥박을 측정하는 등 회로 설계에 있어서 능동적인 구성이 필요하다. 그렇기 때문에 가능한 일정 변화에 대해 적응할 수 있는 회로를 설계해야 한다. 더불어서 가능하면 동잡음 등 외란에도 강한 회로를 설계 할 수 있도록 한다.

이 프로젝트는 LPF의 이용과 소프트웨어적으로 잡음을 줄여봤으나, 아직도 완전히 안정적인 측정은 불가능하다. 이 부분에 대해서는 현재 정확한 답은 나오지 않았지만, 시중에 나와있는 다양한 심박측정기들을 보면 충분히 잡음을 없앨 수 있을 것이라 생각된다. 그리고 이 작품에는 준비되어 있지 않지만 가속도 센서를 이용하면 움직이면서도 심박 측정이 가능한 회로를 만들 수 있다.

 

심박측정 파형 그래프

 

위 사진의 CH2(녹색 아날로그 파형)는 심박을 측정하였을 때 나오는 PPG 파형이고, 그 위의 CH1(노란색 디지털 파형)는 PPG파형이 TR의 Base를 on시키는 전압을 넘어서면 TR의 E와 C가 연결되는 스위칭 작용을 이용해서 만든 파형이다. 이 Ch1파형을 Atmega88의 INT0에 연결하여 Timer-count로 인터럽트 사이의 시간을 구하면 심박을 계산할 수 있다.

5. 설정값

 

void init_system(void){
  EMISK = 0x01; // INT0 사용
  EICRA = 0b00000010; // INT0 하강

  TCCR0B = 0x05; // 1024분주
  TIMSK0 = 0x01; // 타이머 카운터(0) 오버플로 사용
  TCNT0 = 0x00;

  TIMSK = 0x00; // 타이머 카운터(1) 오버플로 사용
  TCCR1A = 0x00; // 일반모드
  TCCR1B = 0x05; // 1024분주 및 T/C1 사용
  TCNT1H = 0xA; // 128usec(1/8MHz * 1024) * (0XFFFF - 0xA472) = 3sec
  TCNT1L = 0x72; // 선 HIGH 비트 입력

  DDRD = 0x03; //LCD RS,E
  DDRB = 0xff; //LCD 데이터라인
  DDRC = 0xff;

  SREG|=0x80; // 설정 인터럽트 허용
}

 

 

 

 

※ USB의 자료가 날라가서 내용에 부족한 부분이 있습니다..

 

반응형