Arduinoで作る!!自然滴下流量計の製作

臨床工学技士の皆さんとそうでない方 こんにちは。

もしCEの為のArduino入門を一読されていない場合は先に目を通し、Arduino初心者になっておいてください。

さて、前回はライトガイドケーブルチェッカーの制作をご紹介しましたがどうだったでしょうか?

今回も少し面白い製作例をご紹介します。

今回は自然滴下で使用する輸液療法の際に輸液の滴下から点滴速度(流量)を滴下毎に計測してくれるマシーンを制作していきたいと思います。

題してArduinoで作る!!自然滴下流量計 DropFlowMeterの制作です。

作成にあたり、Arduinoのスケッチ(プログラム)をダウンロードし同様の回路を組む事で作成する事が可能です。ぜひダウンロードください。

自然滴下流量計Arduinoファイル

今回もハードウェアとプログラム解説に関して動画を用意していますのでご参考になさってください。

それではいってみましょう。

とりあえず↓のようなものが作れます。

 

仕組みについて

仕組みは上図の様に輸液セットについている滴下筒に落ちる滴下を自作センサによって、検知します。

検知したら次の滴下までの時間をカウントし滴下間隔から時間あたりの流量を算出するという仕組みになります。

どうして滴下間隔から流量が算出できるのか?ですが、日本で使用されている輸液セットは大きくわけて1mlあたり20滴用と60滴用とがありますね。

ご存知ない方はおられないとは思いますが、復習。

一般的な20滴用は1ml流すのに20滴の滴下が必要になります。ですから一滴あたり1ml÷20=0.05mlになります。

60摘用は同様の計算で一滴あたり0.016667mlになります。

流量というのは 時間あたりの流れる物体量で計算できるので一滴あたりの量がわかっている点滴セットでは一粒あたりの滴下の間隔時間がわかれば流量が計算できるのです。

たとえば1秒に一回的かがあったとしましょう。

秒ごとに0.05ml --->> 0.05ml /sec 

↑ですね。

これを時間あたりの流量であるml/hになおす必要があります

sec(秒)をhour(時間)になおすには、1時間の秒数を両辺にかけなければなりません。60秒×60分=3600sec

0.05×3600 / 3600sec = 180ml/h という事になります。

実際にArduinoのプログラムでは上記のような計算で流量を算出しています。

 

滴下を検出するセンサにも触れておきます。

輸液療法で使用する薬剤は液体です。液体を効率よく検知するには光の吸光度を用いて液体を検出するのが最も良い方法です。

なかでも、可視光線ではなく、液体の吸光度が高く、人間の目には見えない近赤外光を用いて滴下を検出するセンサを自作しています。

近赤外線LEDを照射しておいてその反対側に近赤外光に感度をもったフォトトランジスタを配置し、その中を滴下する雫をフォトトランジスタが検知するといった具合になります。

フォトトランジスタの扱い方などは前回のライトガイドケーブルチェッカーの制作で詳細を述べています。

使用材料

  • Arduino UNO R3×1
  • 近赤外光LED OSI5FU5111C-40 940nm×1
  • フォトトランジスタ L-31ROPT1C 940nm×1
  • 液晶ディスプレイ KKHMF OLED 128×32 0.91inch×1
  • 抵抗器 3kΩ ×2

詳細はクリニカルエンジニアリング 2023年9月号を参照

 

ハードの説明

回路図

ハードウェアに関しては図の通りです。

肝は自作の滴下センサですが、ポイントはフォトトランジスタと近赤外線LEDを直線的に配置する事が重要です。

今回は滴下を確実に検知させる為にフォトトランジスタを直列に繋いでひとつでも近赤外光が遮断されれば、検知したと判断する回路にしています。

タクトスイッチは詳細は後述していますが、プログラム上でモードを変更したりする場合に便利なスイッチになります。

スイッチを押せば接点がくっついて導通しる仕組みです。

Arduinoなどワンボードマイコンではよく使用する部品で、使用の際にはチャタリングという現象の対策が必要になります。

回路図でブザーが使用されていますが、このブザーは電源が入れば音がなるタイプのブザーです。通常圧電ブザーはプログラム上で発振させて音を鳴らすタイプがあるので、部品選びには注意が必要です。

今回は楽をする為に、電圧をくわえれば音が鳴るタイプのPB04-SE12HPRというものを使用しています。

ハードの解説(動画)

 

I2C接続OLEDディスプレイを使う

今回の製作物は測定データから算出した流量をディスプレイに表示するプログラムにしています。

 

タクトスイッチについて

タクトスイッチというのはスイッチを押した時にだけ導通するスイッチの事です。よく電子工作、特にマイコンやワンボードPCに使用されます。

arduinoで使用する場合には少しコツがいります。

それはチャタリング対策とスイッチとマイコンとの接続方法(プルアップ、プルダウン)についてです。

チャタリングについて

チャタリングとはウィキでも説明されている通り、スイッチなどの可動接点などが接触状態になる時に微細な非常に速い機械的振動を起こす現象のことです。

Arduinoでは0Vから5Vになる、もしくはその逆の電圧が変わるタイミングでスイッチが押されたと判断させることが多いのですが、そんなプログラムでチャタリング現象が起こればごく短時間のうちに、一度しかスイッチを押していないのに、何度もスイッチが押されたような挙動になってしまうのです。

ですからチャタリングを起こすような機械的な接点であるタクトスイッチを使用する際にはチャタリング対策としてプログラム上でチャタリング対策をします。

たとえば、チャタリング現象がおこるスイッチを押した後、数msecはプログラム上で任意の時間プログラムを待機させてチャタリングが収まるまで待ったりします。

このようにひとつの部品を使うにもいろいろとお作法があります。

プルアップ・プルダウン

もうひとつタクトスイッチを使用する場合に知識として知っておく必要があるのはプルアップとプルダウンという接続の方法になります。

Arduinoなどのマイコンにスイッチを接続する場合に安定的にスイッチの情報を伝える為に抵抗を使ってあらかじめ電圧を加えておくのがプルアップ、入力するマイコン側をアースに抵抗を介して接続して0Vにしておくことをプルダウンといいます。

なぜこれをしておくことが良いのかというと、マイコンは不安定な電圧を嫌がります。

たとえば、スイッチの出力を読み取る端子がスイッチを押していないのにノイズで1vや2vの不安定な入力があると、スイッチが押されているのかそうでないのか判定できなくなります。

そうならないようにするのです。

詳細は図の通りでプルダウンは入力ピンに抵抗を介してアースに接続しておきます。

タクトスイッチを押せば5Vが入力されます。

プルアップのほうは通常状態で入力ピンに抵抗を介して5Vが接続されていて、タクトスイッチが押されると入力ピンは0Vになるという仕組みです。

スイッチが押された時の入力ピンに出力される電圧がHIGHかLOWで違いがあるので、そこはプログラム上での判定をよく考えなければなりません。

 

 

プログラムの説明

プログラム解説(動画)

 

プログラム解説

 

おわりに