Top > Pulsimeter_NJL5303R
HTML convert time to 0.033 sec.


JRCのNJL5303Rを使った脈拍計(心拍計)(の自作)

Last-modified: 2016-06-10 (金) 18:52:35
...
初出 2014-12-7
最終更新 2016-2-11
注:脈拍≒心拍ですが、心臓から離れた箇所で測る拍のことを普通、心拍とは呼びません。脈拍と呼びます。
 

緑色LEDを採用していて脈拍計測に最適だというフォトリフレクタNJL5303R。ここでも高感度と評価されていますね。多分既にスマートフォンとかウェアラブル機器に多数採用されているでしょう。
実は1年ほど前(2013年末)にサンプルを手に入れていました。
遅まきながらやっと今年(2014年)の秋に脈拍計に仕立てみました。

 

Pulsimeter_NJL5303R_1_s.jpg
あくまで光による脈拍計測がどんな具合か体験するために作ってみただけです。なので外観なんかは本来は見せない方がいいかもしれません。
現状は開発用として、スイッチのノブ用に開けた穴からスイッチとCMOSレベル232Cのケーブルを取り出しています。
NJL5303Rは(黒く化粧された)サブ基板に取り付けてあります。現在は脈拍は指の腹だけで計測していますが、当初は指に巻きつけたり、いろいろ試す必要があったのでこのような形式になっています。

 

通常、親指の腹をNJL5303Rが光っているところにあてて脈拍を計測するんですが、その際、親指とその周辺の力を完全に抜く必要があります。どうしても力を抜くことができない人はセンサーを指とか手首に巻きつけて計測する方式を検討する必要があります。あるいは指の関節の側面で測ってみるとか。

 

私自身はこの開発中に十分に慣れたこともあるので、普段は確実に、親指をあてた2、3秒後、脈拍計から正しい脈拍数が表示され始めます。でも右手の握力を使う運動をした直後等、右掌の筋肉が強張っている状態ではどうしても直ぐに正しい脈拍を計測することができません。
(2016-2-1追記)結論的に言うと、うまく測れるかどうかは「血流量次第」です。指や掌が“普通に”暖かければ、誰でも滞りなく脈拍計測できます。

指で計測する場合の血流量の問題
本機はケースを右手片手で持って、センサ部に右手親指の第一関節付近をあてて計測をおこなうスタイルをデフォルトの使用方法としています。
常時装着しないタイプの脈拍計の場合、指で計測できるというのは便利なのですが、指ならではの問題もあります。指は(冬季などに)一定以上冷やされると極端に血流量が低下してしまいます。そうなると(少なくとも本機の場合)正しい脈拍を計測できません。本機は基本的には指をあてれば自動的にキャリブレートされて数秒後に正しい脈拍(≒心拍)が表示されるものなのですが、指が(掌が)冷えきっている状態だと心拍とズレた誤った脈拍が計測されたりします(※)。こうした問題は手首とか胸で計測するタイプの脈拍(心拍)計だとほぼ生じません。
※そのような場合は2回連続して測ることをお勧めします。2回連続して誤った値が計測されることは殆どない筈です。もちろん本来は体や指を温めることが望ましい対策であることは言うまでもありません。
 

Pulsimeter_NJL5303R_2_s.jpgPulsimeter_NJL5303R_3_s.jpg
当初は一旦、トラ技Jr2013年11・12月号準拠(フォトリフレクタと各部品の定数違い)の、単純にしきい値のみで脈拍のあり・なしを判定する方式の回路を作りました。
その後、脈波の頂点を検出する方式の回路へと模様替えしました。つまりコンパレータに繋いでいた線をPICのアナログ入力に繋ぎ直したということです。
模様替えは当初から計画していたのでソケットは当初からPIC18F14K50用の20ピンでした。
半固定抵抗は現在は不要です(念のため閾値方式も再びいつでも試せるように、半固定抵抗で電源電圧の分圧を発生するように接続を変え、さらにそれをPIC18F14K50のAN7に繋げてあります)。
ストロベリーリナックスの昇圧モジュールで5Vを供給しています。電池3本を使って4.8V〜3.5Vくらいの範囲で動作する仕様でも良かったんですが、液晶のコントラスト調整用半固定抵抗を追加するのが面倒だったし、モジュールが余ってたので、こうなりました。

 

回路図
ダウンロード・回路図・2種(BSch3V形式)  filePulsimeter_circt.zip

 

トラ技Jr2013年11・12月号準拠(フォトリフレクタの型番と各抵抗の定数違い)の回路図
Pulsimeter_NJL5303R_circt_1_s.png
これらの定数が最適なものだとは全然思っていません。けど”一応”まともに動作します。
一応「トラ技準拠」と書いていますが、わかりやすくする為にそう書いただけであって、特別な回路ではなく、多数のサイトで見つかるありふれた回路と同じです。
トラ技JrではセンサにロームのRPR-220を使用しています。
トラ技2014年10月号に「LED&光センサ一体ICで作る『指タッチUSB脈波計』」という記事があります。これはmbedを用いていて本ページの内容より高度です。
(2015-2-28追記)インターフェース2015年4月号の特集は「生体センシング入門」です。トラ技2014年10月号なんかよりずっと内容が豊富です。こちらもmbedクラスの演算能力を前提とした記事が並んでいます。8ビットマイコンで基礎を体験するだけなら本ページの内容も悪くないと思います。

 

頂点検出法を採用した場合の(現在の)回路図
Pulsimeter_NJL5303R_circt_2_s.png
半固定抵抗は(使ってないので)記載していません。
(2015-11-30追記)抵抗を2個交換しました。100k→56k、470k→1M
交換の理由ですが、人間には調整能力があるので抵抗の定数が多少合ってなくても、慣れると人間の方で合わせちゃうんですね。前の値は今よりもっとその能力に頼ったものだったと思います。前の値は毎日使っていると問題なくても、しばらく使わなくて、調整感覚を忘れてしまうとうまく動かないという傾向がありました。今回の値だと今のところ調子が良くて、のせるだけって感じです。まっ、これも慣れのせいかもしれないんですけどね。
(2016-1-30追記)回路図の方は修正していませんがファームウェアの方にはバックライトの制御処理を加え、RC0を割りあてました。適宜、必要とする方は配線して下さい。

 

ソース
↓xc8 Ver.35では多分コンパイルできません。Ver. 1.34等を用いて下さい。
頂点検出法を採用したソースのダウンロード(xc8用)  file14k50_Pulsimeter.zip 2016-2-11更新(サンプル数が充分揃う前の段階では脈拍を表示しないようにしました。たとえば定常脈拍検出時のホールド表示の後も指をあてたままにしておくと、非表示→ほぼ一定値→ホールド値を繰り返します) 2016-1-30更新(脈拍が定常値となったタイミングでその脈拍値を4秒間ホールド表示するように修正しました。)
何も参考にせず、何の工夫もなく書いた頂点検出法のソースです。試用していて「あっ、ここ(に関するソースを)直そう」と思うこともよくあるんですが、波形を見てみると大抵酷く乱れていて、アナログ回路とか、センサーへの指ののあて方(力の抜き方)の問題だと判明することが殆どです。
(2015-1-3追記)商用製品のメーカー(エプソン)の脈拍計だと、私だと諦めてるくらいの酷く乱れた波形でも、専用チップでGセンサー等の情報と総合して補正して、正確に脈拍が測れるようです。

Error: Flash Player Cannot Installed.

 

上の動画を視た後だとショボい感は否めないですが、
頂点検出法のイメージ
Pulsimeter_NJL5303R_4_s.png
ある大きさ以上の山形波形を探す方法が(私の言うところの)頂点検出方法です。
見つけた時点で必ず少し頂点を過ぎているわけで、ソースにはその補正処理も含んでいます。
この方法を使うとしきい値のみで脈拍のあり・なしを判定する方法と違ってしきい値の調整が不要です。

 

NJL5303Rのハンドリングについて
NJL5303Rはいわゆる米粒サイズのチップです。しかし4端子しかないのでカッターナイフで好みの形式の変換基板を作ることも容易です。ちなみに私はこの前、端子が6個ある米粒サイズチップの変換基板をカッターナイフで2枚作り、2枚とも接続に成功しました。ということで、小さいものがどうしてもよく見えないとかじゃなければ特殊な変換基板が手に入らなくてもどうにかできるものです。でもRPR-220なら手間いらずなのも事実です。しかしRPR-220は商用の脈拍計にはデカすぎて決して使われないと思われるので私としては興味が湧きませんでした。

 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White