질문게시판 > 답변 : 심박센서 bpm측정 관련 문의드립니다.

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

답변 : 심박센서 bpm측정 관련 문의드립니다.

페이지 정보

작성자 master 작성일18-01-18 17:29 조회28,095회 댓글7건

본문

 

e2db14983f07ec33f37ec8eda71e62b5_1516263690_1337.png
 

소스코드에서 기준선이 1/2이므로 적색선 정도의 위치가 되겠죠

동그라미 친 부분과 거리가 별로 떨어져 있지 않으므로 오동작 위험이 높습니다.

기준선을 더 높이세요

신호의 피크가 1000 근처까지 매번 올라가므로 800으로 고정해도 상관없겠습니다.

(매 측정마다 위 사진처럼 양호하게 측정 된다면)

 

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 7

조회수 : 28,095

master님의 댓글

master 작성일

사진처럼 깔끔한 파형이 나온다면 (매 파형 피크 1000 유지)
min,max를 체크 할 필요도 없고
전에 적어드린 것처럼 기준값 800으로 고정해서 처리하면 됩니다.
그 때는 기준값을 두가지 적었었죠?
300, 250
이 값을 820 780 이런식으로 바꿔도 됩니다.
10회 배열에 저장해서 평균을 내는 것은 10회 측정한 값으로 1분을 대신 하겠다는 의도입니다.
심박이 70~80 정도 뛰니 대략 8초 측정해서 값을 표시 하겠다는 것이죠
배열에 저장하지말고 60초동안 측정해서 출력하는 것이 더 정확하고
마지막 심박수의 오차를 처리 한다면 아주 훌륭한 측정방법이 되겠습니다.

묵묵님의 댓글

묵묵 댓글의 댓글작성일

셈서 adc값이 매번 저렇게 나오지 않는다면 원래의 알고리즘을 계속 보안 해야할가요??
센서에 손을 댈 때마다 파형이 달라집니다.

master님의 댓글

master 댓글의 댓글작성일

측정 방법은 아주 중요한 요소입니다.
제아무리 비싼 계측기라도 아무렇게나 측정해도 정밀한 측정이 될 수는 없겠죠
//
현재 소스를 조금 수정한다면
위 답변에서 언급한대로 1/2 지점이 아닌 3/4 지점으로 바꿔보세요

master님의 댓글

master 댓글의 댓글작성일

Pulse=0; amp=max-min; thresh=amp/2+min; max=thresh; min=thresh; // 변수 처리
위 코드만 수정하면 되겠죠
thresh=amp/2+min; 이 문장만 고치면 됩니다.
thresh=amp*1/2+min; 조금 변형하면 이 식이 되는데
thresh=amp*3/4+min; //3/4은 이 식이죠
이 정도는 알아서 할 수 있을 것으로 생각되지만
이렇게 쉬운 것도 못하는 초보자도 있을테니 적어드립니다.

묵묵님의 댓글

묵묵 댓글의 댓글작성일

답변 감사합니다. max,min,tresh초기값을 바꾸고 thresh=amp*3/4+min; 로 고치고 다른 방법으로 해봤는데도 잘안되네요. bpm값이 들숭날숭 하네요... 제가 소스를 다시 처음부터 쭉보다가
      if(secondBeat)
      {
  secondBeat=0;
for(int i=0;i<=9;i++)
{
        rate[i]=IBI;
} // sum 계산을 위해서 첫번째 주기로 채워둠
      }
      if(firstBeat)
    {
  firstBeat=0;
  secondBeat=1;
  sei();
  return;
  }  // 첫번째 측정은 오차가 많으므로 버림

이 부분에서 if문안에 firstBeat, secondBeat 처럼 문자로 조건을 주면 어떻게 동작하는지를 잘 모르겠습니다.

master님의 댓글

master 댓글의 댓글작성일

디버깅은 직접 하셔야합니다.
max,min,amp,thresh,BPM 이런 값들을 시리얼로 출력하면 문제점을 파악하기 쉽겠죠

묵묵님의 댓글

묵묵 댓글의 댓글작성일

감사합니다. 말씀해주신 방법으로 문제점을 찾아보도록하겠습니다.
하나더 궁금한게 있는데
for(int i=0;i<=8;i++)
  {
  rate[i]=rate[i+1];  // 9개의 값을 좌측으로 쉬프트 시키고

    sum_ms+=rate[i];
  }       

   
  rate[9]=IBI;                                        // 마지막 배열에는 방금 측정한 주기를 저장

  sum_ms+=rate[9];

      sum_ms/=10;                                        // 평균을 구함

      BPM=60000/sum_ms;                                  // 10개의 평균값으로 BPM을 계산

  //    QS=1;                                            // BPM을 구했음을 알려주기 위한 변수

    }
에서 BPM을 (60000/IBI 값 1 0개의 평균) 이렇게 계산하는데 왜 60000을 나누는지 잘 이해가 안갑니다. 만약 IBI의 값이 평균 0.7s라하면 평균 370정도 되는데 나누면 bpm이 160정도가 나오는거 같다는 생각이 드는데 제가 이해를 잘못하고 있는건가요??
//////////////////////////////////////////
말씀해주신 방법으로 확인을 해보니 우선 소스에 문제가 있다는걸 확실하게 알 수 있었습니다.
thresh, max, min값이 측정이 잘될때도 있지만 3개 혹은 2개의 값이 겹칠때가 많습니다. 어떻게 해야할지 고민을 많이 해봐야할거 같습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2 새글 22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201 새글 22-06-24
답변 답변 : ATmega128, ATmega28 RS232… master 새글 08:07
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
질문 안녕하세요 atmega128 질문드리고 싶습니다. (자… 댓글[3] dlcldl  22-06-17
질문 아두이노 delay를 millis로 바꾸고 싶습니다. 슨슨슨모  22-06-16
답변 답변 : 아두이노 delay를 millis로 바꾸고 싶… master  22-06-17
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전