ひずみゲージ奮闘記 – Arduino編(Round1)

配線図(1) 電子工作
配線図(1)

はじめに

 近く、カーボンパイプの荷重試験の予定があるので、Arduinoを使ったひずみ計測を試してみました。

 おそらく長い闘いになるため、今回は Round1 としました。

下ごしらえ🐡

  • ひずみゲージの準備
  • アンプの準備
  • ブリッジ回路の準備
  • コード作成

ひずみゲージの準備

 今回は、共和電業さんのKFGS-5-120-C1-11という汎用箔ひずみゲージを使用することとしました。本来であれば、複合材料用のシリーズを使用したかったのですが、個人向けへの販売は行っていないということでフラれました。汎用箔シリーズはamazonで簡単に購入できます。

 汎用と複合材料用の主な違いは、温度補償範囲と対象の線膨張係数みたいですが、今回の試験においては汎用でもなんとかなりそうなのでとりあえずやってみます。。

主な仕様:KFGS 汎用箔ひずみゲージ - 製品情報|共和電業
世界最高水準の品質を追求したひずみゲージです。

アンプの準備

 今回アンプとして使用する基板がコチラ。

HX711使用 ロードセル用ADコンバータ モジュール基板: 半導体 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作HX711使用 ロードセル用ADコンバータ モジュール基板秋月電子通商 電子部品通信販売

 本来の用途は、 ロードセル用のADコンバータみたいですが、ひずみゲージもほぼ同じ原理なので使えるだろう、ということで試してみました。ただ、非線形性やノイズが少し心配ですが、校正係数やフィルタ処理などを使えば何とかなるでしょう。今回はとりあえずそれらしい値が出れば良しとさせてください。

ブリッジ回路の準備

 本来であれば共和電業さんのブリッジボックスを使いたいのですが、こちらも個人向けの販売はされていないみたいですので、まずは簡単な回路を作って試してみました。(動け!!!)

コード作成

まずは、アンプ用に準備されているコードを使って動作確認してみようと思います。(とりあえず動けば何とでもなるはず。。)

/**
 *
 * HX711 library for Arduino - example file
 * https://github.com/bogde/HX711
 *
 * MIT License
 * (c) 2018 Bogdan Necula
 *
 *ひずみゲージ(L3M2R)用に改変、2024, mecha lab.
**/
#include "HX711.h"


// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 8;
const int LOADCELL_SCK_PIN = 9;


HX711 scale;

void setup() {
  Serial.begin(38400);
  Serial.println("HX711 Demo");

  Serial.println("Initializing the scale");

  // Initialize library with data output pin, clock input pin and gain factor.
  // Channel selection is made by passing the appropriate gain:
  // - With a gain factor of 64 or 128, channel A is selected
  // - With a gain factor of 32, channel B is selected
  // By omitting the gain factor parameter, the library
  // default "128" (Channel A) is used here.
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

  Serial.println("Before setting up the scale:");
  Serial.print("read: \t\t");
  Serial.println(scale.read());			// print a raw reading from the ADC

  Serial.print("read average: \t\t");
  Serial.println(scale.read_average(100));  	// print the average of 20 readings from the ADC

  Serial.print("get value: \t\t");
  Serial.println(scale.get_value(5));		// print the average of 5 readings from the ADC minus the tare weight (not set yet)

  Serial.print("get units: \t\t");
  Serial.println(scale.get_units(5), 1);	// print the average of 5 readings from the ADC minus tare weight (not set) divided
						// by the SCALE parameter (not set yet)

  scale.set_scale(2280.f);                      // this value is obtained by calibrating the scale with known weights; see the README for details
  scale.tare();				        // reset the scale to 0

  Serial.println("After setting up the scale:");

  Serial.print("read: \t\t");
  Serial.println(scale.read());                 // print a raw reading from the ADC

  Serial.print("read average: \t\t");
  Serial.println(scale.read_average(100));       // print the average of 20 readings from the ADC

  Serial.print("get value: \t\t");
  Serial.println(scale.get_value(5));		// print the average of 5 readings from the ADC minus the tare weight, set with tare()

  Serial.print("get units: \t\t");
  Serial.println(scale.get_units(5), 1);        // print the average of 5 readings from the ADC minus tare weight, divided
						// by the SCALE parameter set with set_scale

  Serial.println("Readings:");
}

void loop() {
  Serial.print("one reading:\t");
  Serial.print(scale.get_units(), 1);
  Serial.print("\t| average:\t");
  Serial.println(scale.get_units(50), 1);

  scale.power_down();			        // put the ADC in sleep mode
  delay(5000);
  scale.power_up();
}

コードの内容はたぶんざっくりこんな感じ。githubにてMITライセンスでHX711のライブラリが公開されていたので、とりあえずこれを使って動作確認をしてみます。

動作確認

 さて、下ごしらえ(雑)が完了したところで、サクッと動作確認してみましょう。今回はひとまず、Arduino IDEの標準機能である「シリアルモニタ」での確認としました。とりあえず何かしらの値が出ていてればokとします。

はい、okですね。(・_・)

まとめ

 というわけで今回は、Arduinoを使ったひずみ計測の下ごしらえとして、ひずみゲージ、アンプ、回路、コードについて簡単に準備してみました。

 次回は、計測した値をTera Termなどの機能を使って、データ取得にチャレンジしてみたいと思います。

コメント