目次
電源ケーブルチェッカーの自作について
輸液ポンプなどの移動可能な医療機器では電源ケーブルの抜き差しも非常に多く、接触部の劣化や物理的な曲げや衝撃により、ケーブル自体の損傷から断線や接触不良などが発生する事があります。
場合によっては電源ケーブルの内部で短絡、いわゆるショートがおこって火を吹くっていうシュチュエーションも起こりかねません。
今回はそんな場合にはよっては危険な故障状態になりかねない電源ケーブルをチェックするチェッカーを自作しようと思います。
ちなみにですが、そんなもんテスターで計測したら簡単にチェックできるやんとお思いでしょうが、正確なケーブルの抵抗値を計測できるようなテスターは市販品だと数十万円しますし、電極へのテスターの当て方しだいで数Ωのずれが生じるくらいシビアです。
一般的なテスターだと0Ω以下の精度は期待できません。
そんな電源ケーブルのチェッカーですが、簡単な仕組みでしかも簡単なプログラムだけで作っちゃいます。
部品はたったの5個程度です。
ArduinoIDEでESP8266とADS1115というA/D変換装置を使い実現します。
めっちゃ簡単なんで興味のある臨床工学技士さんはぜひ作ってみてください。
とりあえず、動画で概要をチェックしてみて↓
電源ケーブルの抵抗値について
電源ケーブルですが、わずかながら抵抗値が存在します。この抵抗値が上昇すればケーブル自体の異常や接触部の異常である事がわかります。
それでは正常なケーブルの抵抗値はどの程度なのでしょうか?
電源ケーブルの太さはAWGという単位で表されるのが一般的らしく、テルモの輸液ポンプ用ケーブルではAWG18の太さの電線が使用されている事がわかりました。
このAWG18(18ゲージの太さらしい)の電線表面積は0.824㎟で抵抗値は0.02094〔Ω/m〕です。
一般的な電源ケーブルでは2.5mのものが多く、2.5m×0.02094Ωですからだいたいケーブル自体の抵抗は0.05Ωくらいになるのが正常です。
しかし、ケーブルの接続部が削れて接触があまいと接触抵抗が増えて抵抗値が増大したりするのでこの抵抗値が絶対的に正解というのはないです。
ただ1Ωを超えるような抵抗値は異常だと思います。
電源ケーブルはしなやかに曲がるように、より線といって細い銅線をよりあわせて作っています。太いケーブルほど抵抗値が下がるんです。↓
上記より、キレかかった電源ケーブルも抵抗値が上昇してもしかしたら検知できたらいいなぁーっと思っています。
チェッカーの構成
チェッカーの構成はArduinoIDEでプログラムできるESP8266と16bitA/D変換素子のADS1115を使います。↓
ESP8266
esp8266はarduinoIDEでarduinoボードとして認識できてプログラミングできます。
またwifiにも対応していてIOTにはもってこいさらに安いのでいう事なしです。最高です。
もうひとつがADS1115です。↓
ものすごく安いのに16bitの高いA/D変換ができてarduino素子とも相性がよいI2C通信で簡単に接続・計測ができます。
ほんとっおすすめです。
上記の部品と数点の抵抗器だけで実現可能です。
コストはだいたい1500円ってとこですね。
激安です。
チャッカーの原理について
チェッカーの原理ですが↓の写真が全てです。
いわいる分圧の式で抵抗値を算出します。
むっちゃ簡単です。
中学校の理科の知識です。
なんで120Ωの抵抗をつかっているのかというと、電源ケーブルの抵抗値は限りなく小さいはずなので、分圧比でケーブルにかかる電圧を大きくするには120Ωのところの抵抗は小さいほうがよいです。
しかし、電源をESP8266からとるとなると、流せる電流値にも上限がるので安定的に電流がながせるだろう抵抗値として120Ωを選定しました。(部品箱にあったからですが)
分圧した電位をADS1115にてA/D変換して読み取ります。
読みとった値をいろいろ加工して電圧値と抵抗値に変換してPC画面に表示します。
表示するのにvisualstudioで作成したソフトを使ってます。接続方法はシリアル接続です。
プログラムについて
プログラムについてはPCソフトも自作したのでその兼ね合いで少し複雑になっています。
PCソフト側で表示させなければ簡単なんですが・・・
一応のせておきます。
わかる人がみればわかるのですが、ESP8266でデータを10個まず貯めてたまったら、一気にPC側に送信します。
PC側はそれに応じて10個分のデータから値を算出します。
なぜそのようにしているのかというとグラフを作ろうとしていたからです。でも不要になったんでグラフ化はしてませんが、データのやりとりの仕組みは面倒なので変えませんでした。
2022年1月30日↑むっちゃ分かりにくいのでpc側でソフトを作らなくてもA/D変換できてArduinoIDE側のシリアルモニタで値が確認できたり、シリアル値をグラフ化するようにプログラム(arduino側)を変更しました。
ADS1115は4chのAD変換ができますが、2chを使って作動入力ができます。
作動入力にするとノイズが少なくなるので、今回は作動入力として最大で2chで動かします。
1chづつ4ch使う事もできます。
プログラムですが、前はpcソフトと連動させるためにPCとシリアル接続して、計測の指示がでたら、計測するようにしていいましたが、電源投入からA/D変換する仕様に変更しています。
また、ESP8266NodeMcuで作成しましたが、ESP8266 Wroom02 でも同様に動くはずです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
//cablecheker ESP8266 //ADS1115を使ってA/D変換します #include <Wire.h>//I2Cを使う為に必要 #include <ADS1X15.h>//16bitADC1115のライブラリ ADS1115 ADS(0x48);//ADS1115のインスタンスを作成() //電線の抵抗を測る時に電圧をかける為に使用 int L1_V = 14;//ESP8266 D5 int L2_V =12;//ESP8266 D6 //A/D変換した後にデジタル値を格納する float L1=0; float L2=0; //float GNDSence; //not use //電線のL1側の抵抗測定 8msecかかる void L1read(){ digitalWrite(L1_V,HIGH); L1 = ADS.readADC_Differential_0_1(); digitalWrite(L1_V,LOW); } //電線のL2側の抵抗測定 8msecかかる void L2read(){ digitalWrite(L2_V,HIGH); L2 = ADS.readADC_Differential_2_3(); digitalWrite(L2_V,LOW); } //セットアップ void setup() { //シリアルのスピード Serial.begin(115200); //I2Cの結線のピン決めESP8266の4がSDA、5がSCLに設定 Wire.begin(4,5);//SDA,SCL ESP8266 D2>>4 D1>>5 //電源ケーブルに印加するピンのsetup pinMode(L1_V,OUTPUT); pinMode(L2_V,OUTPUT); //基盤上のLEDの設定 pinMode(LED_BUILTIN,OUTPUT); //とりあえず出力を0vにして初期化 digitalWrite(L1_V,LOW); digitalWrite(L2_V,LOW); //ここはADS1115のセットアップ /* ----- Setting of ADS1115 AD converter ----- */ ADS.begin(); ADS.setMode(1);//mode 0:continuous 1:single ADS.setDataRate(4);//datarate860sps ads1115 time 1/860=1.16279msec fastest 0-7 128sps>8msec ADS.setGain(16);//PGA value +-1.024V 4>1.024v 8>0.512v 16>0.256v } //メインの処理 電源投入からすぐにAD変換してシリアル通信で変換した値を送信している //A/D変換の時間を考慮すると14msecごとにシリアル通信で値を送信する仕組み void loop() { L1read(); L2read(); Serial.print(L1); Serial.print(","); Serial.println(L2); } //プログラムエンド// |
しかしデータどりはかなり簡単でADS1115のライブラリを使ってA/D変換して電圧と抵抗値をだしているだけです。
動画をごらんになったらわかるのですが、キレかかっている電源ケーブルを検出する事はできませんでした。課題について
なぜなら、キレかかっても少しも抵抗値が上昇しないんです。
だいたい銅線を一本にしても元の抵抗値より0.05Ω上昇する程度です。
電位でいうと1mv程度上昇する程度です。
分解能が0.1mv程度なので十分検出可能ですが、ケーブルによって抵抗値がバラバラだし、その日の接触抵抗によっても抵抗値が変動するのでキレかかったケーブルをみつけるのは簡単ではないです。
ただ、断線や接触がわる電源ケーブルをみつけるのにはとても効果があると身をもって実感する事ができました。
結線について
ESP8266 NodeMCUでの接続
ADS1115の3.3vの電源はESP8266からとっています。
ESP8266 Wroom02接続
ほぼ一緒です。プログラムも同じ記載でOKなはずです。
計測値の確認について
さいごに
作って、実験してみないとわからない事だらけですね。
それではまた!!