WS230315@同志社大学

Arduino入門
 今回のワークショップでは、生理指標の測定にArduinoを使用します。Arduinoは、電子工作で何かをプロトタイプする場合に使用される開発環境です。用途に応じた様々なタイプのマイクロコンピュータを、ArduinoIDEという単一のインターフェースで使用することができ、世界中の人々が、ありとあらゆるハードウェアをArduino経由でPCに接続しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//プログラム名:Blink
//LEDを点滅させる
void setup()
{
  pinMode(13, OUTPUT); //13番のピンを出力モードに
}
 
void loop()
{
  digitalWrite(13, HIGH); //13をONにする
  delay(1000); //1000ms待つ
  digitalWrite(13, LOW); //13をOFFにする
  delay(1000); //
}

電源およびAD変換部分の組み立て
下の写真と部品リストを照らし合わせ、ブレッドボード上に電源およびAD変換部分の部品をセットしてみましょう。Arduinoに接続できたら、下のプログラム「ADC1」をArduinoに書き込んで動作させてみましょう。プログラムを動作させるには、「Adafruit ADS1x15」ライブラリが必要です。ライブラリのインストール方法、プログラムの動作のさせかたは動画をご覧ください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//プログラム名:ADC1
#include <Wire.h> //I2C通信ライブラリ
#include <Adafruit_ADS1X15.h> //ADS1015ライブラリ
Adafruit_ADS1015 ads; //ADS1015クラスのインスタンス化
  
void setup(void)
{
  Serial.begin(115200);  //シリアル通信開始
  // ADS1015 gain 2/3  input range +/- 6.144V
  ads.begin(); //ADS1015通信開始
}
  
void loop(void)
{
  int16_t results; //AD変換結果
  results = ads.readADC_Differential_0_1();  //差動入力
     
  float   multiplier = 3.0F;  // デフォルトゲイン(2/3倍)における係数
  Serial.print(results * multiplier); //得られたデジタル値をmvに換算しシリアルモニタに表示
  Serial.print(",3000,0");
  Serial.println(); //シリアルモニタ改行
  delay(0);
}

SCC測定アンプの組み立てと測定
さらに、下の写真と部品リストを照らし合わせ、ブレッドボード上にSCC測定アンプの部品をセットしてみましょう。

組み立て手順は自由ですが、下記のような順序でやってみるとやりやすいかもしれません。組み立て中は、念のためArduinoのUSBケーブルを抜いて、回路の電源を切っておきましょう。

部品の配置が終わったら、ArduinoをPCに接続し、プログラム「SCC1」をArduinoに書き込んで動作させてみましょう。
※身体に電極を装着して測定する際は、感電を防止するため、PCから電源を必ず抜くようにしましょう。

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
//プログラム名:SCC1
#include <Wire.h>
#include <Adafruit_ADS1X15.h>
Adafruit_ADS1015 ads;
  
void setup(void)
{
  Serial.begin(115200);
  // ADS1015 gain 8x  input +/- 0.512V
  ads.setGain(GAIN_EIGHT);  //ゲインを8倍に設定
  ads.begin();
}
  
void loop(void)
{
  int16_t results1,results2;
  results1 = ads.readADC_Differential_0_1();  //差動入力
      
  float   multiplier = 0.25F; //ゲイン8倍時の係数
  Serial.print(results1 * multiplier);
  Serial.print(",");
  Serial.print("194,"); //24k Ohm = 42uS
  Serial.print("-7,");  //1M Ohm = 1uS
  Serial.println();
  
  delay(200);
}

ECG測定アンプの組み立てと測定
 下の写真と部品リストを照らし合わせ、ブレッドボード上にECG測定アンプの部品をセットしてみましょう。

組み立て手順は自由ですが、下記のような順序でやってみるとやりやすいかもしれません。組み立て中は、念のためArduinoのUSBケーブルを抜いて、回路の電源を切っておきましょう。

部品の配置が終わったら、ArduinoをPCに接続し、プログラム「ECG1」をArduinoに書き込んで動作させてみましょう。電極は、上記資料を参考に、胸部に装着します。
※身体に電極を装着して測定する際は、感電を防止するため、PCから電源を必ず抜くようにしましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//プログラム名:ECG1
#include <Wire.h> //I2C通信ライブラリ
#include <Adafruit_ADS1X15.h> //ADS1015ライブラリ
Adafruit_ADS1015 ads; //ADS1015クラスのインスタンス化
  
void setup(void)
{
  Serial.begin(115200);  //シリアル通信開始
  // ADS1015 gain 2/3  input range +/- 6.144V
  ads.begin(); //ADS1015通信開始
}
  
void loop(void)
{
  int16_t results; //AD変換結果
  results = ads.readADC_Differential_0_1();  //差動入力
     
  float   multiplier = 3.0F;  // デフォルトゲイン(2/3倍)における係数
  Serial.print(results * multiplier); //得られたデジタル値をmvに換算しシリアルモニタに表示
  Serial.print(",4000,1000");
  Serial.println(); //シリアルモニタ改行
  delay(0);
}

資料
Arduinoで生理指標を測る
右足回路動画

使用部品

TLE2426CLP レールスプリッタ
LM385B-1.2 電圧リファレンス

その他

追記

改善点

  • 作業進行用ブレットボードの用意
  • Ardino開発環境は1.8.19に指定
  • ライブラリinstall時に問題発生多し(MacOS,OneDrive内Desktopなど)
  • 可変抵抗の向き(銀点が見えなくなってしまっている)
  • ICの向き
  • テスト用24kΩ抵抗の用意
  • ディスポ電極を多めに用意

コメントを残す