完全自作 arduinoでパルスオキシメーター 〜プログラム解説編〜

前回の記事では”完全自作パルスオキシメーター”のハードウェアについて説明してきました。

動画は↓何回もいいか・・(笑)

今回は、ハードウェアで計測した赤色LEDと赤外LEDの透過光から得られた動脈波形から心拍(HeatRate)と酸素飽和度(SPO2)を実際に算出する、パルスオキシメーターのキモであるプログラムを解説しようと思います。

ちなみに私はプロのプログラマーではなく、地方で働く臨床工学技士という職種の医療従事者です。

ですので、プログラムは可読性が悪いかもしれませんし、上手い方法ではなかもしれません。こうすればもっと良いよなどあれば教えてください

わからない事があればなんなりと聞いてください、それとご指摘も受けます。

ただ批判はしないでね(笑)

 

自作パルスオキシメーターのおさらい

前回の記事ではハードウェアについて説明していますが、少`しだけ制御について説明していますが、今回も少しだけプログラムの動き方について、つまり制御について触れておきます。

制御フロー

スポンサードリンク

もう制御に関してはフローチャートのまんまです。

赤色光や赤外光LEDの光を指に照射しフォトダイオードで透過光を受光するとフォトダイオードで検知できる光強度をオーバーしたり、脈を検知するには低い透過度の場合があります。

指など簡単にうごく対象の場合、室内の光などの外来光の影響をフォトダイオードはバリクソ影響を受けます。

ですので、フォトダイオードにいい状態の透過光を常に安定的に照射する制御にしなければ安定した酸素飽和度は算出できません。

 

常時同じ光強度で照射するだけでは指を少し動かしたり、センサ位置を変えただけで簡単に光強度が強くなったり弱くなったりしてうまくいきません。

ですので、センサが読み取る光強度をMAX強度を100%として60%から90%の範囲で受光できるように常にLED駆動電圧を調節する制御をしています。

 

さらにですが、LEDの光強度を調節しても透過光が強かったり、弱かったりする場合はA/D変換コントローラーのゲイン=プログラムゲインアンプを変更させてより細かなパルスを読み取るようにしています。

ざっくりした制御の説明はこれで終わりです。

まぁフローチャートの方がより詳しく説明しているかな。

 

プログラムについて

プログラムの流れ

プログラムの全体像についてですが、まずはADS1115のA/DコントローラーやMCP4725のD/Aコントローラーを使う為のライブラリ、波形のDC成分を算出する移動平均ライブラリを使用する為の設定を行なう初期設定、いわゆるsetupをおこないます。

そして、arduino(ESP8266)で使用するIOpinの設定やI2C通信で使うPIN設定、赤色・赤外LEDを駆動するPIN設定などをおこないます。これもsetupですね。

上記が終われば測定モードに移行し、指が挟まれていないと自動的にスリープモードになり、指が挟まれるまで待ちます。

指が挟まればすぐに測定モードに移行しフローチャートの如く心拍と酸素飽和度を算出するという流れです。

ちなみにですが、脈波で心拍を一泊ごとに検知するのですが、この検知ができないと酸素飽和度が計算できません。

ですので脈波の波高値が小さいと結果酸素飽和度は算出できません。

このあたりがプログラム上での数値の加減で調節しましたが、どうでしょう。精度に影響ができますので、今後ブラッシュアップが必要かもしれまん。

 

実際のプログラム

なにわともあれ、実際にプログラムをみてください。

少しでもarduinoIDEやExcelのif分岐などをいじった事があればすぐに理解できると思います。

とりあえずarduinoのinoファイルをUPしておきます。ダウンロードしたいかたはどうぞ。

HandmadepulseOximeter.ino

ESP8266をお持ちならダウンロードファイルを書き込んで前回記事のハードウェアを作れば自作パルスオキシメーターの出来上がりです。

 

ここからはプログラムソースを分解して説明していきまうす。

分けてますがすべて繋がっていて一つのソースです。

まずは設定にかかわるソースを説明しまーす。というかソース中に説明書いてるのでその通りです。

次のソースが実際のセンサデータ取得やメイン処理に関わるプログラムになります。

もっと細分化すればよかったですが、ちょっとめんどくさくなったので一気に出します。

例の如くソース内で説明してます。

プログラム的には順を追って読んでいけば難しくないです。ただ長いだけ・・

わからない事があればなんなりと聞いてみてください。

それではまた!!

スポンサードリンク
カテゴリー: 制作事例 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください