■ HX711 (24bit A/D) + ロードセル [SC616C-500g] 重量計 ■

 製作の依頼で、重量計用のA/Dコンバータ「HX711」を入手しましたので、ロードセルを追加購入して重量計のテストを行いました。

 単純に重さを量るならば市販のスケールを購入した方が安価で精度も良いですが、測定したデータを記録したり常時監視するような装置に利用できると思います。



 
秋月電子のモジュール
[AE-HX711-SIP]
・動作電圧: 5V(4.5V〜5.5V)
・出力データ速度: 10SPS (10Hz 100mS)
・A/Dコンバータの分解能: 24ビット
・ロードセルとADCアナログ電源用の電源レギュレーターを内蔵。
・内蔵のアナログ電源レギュレーターを含む消費電流:
 通常動作: < 1.5mA パワー・ダウン: < 1μA
・2つの差動入力チャンネル:
 (チャンネルAは64倍と128倍の利得を選択可能)
 (チャンネルBは32倍の固定利得)
・50Hzおよび60Hzの電源リップルノイズを除去。
・動作温度範囲:  -40℃ 〜 +85℃
・インターフェイス: クロックとデータ線(2本)によるシリアル出力。
 
ロードセル
シングルポイント(ビーム型)
[SC616C-500g]
・定格荷重 : 500 g
・精 度 : 0.05 %(F.S.)
・総合誤差 : 0.05 %(F.S.)
・定格出力 : 0.7 ±0.15 mV/V
・非直線性 : 0.05 %(F.S.)
・再現性 : 0.05 %(F.S.)
・ヒステリシス : 0.05 %(F.S.)
・クリープ : 0.1 %(F.S./[3分])
・ゼロバランス : 0.05 %(F.S./[1分])
・温度 ゼロへの影響 : 0.1 %(F.S./10℃)
・温度 スパンへの影響 : ≦0.05 %(F.S./10℃)
・ゼロ出力 : ±0.1 mV/V
・入力抵抗 : 1000 ±10 Ω
・出力抵抗 : 1050 ±100 Ω
・絶縁抵抗 : ≧2000 MΩ
・動作電圧 : 3V〜10V DC
・動作温度範囲 : -10 〜 +40 ℃
・全領域誤差 : ±0.05 %(F.S.)
・最大過負荷 : 150 %(F.S.)
・材 質 : 合金アルミニウム


HX711の日本語データ・シートが見つからないので、私的に翻訳してあります。
HX711 日本語データ・シート 原本 HX711
 
個人で使用するために翻訳した物を掲載しておりますので、翻訳間違いや誤字による、
いかなる損害にも責任を負いません。


・テストは当ページに掲載のAVR & BASCOM-AVR トレーニング・ボードを使用しました。
 

1円玉

TANITAのスケールに付属の校正用100g分銅


HX711 テスト・プログラム
 
回 路
 
 ・秋月電子のモジュール[AE-HX711-SIP]は、付属の説明書通りに組み立てます。
 ・チャンネルBを使用しないので、説明書に記載の通りハンダ・ジャンパー[J3]と[J4]を接続します。
 
 ・AVR & BASCOM-AVR トレーニング・ボードに接続して制御します。
 ・もちろん、各種のAVRやポートを選択することもできます。 (5V動作)
 ・[VDD]と[GND]を5V電源に接続。 [CLK]をマイコンの出力ポート、[DAT]を入力ポートに接続。
 
 ・秋月電子のモジュール[AE-HX711-SIP]はHX711の内蔵レギュレーターを使用しており、
  ロードセル用の電源電圧(AVDD)は、回路定数から下記の電圧値になります。
     VAVDD = VBG * (R1 + R2) / R2
  R1=20KΩ、R2=8.2KΩ、VBG=1.25V なので、AVDDは約4.3Vになります。
  実測値では、2枚の基板でそれぞれ 4.31V と 4.27V でした。
 ・モジュールの電源電圧 (DVDD および VSUP) は、設定した(AVDD)電圧よりも100mV以上高くする
  必要があるので、基板の電源電圧はモジュールの説明書通りに4.5V〜5.5Vで使用して下さい。
  (3.3V等で使用する場合は、R1またはR2の値を変更する必要があります)
 
 ・A/D変換の出力データ速度は、モジュールの回路上で10SPS (10Hz 100mS)の固定です。

回 路 図  PDF版  ATB_HX711Test_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。

 
ロードセルの出力電圧とA/D変換値の換算式
 
 ・上記の回路説明の通り、秋月電子のモジュール[AE-HX711-SIP]のロードセル用の電源電圧
  (AVDD)は、約4.3Vになります。
 ・HX711のチャンネルA入力は、入力のアンプを128倍または64倍の利得から選択できます。
 ・利得の選択は、A/Dデータを取り出した後に加える追加のクロックパルス数により行います。
  (詳細は、上記の日本語データシートを参照)
 
 ・使用するロードセル[SC616C-500g]は、定格出力が 0.7 ±0.15 mV/V と小さな出力電圧なので、
  利得を128倍で使用します。
 ・この場合HX711の入力は、フル・スケールで下記のようになります。
     4.3V ÷ 128倍 = 0.03359375 V  (±16.796875mV)
 
 ・ロードセルからの出力電圧は 0.7 mV/V で、これはロードセルへ1Vの印加電圧を加えた場合に
  最大出力電圧は0.7mVとなります。
 ・秋月電子のモジュール[AE-HX711-SIP]は(AVDD)が約4.3Vなので、最大荷重時の出力電圧は、
     0.7mV × 4.3V = 3.01mV です。
 ・ただし、データシートにより 0.7 ±0.15 mV/V と、センサーごとの個体誤差が大きいことがわかり、
  プログラムによる校正が必須となります。
      0.7 +0.15mV/V 0.85mV/V  0.85mV × 4.3V = 3.655mV
      0.7 -0.15mV/V 0.55mV/V  0.55mV × 4.3V = 2.365mV
 
 ・次に、ロードセル[SC616C-500g]を使用して重量を量る場合の、1gに対する出力電圧を求めます。
      1g : 500g = 1gに対する出力電圧 : 3.01mV(500g時)
      500g × 1gに対する出力電圧 = 1g × 3.01mV
      1gに対する出力電圧 = 3.01mV ÷ 500g = 0.00602mV  (6.02μV)
 
 ・次に、HX711のA/Dコンバーターは24ビットなので、1bitあたりの変換電圧は下記の通りです。
   4.3V ÷ 16777216 (24bit) ÷ 128 (利得) = 0.00000200234353542327880859375 mV
 
 ・そして、1gに対するA/D値は下記のようになります。
    0.00602 mV ÷ 0.00000200234353542327880859375 mV = 3006.4771072
  計算誤差を少なくするために、10倍しておきます。
    1gのA/D値 3006.47 × 10 = 約 30,065
 
 ・上記の計算により、プログラムでの演算は下記のようになります。
  (測定値の表示を0.1g単位にするために、A/D値を10倍しておきます)
  (1gに対するA/D値も10倍してあるので、結果的にA/D値を100倍してからグラム換算します)
    測定g数 = A/D値 × 10(A/D計算の小数点以下1桁) × 10(0.1g換算) ÷ 30,065
    測定g数 (0.1g換算) = A/D値 × 100 ÷ 30,065
 
 ・ただし、上記に記載した通り、ロードセルの出力電圧は±0.15 mV/Vの個体差があるので、
  換算値の係数は、[23,622]〜[36,507] の範囲で個体差を校正する必要があります。


プログラム
 
 ・ロードセル[SC616C-500g]の接続ケーブルはシールドが使われておらず、モジュール
  [AE-HX711-SIP]もケースに入れていないため、HX711のA/Dデータ24ビットのうち下位8ビットは
  ノイズにより不安定な値になります。
 ・できるだけノイズの影響を排除するために、プログラムで16個の移動平均を行いローパス
  フィルターを入れています。
  従って、測定値が確定するまでに1.6秒かかります。
 
 ・電源を入れた後、最初に20回の測定を行い、ゼロ調整用の差分を計算します。
 ・ゼロ調整用の差分により、測定グラム数は[0.0g]を表示します。
 
 ・モジュール[AE-HX711-SIP]のA/D変換の出力データ速度は、モジュールの回路上で10SPS
   (10Hz 100mS)の固定になっているので、HX711の変換終了の信号([DOUT]ピンが[L])を
  検出して、100mS毎に生のA/D値、移動平均値、グラム換算値をLCDに表示します。
 ・グラム換算値が5回以上変化しなかった場合は、安定マーク[*]を表示します。
 
 ・ロードセルの個体差を加味したグラム換算の係数は、AVRのEEPROMに記憶しますので、
  一度校正を行えば電源を切っても記憶しています。
 
 ・スイッチの操作は、下記の「操作方法」に記載します。

プログラム  テキスト形式 ソースファイル  HX711_Test_001.TXT
 BASCOM-AVR用 ソースファイル  HX711_Test_001.bas

 20kg ロードセル [SC133-20kg] 用
プログラム  テキスト形式 ソースファイル  HX711_Test_20K001.TXT
 BASCOM-AVR用 ソースファイル  HX711_Test_20K001.bas
  
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)



 


操作方法
 
1.電源投入
 
  ・電源を入れた後、最初に20回の測定を行い、ゼロ調整用の差分を計算します。

  ・ゼロ調整用の差分により、測定グラム数は[0.0g]を表示します。

  ・モジュール[AE-HX711-SIP]のA/D変換の出力データ速度は、モジュールの回路上で10SPS
    (10Hz 100mS)の固定になっているので、100mS毎に表示が更新されます。
  ・LCDの左上に生のA/D値、左下に移動平均値が16進数で表示されます。
  ・グラム換算値が5回以上変化しなかった場合は、安定マーク[*]が表示されます。

 
2.ゼロ調整と風袋(TARE)ボタン
 

  ・[SW1]を押すと、現在の重量値を[0.0g]にゼロ調整します。
  ・また、風袋(ふうたい)機能も同時に行えます。
  ・容器の重量を差し引く場合、スケールに空容器を乗せた状態で[SW1]を押すと、
   その重量が[0.0g]になります。

 
3.ロードセルの個体差 校正ボタン (校正モードに入る前に、必ずゼロ調整を行って下さい)
 

  ・[SW2]を押すと、ロードセルの個体差を校正するモードに入ります。
  ・グラム換算の初期値は先記の計算式から 30,065 に設定されています。(LCDの右下)
  ・下記の表示は、校正用の100g分銅を乗せた状態で、グラム換算値に誤差がある事を
   示しています。

  ・[SW2]を押すと、グラム換算値が加算されます。
   (重量表示は下がっていきます)
  ・1秒以上押し続けると、10単位で連続的に増加します。
 
  ・[SW3]を押すと、グラム換算値が減算されます。
   (重量表示は上がっていきます)
  ・1秒以上押し続けると、10単位で連続的に減少します。
 
 
  ・校正用の分銅は、500gまでの任意の重さで校正できます。
   (正確なはかりで量った任意の重量物でもかまいません)
  ・0.1gの変化に30カウント程度の余裕がありますから、下位桁の誤差を見込んで中間の
   カウント値に合わせて下さい。
 
  ・[SW1]を押すと、校正を終了します。
  ・校正値(グラム換算の係数)は、AVRのEEPROMに記憶しますので、一度校正を行えば
   電源を切っても設定値を記憶しています。
 
 ※ このロードセルは、温度特性があまりよくありません。
   室温の変化で上記の校正値の修正が必要になる場合があります。










■ HX711 Arduino LCD Keypad Shield 版 重量計 ■

 Arduino UNO (ATmega328P)と「LCD Keypad Shield」を使用して、「HX711」とロードセル[SC616C-500g]のテストを行いました。
 BASCOM-AVRはArduinoにも対応しており、コンパイル後はUSBケーブルで書き込みができるので、書き込み機(ライター)は不要です。

 「HX711」とロードセル[SC616C-500g]の詳細は、上記の「トレーニング・ボード」の記事を参照して下さい。



Arduino UNO (ATmega328P)









LCD Keypad Shield

・16文字×2行のLCD
・スイッチ5個 (分圧抵抗器とA/Dで検出)
・各ポートの引き出し用ランドに、ピンソケットを
 取り付けます。
 電源系統 (6ピン)
 アナログ入力 (A1〜A5) (5ピン)
 PDポート (D0〜D3, D11〜D13) (7ピン)


HX711 テスト・プログラム
 
回 路
 
 ・ 「LCD Keypad Shield」は、各ポートの引き出し用ランドに、ピンソケットを取り付けます。
  電源系統 (6ピン)、アナログ入力 (A1〜A5) (5ピン)、PDポート (D0〜D3, D11〜D13) (7ピン)
 ・LCDはピンD4〜D10を使用しています。
  LCDの制御 (PD4〜PD7, PB0〜PB1)、バックライト制御 (PB2) [H]で点灯。
 ・5個のスイッチは、抵抗器による分圧で直列に接続されており、アナログ入力 A0に接続されて
  います。 (A0 [PC0]をA/D変換して、電圧値により各スイッチのON/OFFを検出します)
 
 ・[AE-HX711-SIP]の[VDD]と[GND]を、「LCD Keypad Shield」の[5V]と[GND]に接続します。
 ・[CLK]を[D2]に、[DAT]を「D3]に接続します。
 
 ・秋月電子のモジュール[AE-HX711-SIP]はHX711の内蔵レギュレーターを使用しており、
  ロードセル用の電源電圧(AVDD)は、回路定数から下記の電圧値になります。
     VAVDD = VBG * (R1 + R2) / R2
  R1=20KΩ、R2=8.2KΩ、VBG=1.25V なので、AVDDは約4.3Vになります。
  実測値では、2枚の基板でそれぞれ 4.31V と 4.27V でした。
 ・モジュールの電源電圧 (DVDD および VSUP) は、設定した(AVDD)電圧よりも100mV以上高くする
  必要があるので、基板の電源電圧はモジュールの説明書通りに5Vで使用して下さい。
  (3.3V等で使用する場合は、R1またはR2の値を変更する必要があります)
 
 ・A/D変換の出力データ速度は、モジュールの回路上で10SPS (10Hz 100mS)の固定です。

回 路 図  PDF版  ArdLcdKS_HX711Test_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。


プログラム
 
 ・ロードセル[SC616C-500g]の接続ケーブルはシールドが使われておらず、モジュール
  [AE-HX711-SIP]もケースに入れていないため、HX711のA/Dデータ24ビットのうち下位8ビットは
  ノイズにより不安定な値になります。
 ・できるだけノイズの影響を排除するために、プログラムで16個の移動平均を行いローパス
  フィルターを入れています。
  従って、測定値が確定するまでに1.6秒かかります。
 
 ・電源を入れた後、最初に20回の測定を行い、ゼロ調整用の差分を計算します。
 ・ゼロ調整用の差分により、測定グラム数は[0.0g]を表示します。
 
 ・モジュール[AE-HX711-SIP]のA/D変換の出力データ速度は、モジュールの回路上で10SPS
   (10Hz 100mS)の固定になっているので、HX711の変換終了の信号([DOUT]ピンが[L])を
  検出して、100mS毎に生のA/D値、移動平均値、グラム換算値をLCDに表示します。
 ・グラム換算値が5回以上変化しなかった場合は、安定マーク[*]を表示します。
 
 ・ロードセルの個体差を加味したグラム換算の係数は、AVRのEEPROMに記憶しますので、
  一度校正を行えば電源を切っても記憶しています。
 
 ・スイッチの検出は、抵抗器で分圧された電圧をAVR内蔵のA/Dコンバータで読み取り、
  その電圧のしきい値により、どのスイッチが押されたかを検出します
 ・キー(スイッチ)の検出サブルーチン「Getkey」を、メインルーチンで定期的に呼び出します。
 ・スイッチが押された場合、変数「Keydata」に各スイッチのコードが入ります。
  スイッチが押された後、チャタリングの除去を行ってから以下のコードが変数に入ります。
   (00:押されていない, 01:[SELECT] , 02:[LEFT], 03:[DOWN], 04:[UP], 05:[RIGHT]キー)
  変数のコードは、スイッチの処理が終わった後に[00]にクリアして下さい。
  変数[Keyadcode]には、押されている状態のコードが入りますので、長押し等の検出に
  利用できます。
 
 ・各スイッチの動作は、下記の様になります。
  [SELECT] : ゼロ調整と風袋(TARE)ボタン。
  [LEFT] : センサーの出力誤差調整モード。
    [UP] : 校正値を加算する。
    [DOWN] : 校正値を減算する。
    [LEFT] : 校正終了。
 ・スイッチ動作の詳細は、上記の「トレーニング・ボード」の記事を参照して下さい。
 
 ・「Arduino」にはUSB-シリアル変換の機能もあるので、測定重量を1秒間隔でターミナルに
  出力しています。
 ・「Tera Term」等のターミナルソフトで受信します。
 ・ボーレート = 9600 , Parity = None , Stopbits = 1 , Databits = 8 (プログラム内で変更可能)

 ・BASCOM-AVRで「Arduino」にプログラムを書き込む方法は、下記ページを参照して下さい。
  「プログラム制作環境の準備 (BASCOM-AVR)
  「BASCOM-AVR と トレーニング・シールドの使い方」

プログラム  テキスト形式 ソースファイル  ArdLcdKy_HX711_A001.TXT
 BASCOM-AVR用 ソースファイル  ArdLcdKy_HX711_A001.bas

 20kg ロードセル [SC133-20kg] 用
プログラム  テキスト形式 ソースファイル  ArdLcdKy_HX711_A20K001.TXT
 BASCOM-AVR用 ソースファイル  ArdLcdKy_HX711_A20K001.bas
  
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)







   電子工作の部屋 Top へ 前のページへ戻る