メインコンテンツまでスキップ

Grove - ADC ロードセル用 (HX711)

Grove - ADC for Load Cell (HX711) は、ロードセル専用に設計された24ビットA/Dコンバータです。オンチップ低ノイズプログラマブルアンプを搭載しており、32、64、128のゲインを選択できます。HX711チップは、調整された電源、オンチップクロックオシレータ、その他の周辺回路を統合しており、高い統合性、迅速な応答、強力な耐干渉性という利点があります。

注記

Groveコネクタと4ピンスクリュー端子を使用することで、ロードセルとマイクロコントローラを簡単に接続でき、はんだ付けは不要です。数ステップで独自のArduino重量センサーシステムを構築できます。

仕様​

項目値
バッテリー含まれない
動作電圧2.6V--5.5V
動作電流1.5A未満
検出精度24ビット
出力データレート10SPSまたは80SPS
選択可能なゲインチャンネルBは32/ チャンネルAは64および128

応用例​

  • 電子スケール
  • 価格計算スケール
  • 電子プラットフォームスケール
  • デジタルスケール
  • 郵便物スケール

ハードウェア概要​

対応プラットフォーム​

ArduinoRaspberry Pi
注意

上記で対応可能とされているプラットフォームは、モジュールのソフトウェアまたは理論的な互換性を示しています。ほとんどの場合、Arduinoプラットフォーム向けのソフトウェアライブラリやコード例のみを提供しています。すべての可能なMCUプラットフォーム向けにソフトウェアライブラリやデモコードを提供することは不可能です。そのため、ユーザー自身でソフトウェアライブラリを作成する必要があります。

はじめに​

このセクションでは、コントローラーとして Arduino UNO R4 WiFi を使用し、Grove - ADC for Load Cell (HX711) と Weight Sensor (Load Cell) 0-500g を組み合わせて、重量測定モジュールを作成する方法を説明します。

ハードウェア準備​

ステップ 1. 材料の準備

Arduino UNO R4 WiFiGrove - ADC for Load Cell (HX711)Weight Sensor (Load Cell) 0-500g
注記
  • 重量センサーは150g未満の負荷では0Vを出力します。直接負荷を測定することはできません。そのため、200gの重りを使用して測定の盲点を回避することを推奨します。200gの重りのアナログデータを無負荷(0g)として読み取り、700gの重りのアナログデータを最大負荷(500g)として読み取ります。
  • ADC for Load Cell (HX711) はデフォルトでチャンネルAを使用します。他のチャンネルを使用する場合は、自分でハンダ付けが必要です。

また、Grove - ADC for Load Cell (HX711) は XIAO 開発ボードにも適しています。

Seeed Studio XIAO SAMD21Seeed Studio XIAO RP2040Seeed Studio XIAO nRF52840 (Sense)Seeed Studio XIAO ESP32C3Seeed Studio XIAO ESP32S3 (Sense)

ステップ 2. ハードウェア接続

Grove Gesture Sensor を Arduino UNO R4 WiFi の IIC ポートに接続し、USB ケーブルを介して Arduino を PC に接続します。Grove - ADC for Load Cell (HX711) と Weight Sensor (Load Cell) 0-500g の接続は以下の通りです。

Grove - ADC for Load Cell (HX711)Weight Sensor (Load Cell) 0-500
E+赤
E-黒
INA-白
INA+緑/青
ヒント

Grove Base Shield を使用すると、以下のように HX711 モジュールを Arduino UNO R4 WiFi に直接接続できます。

ソフトウェア準備​

推奨されるプログラミングツールは Arduino IDE であり、XIAO 用に Arduino 環境を設定し、オンボードパッケージを追加する必要があります。

ヒント

Arduino を初めて使用する場合は、Arduino の始め方を参照することを強くお勧めします。

ステップ 1. Arduino アプリケーションを起動します。

ステップ 2. 開発ボードモデルを選択し、Arduino IDE に追加します。

  • Seeed Studio XIAO SAMD21 を後のルーチンで使用する場合は、このチュートリアル を参照して追加を完了してください。

  • Seeed Studio XIAO RP2040 を後のルーチンで使用する場合は、このチュートリアル を参照して追加を完了してください。

  • Seeed Studio XIAO nRF52840 を後のルーチンで使用する場合は、このチュートリアル を参照して追加を完了してください。

  • Seeed Studio XIAO ESP32C3 を後のルーチンで使用する場合は、このチュートリアル を参照して追加を完了してください。

  • Seeed Studio XIAO ESP32S3 を後のルーチンで使用する場合は、このチュートリアル を参照して追加を完了してください。

  • Seeeduino V4.3 を後のルーチンで使用する場合は、このチュートリアル を参照して追加を完了してください。

  • Arduino UNO R4 WiFi を後のルーチンで使用する場合は、Tools-> Board-> Boards Manager... をクリックし、検索欄に「UNO R4 WiFi」と入力して最新バージョン(または使用したいバージョン)をインストールしてください。

HX711 Arduino ライブラリ概要​

機能​

スケッチを開発する前に、利用可能な関数を確認しましょう。

  • void begin(byte dout, byte pd_sck, byte gain ) —— データ出力ピン、クロック入力ピン、ゲイン係数でライブラリを初期化します。チャンネル選択は適切なゲインを渡すことで行われます。ライブラリのデフォルトは「128」(チャンネル A)です。

    • 入力パラメータ:
      • byte dout: dout として渡される(byte に変換)HX711 回路配線。
      • byte pd_sck: pd_sck として渡される(byte に変換)HX711 回路配線。
      • byte gain = 128:
        • ゲイン係数が 64 または 128 の場合、チャンネル A が選択されます。
        • ゲイン係数が 32 の場合、チャンネル B が選択されます。
  • bool is_ready() —— HX711 が準備完了かどうかを確認します。データシートによると、出力データが取得可能でない場合、デジタル出力ピン DOUT は高電位になります。シリアルクロック入力 PD_SCK は低電位である必要があります。DOUT が低電位になると、データが取得可能であることを示します。

  • void wait_ready(unsigned long delay_ms = 0); —— チップが準備完了になるまで待機します。

  • bool wait_ready_retry(int retries = 3, unsigned long delay_ms = 0) —— 指定された回数試行してチップが準備完了になるまで待機します。

  • bool wait_ready_timeout(unsigned long timeout = 1000, unsigned long delay_ms = 0) —— タイムアウトまでチップが準備完了になるのを待機します。

  • void set_gain(byte gain = 128) —— ゲイン係数を設定します。この設定は read() 呼び出し後にのみ有効になります。

    • 入力パラメータ:
      • byte gain = 128: チャンネル A は 128 または 64 のゲインに設定可能です。チャンネル B は固定の 32 ゲインです。
  • long read() —— チップが準備完了になるのを待機し、読み取り値を返します。

  • long read_average(byte times = 10) —— 平均読み取り値を返します。

    • 入力パラメータ:
      • byte times = 10: 読み取り回数。
  • double get_value(byte times = 1) —— (read_average() - OFFSET) を返します。これは、風袋重量を除いた現在の値です。

    • 入力パラメータ:
      • byte times = 1: 読み取り回数。
  • float get_units(byte times = 1) —— get_value() を SCALE で割った値を返します。これは、キャリブレーションで得られた値で割った生データです。

    • 入力パラメータ:
      • byte times = 1: 読み取り回数。
  • void tare(byte times = 10) —— OFFSET 値を風袋重量として設定します。

    • 入力パラメータ:
      • byte times = 10: 風袋値を読み取る回数。
  • void set_scale(float scale = 1.f) —— SCALE 値を設定します。この値は生データを「人間が読みやすい」データ(測定単位)に変換するために使用されます。

  • float get_scale() —— 現在の SCALE を取得します。

  • void set_offset(long offset = 0) —— OFFSET を設定します。この値は実際の読み取り値から引かれる値(風袋重量)です。

  • long get_offset() —— 現在の OFFSET を取得します。

  • void power_down() —— チップを省電力モードにします。

  • void power_up() —— 省電力モードからチップを復帰させます。

インストール​


ダウンロードしたZIPライブラリを使用するには、Arduino IDEを開き、スケッチ > ライブラリをインクルード > .ZIPライブラリを追加をクリックしてください。ダウンロードしたZIPファイルを選択し、ライブラリが正しくインストールされると、通知ウィンドウにライブラリがライブラリに追加されましたと表示されます。これでライブラリが正常にインストールされたことを意味します。

デモ例​

ステップ 1. Grove - ADC for Load Cell (HX711)で測定を行う前に、PD_SCKをプルダウンして準備を整え、ロードセルをキャリブレーションする必要があります。Grove_ADC_for_Load_Cell_(HX711)のサンプルコードは以下の通りです:

#include "HX711.h"

// HX711回路配線
const int LOADCELL_DOUT_PIN = 3; // I2Cピンを設定
const int LOADCELL_SCK_PIN = 2;

HX711 scale;

void setup() {
Serial.begin(9600);
Serial.println("HX711 デモ");

Serial.println("スケールを初期化しています");

// データ出力ピン、クロック入力ピン、ゲインファクターでライブラリを初期化
// 適切なゲインを渡すことでチャンネルを選択:
// - ゲインファクターが64または128の場合、チャンネルAが選択されます
// - ゲインファクターが32の場合、チャンネルBが選択されます
// ゲインファクターのパラメータを省略すると、ライブラリのデフォルト値"128"(チャンネルA)が使用されます

scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);

Serial.println("スケール設定前:");
if (scale.wait_ready_timeout(1000)) {
long reading = scale.read();
Serial.print("HX711 読み取り値: ");
Serial.println(reading);
} else {
Serial.println("HX711が見つかりませんでした。");
} // ADCからの生の読み取り値を出力

Serial.print("平均読み取り値: \t\t");
Serial.println(scale.read_average(20)); // ADCからの20回の読み取り値の平均を出力

Serial.print("値取得: \t\t");
Serial.println(scale.get_value(5)); // ADCからの5回の読み取り値の平均からタレ重量(まだ設定されていない)を引いた値を出力

Serial.print("単位取得: \t\t");
Serial.println(scale.get_units(5), 1); // ADCからの5回の読み取り値の平均からタレ重量(設定されていない)を引いた値を出力し、
// SCALEパラメータ(まだ設定されていない)で割った値を出力

scale.set_scale(2280.f); // 既知の重量でスケールをキャリブレーションして得られた値を設定; 詳細はREADMEを参照
scale.tare(); // スケールを0にリセット

Serial.println("スケール設定後:");

Serial.print("読み取り値: \t\t");
Serial.println(scale.read()); // ADCからの生の読み取り値を出力

Serial.print("平均読み取り値: \t\t");
Serial.println(scale.read_average(20)); // ADCからの20回の読み取り値の平均を出力

Serial.print("値取得: \t\t");
Serial.println(scale.get_value(5)); // タレ重量で設定されたADCからの5回の読み取り値の平均を出力

Serial.print("単位取得: \t\t");
Serial.println(scale.get_units(5), 1); // SCALEパラメータで設定されたタレ重量を引いたADCからの5回の読み取り値の平均を出力

Serial.println("読み取り値:");
}

void loop() {
Serial.print("1回の読み取り値:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| 平均:\t");
Serial.println(scale.get_units(10), 1);

scale.power_down(); // ADCをスリープモードにする
delay(5000);
scale.power_up();
}

ステップ 2. ボード選択ドロップダウンメニューをクリックし、「他のボードとポートを選択...」をクリックしてください。

ステップ 3. 「Arduino UNO R4 WiFi」を検索して選択してください。

ステップ 4. 「アップロード」をクリックしてArduinoにファームウェアをフラッシュしてください。

ステップ 5. Arduino IDEのシリアルモニタを開くには、ツール->シリアルモニタをクリックしてください。「スケール設定後:」というシリアル出力が表示されたら、数秒待ってから重量センサー(ロードセル)0-500gに力を加えてください。

ステップ 6. 結果は以下のように表示されるはずです。

リソース​

[PDF]INA125 データシート

[PDF]HX711 データシート

[ZIP]Grove - ADC for load cell (HX711) - 回路図ファイル

技術サポート & 製品ディスカッション​

弊社製品をお選びいただきありがとうございます!製品をご利用いただく際にスムーズな体験を提供するため、さまざまなサポートを提供しております。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご用意しています。

Loading Comments...