呼吸センサの作成(圧センサを用いて)

呼吸の測定を行いたいと思っているのですが,
既製品の呼吸センサはどうも使用しにくいということもあり,

某既成品の呼吸センサの原理(呼吸によって形状が変化する部品内に圧センサを設置,形状変化に伴い抵抗値が変わることで呼吸を捉える)をDIYで作成できるのでは?ということで作成・計測してみました。

クリアケースをハサミで適当なサイズにカットし、間に圧センサーと消しゴムを挟んであります。このセンサーの両端に伸縮性の低い紐(具体的には信号線)を結びつけ、胴回りに一周させて固定します。呼吸してお腹が出っ張ると、紐がセンサーの両端を引いて、消しゴムが圧力センサーに押し付けられる仕組みになってます。・・・どうやらちゃんと測定できるようです(写真を参照)。

細かい作成方法に関してはもう少ししっかりと作成できてから公開できれば,と思いますので,今回は数枚の写真を掲載します。

ご不明な点・質問等があればコメントに書き込んでいただければと思います。
どうぞよろしくお願いいたします。

IMG_5098 IMG_5101 IMG_5103

皮膚温測定プログラム

ここではArduinoで皮膚温を測る基本的なプログラムを紹介していきます。センサーはLM35DZをA0へ入れることを想定しています。

ファイル:temp1
内容:とりあえずアナログチャンネルから皮膚温を読む

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int analogValue = 0; // アナログ値を格納する変数

void setup(){
Serial.begin(9600); // シリアルポートを9600bpsで開く
}

void loop(){
analogValue = analogRead(0); // アナログピン0から読み取る
float temp;

temp=(double)analogValue/1024*500.0;

Serial.print(temp); //読んだ値をPCへ送る
Serial.println(); // 改行を送信
delay(100); // 100ミリ秒停止
}

ファイル:temp2
内容:10回サンプルし、その平均を表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int v = 0; // アナログ値を格納する変数
float sum;
float average;

void setup(){
Serial.begin(9600); // シリアルポートを9600bpsで開く
}

void loop(){
sum=0;
for(int i=0;i<10;i++){
sum = sum+analogRead(0); // アナログピン0から読み取る
}
average=sum/10.0;
float temp;
temp=(double)average/1024*500.0;

Serial.print(temp); //読んだ値をPCへ送る
Serial.println(); // 改行を送信
delay(100); // 100ミリ秒停止
}

ファイル:temp3
内容:100回サンプルし、その平均を表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int v = 0; // アナログ値を格納する変数
float sum;
float average;

void setup(){
Serial.begin(9600); // シリアルポートを9600bpsで開く
}

void loop(){
sum=0;
for(int i=0;i<100;i++){
sum = sum+analogRead(0); // アナログピン0から読み取る
}
average=sum/100.0;
float temp;
temp=(double)average/1024*500.0;

Serial.print(temp); //読んだ値をPCへ送る
Serial.println(); // 改行を送信
delay(100); // 100ミリ秒停止
}

実際に動作させてみると、サンプル数が多いほど皮膚温の変化が安定していることがわかります。Arduinoはそこそこのサンプル速度が出るので、なるべく多くサンプルし、その平均を求めることで、より正確な温度を求めることができます。