はじめに
「ボクのArduino工作ノート」改訂版 (鈴木哲哉 著) という書籍に、「指先脈拍計」という製作記事があります。フォトリフレクタを使って指先で脈拍を測定する内容に興味を惹かれ、PICマイコンで試してみました。
概要
脈拍計測の仕組みを理解するため、血液中のヘモグロビンについて簡単に解説します。赤血球中のヘモグロビンは、体内中の組織に酸素を運ぶ役割があり、酸素と結びついた酸化ヘモグロビン(HbO2)と、酸素を放出した還元ヘモグロビン(Hb)の状態を遷移します。ヘモグロビンの吸収スペクトル(下図)をみると、光の波長に対する吸収係数(光の吸収度合い)はHbO2とHbで違うことが分かります。これは光の反射が、HbO2とHbで異なることを意味します。
HbO2とHbは、脈拍に同期して遷移を繰り返すので、吸収係数も脈拍の周期で変化します。この変化を赤外光の反射で捉えることで、脈拍を計測するものです。
方法
実験に使用したフォトリフレクタ LBR-127HLD は、赤外LEDの反射をフォトトランジスタで受光する光センサーです。本来の用途は近接物の検出ですが、これを指先のヘモグロビンの反射検出に利用します。指先には多くの毛細血管が張り巡らされているので、比較的反射が得られやすく、指先の計測は理に適っています。
とは言え、フォトリフレクタが検出する指先の脈波信号は非常に微弱なため、マイコンで扱うにはTTLレベルのHi、2V以上に信号を増幅する必要があります。信号増幅は、用途に応じたオペアンプを使用するのが一般的ですが、実験では2つのオペアンプモジュールを内蔵したPIC16F1705を使用しました。これにより、信号増幅と信号処理の両方をマイコンだけで行うことができます。
下は、前出記事「指先脈拍計」の信号増幅回路構成で、本実験もこの内容をそのまま踏襲しました。(図中のOPA1,OPA2は、PICマイコン内蔵オペアンプモジュール)
脈波は交流信号なので、単一電源のオペアンプで増幅するにはバイアスを印加する必要があります。このため、電源電圧5Vを抵抗で分圧して1.634Vのバイアスを印加しています。2V以下なので、マイコンの信号処理には影響しません。
一方、フォトリフレクタからの信号は、オペアンプx2段の反転増幅回路によって -37 x -3.7 = 137倍に増幅することで数Vの出力を得ます。また、増幅回路はバンドパス・フィルタも兼ねていて、1~28Hzの周波数帯を通過させます。これは、毎分60回~1680回に相当します。
結果
先ず、ブレッドボードに回路を組んで自身の脈波を観察しました。下は、フォトリフレクタに指先を置いた状態のOutput信号をオシロスコープで観察した様子です。はっきりと脈波が確認できました。(不整脈はなさそうで安心しました)
次は、脈波のピーク間の時間から周期を求めます。
実験では、PICマイコン内蔵タイマーモジュールで20ms毎に割り込みをかけ、都度脈波をサンプリング(AD変換)します。閾値は、脈波の山を検知するためのもので、閾値 < サンプリング値 になったらピーク検出を開始します。ピーク検出の方法は、最大値を求めるアルゴリズムと同じです。ここでは、脈波(X番目)の山を検知したら、一つ前のサンプリング値(Prev)と、現在のサンプリング値(Result)の比較を開始し、Prev < Result ならピーク未検出としてResultをPrevに記録します。Prev > Result ならピーク検出とし、サンプリングのカウントを開始します。次の脈波(X+1番目)も同様な方法でピークを検出、その時のサンプリングカウント(n)を取得して、 60 / (サンプリング周期[sec] x n) の計算式から脈拍を算出します。
一方、フォトリフレクタの指の位置や状態によっては、脈波が安定せず検知できない場合があります。このため、サンプリングカウントに上限を設け、それを超えたらピーク検出失敗として最初からやり直します。また、一般成人の安静時の脈拍数は60~90回/分とのことから、これを外れた値は誤りとして表示をスキップします。
下は、計測の様子です。液晶表示器の1行目にサンプリングAD変換値(参考)、2行目に脈拍を表示しています。計測脈拍は多少バラツキがあり、市販の医療機器のようにはいきませんが、同時に測定した血圧計による心拍数とほぼ同じ結果でした。ただ、計測中にフリーズするときがあり、解除のためリセットスイッチを付けました。
感想
フォトリフレクタは、赤外光の反射の有無による物体検出以外に、反射の変化を捉えることで脈波を検知する使い方があることが分かりました。赤外線は、ヒーター,通信,赤外線カメラ,物性分析,医療など様々な分野で使われているので、赤外線センサーの応用は更に広がるかもしれません。
– 以上 –
Appendix
PIC16F1705内蔵オペアンプモジュールは、外部帰還を必要とする標準的な3端子のレール・ツー・レールのデバイスですが、仕様についてはスペックシートに下表のような最低限のTyp.値(公称値)の記載のみで、実際の特性バラツキは分かりません。
内蔵オペアンプは、精度を必要としない信号増幅やバッファ(ボルテージ・フォロワ)に使うには便利ですが、精度を要したり位相マージンを確保したい場合は、それに見合ったオペアンプを選択する方が良いでしょう。