가입한후 처음으로 자작품을 소개할까 합니다. 별로 대단한 것은 아니고 실생활에 적용할 수도 있을것 같아서 소개 드립니다.제 블로그에 있던것을 옮겨 온 것이라서 경어를 쓰지 않은 점 이해부탁드립니다.
---------------------------------------------------------------------------------------------------------------
ATMega128에서 직접 입력을 받아 심박수를 계산한후, LCD에 표시하도록 하였다. 첨부된 회로도를 보면 최종 출력단은 NPN형 트랜지스터로 TTL 레벨로 만들었다. 왜냐하면 LM358은 Rail-to-Rail OPAmp가 아니어서 0-Vcc Full Swing을 못하기 때문에 MCU에서 인식할 수 있는 신호레벨로 만들기 위해 추가하였다. NPN형으로 구성했기 때문에 최종 출력신호는
반전되지만 신호의 주기를 측정하는 것이 목적이기 때문에 반전된 신호라도 상관없다.
![](https://t1.daumcdn.net/cfile/cafe/1122A74C4F620CFB0B)
위의 보드는 원래 GPS 정보표시기 목적으로 만든 것인데, GPS 모듈을 떼어내고 대신 맥박 증폭기를 부착한 것이다.
신호 증폭단 회로도(PDF Format) :
HeartRate.pdf
작동 동영상:
위의 동영상에서 LED가 점멸될때가 맥박이 뛸때를 감지한 싯점이다. 그 과정을 설명하면 아래와 같다.
적외선 LED에서 투사된 적외선이 말초혈관에 흐르는 적혈구에서 반사되면, 반사된 신호는 포토다이오드로 입력이 된다.
이때 미세한 전압의 변동 성분에서 HPF를 거치면서 DC성분은 제거되고, LPF로 입력된다. 이때 고주파 노이즈가 제거되고 순수한 신호만 추출되면 OPAMP 2단을 거치면서 511 x 511 배 만큼 신호가 증폭된다.
두번째 OPAMP의 최종 출력은 0- (Vcc-1.5) 사이를 Swing하기 때문에 0-Vcc사이를 Swing하도록 NPN-TR로 Switch하면 된다. 기초적인 회로를 공부한 사람이라면 이 회로는 TR의 Cut-Off와 Saturation 영역만을 사용한 Switching회로라는 것을 알 수 있을 것이다.
최종적으로 TR의 출력을 ATMage128의 25번 핀 즉 External Interrupt 0 에 입력하여 Falling Edge 사이의 주기를 측정하여, 분당 맥박수를 역으로 환산하면 된다.
향후에 이 장치를 개선해야 할것이 있다면 다음과 같은 점을 개선해야 할 것 같다. 햇빛이나 삼파장 형광등 아래에서는
수광부와 발광부가 외부환경으로 부터 기구적으로 차폐되지 않으면 노이즈 인입이 발생하여, 간혹 에러가 발생한다. 햇빛은 원래 적외선이 포함되어 있고, 삼파장 형광등은 임펄스성 노이즈가 포함되어 있다. 그래서 이러한 문제점을 개선하려면 아래와 같은 방법을 써야한다. 물론 예산문제로 실제 개선은 할 지 않할지는 장담 못한다. 단지 개선 방법은 경험상으로 알고 있다.
개선방법
1. 적외선 LED는 출력이 강한 것을 사용한다. OSRAM에서 판매하는 IR-LED는 특정 파장에 출력도 균일하고 강하게 나
오는 것이 있다.
2. 현재 수신부는 포토다이오드와 증폭/필터로 구성되어 있는데, TAOS사에서 나오는 센서는 수광부와 앰프부분이 원칩
화되어 있어 크기도 아주 작고 사용하기 편리하게 되어 있다. 물론 내장된 앰프의 Gain도 프로그램으로 조작이 가능
하며, 전압이 디지탈로 출력되어 외부 노이즈의 영향을 받지 않는다.
3. 마지막 개선사항은 전자제품 리모콘 수광부에도 있는 사항이지만, 수광부나 발광부가 기구적으로 지향성이 있어야
외부신호의 간섭을 덜 받는다. 그리고 수광부 입구는 적외선만 통과시키는 필터를 쓰면 좋다. 적외선 필터는 필름의
현상하지 않는 부분을 잘라서 써도 된다. 요즘 쉽게 구할 수 있을 지는 모르겠다.
[향후계획]
현재는 ATMega128을 사용한 시험용 보드를 사용하였으나, 향후에는 좀더 작고 저렴한 ATMega 시리즈를 사용하여 다림질 공법으로 제작할 예정입니다. 그 때는 필수 부품만 적용하여 초소형으로 만들 예정입니다.
첫댓글 와우~~대단한것을 설계하셨군요.
감사합니다. 외국 사이트에 비슷한 것이 있는데, 그냥 가지고 있는 부품만으로 흉내를 내 본것입니다. 외국 사이트에서는 15초동안 맥박수를 세서 곱하기 4를 한것인데, 그런 측정방법은 최소한 15초를 기다려야 하기 때문에 저는 다른 알고리즘으로 한 것입니다. 최초 4번은 레벨칼리브레이션이고 다음 4번은 주기를 측정해서 평균값으로 분당 맥박수를 역으로 환산한 것입니다. 사람에 따라 다르겠지만 대략 5~6초만에 분당맥박수 측정을 할 수 있습니다. 그외에 소프트웨어 필터 알고리즘도 들어가 있습니다. 차기엔 FFT도 한번 적용해서 해볼 생각입니다. 의외로 ATmega가 8비트 마이컴인데도 RISC칩이라서 처리속도가 엄청납니다.
블로그에서도 보았는데 미소신호를 안정적으로 증폭하는 게 핵심이네요.
예 맞습니다. 증폭을 엄청했기 때문에 조그마한 노이즈에도 민감하게 동작합니다. S/N을 높이는 방법은 비싼부품을 써야하는데, 의료장비에 특화된 부품들이라서 만만하게 살만한 부품들이 아닙니다.그래서 주변에서 쉽게 구하거나 가지고 있는 부품만으로 어렵사리 구현을 해 보았는데, 그럭저럭 동작을 합니다. IR LED는 못 쓰는 리모콘에서 뽑았고, 포토 다이오드은 재활용쓰레기를 뒤져서 VTR에서 뽑은 겁니다. VTR 테이프 카세트 끝과 시작부분을 감지하는 센서부분에 있던 것입니다.
의료장비의 일종인 심장박동수 계측기를 어렵게 자작완성 축하 드립니다..~ 짝! 짝! 짝!
감사합니다. 다림질 PCB로 한 버젼이 완성되면, 필요하신 분들을 위해 실행코드와 PCB Layout을 풀겠습니다. 그럭저럭 생활용품으로 쓸만은 할겁니다.
멋지십니다..
그런 원리로 측정하는 것이군요. 건강검진 할 때 측정하면 어떤 원리일까 궁금했는데 상세한 설명 잘 봤습니다. 감사합니다 꾸벅
안녕하세요. 건강검진할때 팔을 기구에 넣고 혈압과 맥박을 측정하는 장치는 여기에 소개한 장치처럼 광학적인이 방법이 아닐겁니다. 추측하건데 팔 전체에 혈액이 공급되면 기구물에 가해지는 압력을 측정해서 하는것으로 판단됩니다. 압력측정에 사용되는 대표적인 센서는 스트레인 게이지를 사용하는것으로 알고 있습니다.
좋은 정보에 감사드립니다.
무소님, 잘 보았습니다.
ATMega128 ISP를 가지고 있는데 실행코드 올려 주시면 고맙게 쓰겠습니다.
PCB Layout도 올려 주신다니 다림질해서 한번 만들어 보겠습니다.
ATMega128은 64핀이라서 다림질 공법으로 하기에는 불량이 나올것 같아서 ATmega8이나 Atmega48로 재설계할 예정입니다.
전번에 똑같은 64핀인 ATMega64를 다림질 공법으로 할때 애를 먹어서요.
그것들은 32핀이라서 땜질하기가 용이하고, ATmega128보다는 훨씬 저렴합니다. 그리고 저는 DIP타입은 선호하지는 않습니다.
DIP 타입은 비싸고 PCB도 많이 차지해서 TQFP 타입을 많이 사용합니다. 아마도 DIP타입보다는 2/3 가격 정도일겁니다.
그럼 다림질 공법으로 검증이 완료되면 관련 자료를 정리해서 카페에 올리도록 하겠습니다. 차후 개인 프로젝트중 한개로 IT기기와 라디오와의 결합을 생각하고
있습니다. 많은 가르침 주세요^^.
잠시 업무중에 짬을 내서 온라인 부품판매점을 검색해보니 ATMega8 가격이 부가세 미포함가로 TQFP : 1800원 DIP: 4500원 입니다. TQFP타입이 절반이하 가격입니다. 때로는 전문적으로 중고 PCB를 파는 곳에서 괜찮은 것을 구할때도 있습니다. 인터넷에서 "김원규 만물상"을 검색하시면 괜찮은 물건들이 많이 있습니다. 물론 저는 그곳하고 직접적인 관계는 없는 사람이고 필요한 물건이 있을때마다 자주 검색하는 곳입니다. 더 싸게 물건들을 파는 곳이 있으면 소개부탁드립니다. 천기누설이 아니라면요^^.
무소님, 좋은 정보 고맙습니다.
근디 저는 아직 무소님처럼 유능자가 아니랍니다.
작년에 입문했걸랑요.