2026年6月3日水曜日

ロードセルを使った重心計算(1)

 ロードセルとADモジュール

 ロードセルは、電子はかりなどに使われているセンサです。いろいろな形状があるのですが、右図は今回使用したロードセルです。50Kgまで測定できます。

 ロードセルにはひずみゲージが付けられており、その抵抗の変化で、重さを測定するものです。

 

 ロードセルから重さのデータを取得するには、HX711と呼ばれるロードセル用のADモジュールが使われます。

 このモジュールでは、標準で1秒間に10回(10Hz)のデータ取得ですが、右上の抵抗(0Ω)を80Hz側にする(短絡)ことで、1秒間に最大80回までのデータ取得が可能になります。

 ロードセルとの接続は、左側のE+、E-、A-、A+の4端子を使って接続します。Arduinoとの接続は、右側のGND、DT、SCK、VCCの4端子を接続します。


Arduinoプログラミング

 Arduinoでは、HX711用のライブラリがありますので、これを利用すると簡単に重さを測定することができます。ただし、ロードセルには測定できる重さが様々のため、パラメータ設定が必要です。サンプル例を示します。

#include "hx711.h"

// HX711    ( dat, sck )  ピンの設定 
HX711 scale(  19, 18 );
// ロードセル設定
#define OUT_VOL   0.001f      // 定格出力 [mV/V]
#define LOAD      50000.0f    // 定格容量 [kg]
long offset;

int kg = -1;
long gram;

void setup(void) {
  Serial.begin( 115200 );
  delay(200);
  Serial.printf("\n\n" );
  Serial.printf("=== start System. ===================\n" );

    // HX711 初期化
  scale.begin();
  if( scale.isReady() ){
    scale.setOutVol( OUT_VOL );
    scale.setLoad( LOAD );
    delay(50);
    long sum=0;
    for(int i=0;i<10;i++){
      sum += abs( scale.getGram() );
    }
    offset = sum / 10;
  }
}

int readWeightKg(){
  kg= -1;
  if( scale.isReady() ){
    gram = abs( abs(scale.getGram()) -  offset ) ;
    kg  = (int)(( gram ) / 1000 );
    if( kg < 0 ) kg = 0;
  }else{
    kg = -1;
  }
  return kg;
}

int cntKg= 0;
int cntLED= 0;
void loop(void) {
  delay(1);
  cntKg++;
  if( cntKg > 100 ) {
    cntKg=0;
    int kg = readWeightKg();
    if( kg >= kg_TH ){
      Serial.printf("Weight: %4ld[g]\n", gram );    
    }
  }
}<10 -="" 0="" 1000="" 10="" abs="" cntkg="" cntled="0;" delay="" else="" gram="" i="" if="" int="" kg="" loop="" offset="" readweightkg="" return="" scale.getgram="" scale.isready="" sum="" void="">

 プログラムでは、ロードセルのばらつきがあるため、setup()内で初期化後に、10回読み込み、平均を取ってオフセット値を計算しています。
 実際の値は、読み込んだ値からオフセット値を引いたものが、実際の重量となります。 
 実行結果は右のシリアルモニタです。


 参考にソースコードを見る方は次のリンクからご覧ください。

ソースコード

0 件のコメント:

コメントを投稿

回転軸をスムーズに動かす工夫

回転軸をスムーズに動かしたいことがあります。右の図は把手です。つまみを持って回転させる機構です。  この時に必要なのは つまみがスムーズに動く ことです。 3D設計  この機構を次のように設計しました。  左図のように、ハンドルにはφ6.0mmの穴が空いています。押さえの差し込ま...