ロードセルとArduinoを使用したデジタル体重計

問題を排除するために楽器を試してください





この投稿では、ひずみゲージベースのロードセルについて学習します。ひずみゲージとは何か、ロードセルとは何か、ひずみゲージへの温度の影響、ホイートストンブリッジとロードセルアンプHX711による温度補償を探求し、最後にロードセルを実装してArduinoベースの体重計を構築する方法を学びます。重量センサー。

この投稿では、重量測定と測定方法、およびArduinoベースの体重計回路での方法の実装について説明します。



私たちは皆、年齢に関係なく体重を見るのが大好きです。小さな子供は体重が増えるのを見るのが好きで、大人は体重が減るのを見るのが好きかもしれません。重量は古くから商品の取引、科学機器や商品の開発に役立ってきたため、重要な概念です。

現代では、実験室の目的で、キログラム、ミリグラム、さらにはマイクログラムで重量を測定します。 1グラムは世界中で同じです。すべての重量測定装置は同じように測定する必要があります。数ミリグラムの投与量のわずかな違いがあるピルの大量生産は、命を救うピルを自殺ピルにするのに十分です。



体重とは何ですか?

重量は飛行機にかかる力です。加えられる力の量は、オブジェクトの質量に正比例します。つまり、オブジェクトの質量が大きいほど、加えられる力も大きくなります。

質量は、オブジェクトに存在する物理的な物質の量です。

重量はもう1つの要因に依存します:重力。

重力は地球全体で一定です(地球の球形が不均一であるため、重力にはわずかな変動がありますが、非常に小さいです)。月の引力ははるかに弱いため、地球上の1Kgの重量は、まったく同じ質量の月で160グラムの重量になります。

これで、重量とは何か、オブジェクトを重くする要因は何かがわかりました。

ひずみゲージとは:

ひずみゲージは、物体のひずみ(変形)を測定するトランスデューサーまたはセンサーです。これは、電気技師のエドワードE.シモンズと機械技師のアーサークロードルージュによって発明されました。

ひずみゲージの図:

ひずみゲージセンサー

ひずみゲージは柔軟性があり、2枚の薄いプラスチックシートの間に挟まれた薄い金属箔パターンであり、適切な接着剤または任意の接着剤を使用して表面に取り付ける必要があります。

表面に重量や力を加えると変形し、ひずみゲージも変形します。ひずみゲージの変形により、金属箔の電気抵抗が変化します。

これで、ひずみゲージの抵抗の変化は、重量または表面に加えられた力に正比例します。

実生活では、ひずみゲージの抵抗の変化を検出することは非常に重要ではありません。抵抗の小さな変化を検出するために、ホイートストンブリッジを利用しています。

ホイートストンブリッジとは何かを簡単に見てみましょう。

ホイートストンブリッジを理解する:

ホイートストンブリッジは、未知の抵抗を決定するために使用できる回路です。ホイートストンブリッジはサミュエルハンタークリスティーによって考案され、後にホイートストンブリッジはチャールズ卿によって強化され普及されました

ウィートストーン。

ホイートストンブリッジ回路の図:

ホイートストンブリッジ回路

当社の最新のデジタルマルチメータは、メガオーム、キロオーム、オームの範囲の抵抗値を読み取ることができます。

ホイートストンブリッジを使用して、ミリオームの範囲で抵抗を測定できます。

ホイートストンブリッジは4つの抵抗器で構成され、4つのうち、3つは既知の抵抗器で、1つは未知の抵抗器です。

電位差(電圧)は点「A」と「C」に印加され、点「B」と「D」から電圧計が接続されます。

すべての抵抗が等しい場合、ポイント「B」と「D」に電流は流れず、電圧計はゼロを読み取ります。これはバランスブリッジと呼ばれます。

抵抗器の抵抗が他の3つの抵抗器と異なる場合、ポイント「B」と「D」の間に電圧が流れ、電圧計は未知の抵抗に比例する値を読み取ります。これは不平衡ブリッジと呼ばれます。

ここで、未知の抵抗はひずみゲージです。抵抗が変更されると、電圧計に反射します。

これで、変形、重量、または力を電圧信号に変換しました。この電圧は、いくつかの有用な読み取り値を取得するために増幅する必要があります。これは、グラム単位の読み取り値を取得するためにマイクロコントローラーに供給されます。

次に、温度がひずみゲージの性能にどのように影響するかについて説明します。

ひずみゲージに対する温度の影響:

ひずみゲージは温度に敏感であり、実際の重量/力の測定値を台無しにする可能性があります。周囲温度が変化すると、金属箔が金属膨張し、抵抗に直接影響します。

ホイートストンブリッジを使用して、温度の影響を無効にすることができます。ホイートストンブリッジを使用して温度を補正する方法を見てみましょう。

温度補償:

すべての抵抗器をひずみゲージに交換することで、温度の影響を簡単に中和できます。これで、すべてのひずみゲージの抵抗が温度の影響を均等に受け、不要なノイズがホイートストンブリッジの特性によって無効になります。

ロードセルとは何ですか?

ロードセルは、ホイートストンブリッジ構成の4つの側面にひずみゲージが取り付けられたアルミニウムプロファイルです。

ロードセルの図:

ロードセルデバイス

このタイプのロードセルは剛性があり、業界で一般的に使用されています。 4つのネジマウントがあり、一方の側は固定面にボルトで固定され、もう一方の端は測定対象物を保持するためのホルダー(バスケットなど)にボルトで固定されています。

データシートまたは本体に最大重量が指定されており、仕様を超えるとロードセルが損傷する可能性があります。

フルブリッジセルは、電源電圧が印加される励起ワイヤであるE +、E-の4つの端子で構成されます。他の2本のワイヤーはS +とS-で、これらは信号ワイヤーであり、そこから電圧が測定されます。

現在、これらの電圧はミリボルトの範囲にあり、マイクロコントローラーが読み取って処理するのに十分な強度ではありません。増幅が必要であり、マイクロコントローラーに小さな変化が見えるはずです。これを行うために、ロードセルアンプと呼ばれる専用モジュールがあります。その概要を見てみましょう。

ロードセルアンプHX711:

HX711ロードセルアンプモジュールの図:

ロードセルアンプHX711

ロードセルアンプは、重量測定用に特別に設計された24ビットのアナログ-デジタルコンバーターであるICHX711に基づいています。選択可能なゲインは32、64、128で、2.6〜5.5Vで動作します。
このブレークアウトボードは、ロードセルの小さな変動を検出するのに役立ちます。このモジュールを操作するには、HX711.hライブラリが必要です。

Arduinoまたはその他のマイクロコントローラー。

ロードセルはHX711モジュールに接続され、モジュールはArduinoとインターフェースされます。重量測定回路はこのように開発する必要があります。

結論として、ひずみゲージとは何か、ホイートストンブリッジとは何か、ひずみゲージに対する温度の影響、温度補償、およびロードセルアンプとは何かがわかりました。

上記の説明から、体重計の設計の理論的な部分を包括的に理解しました。次に、Arduinoを使用して実際の体重計のマシンを作成するためにロアセルを使用する方法を見てみましょう。

Arduinoを使用したデジタル体重計の設計

以下の説明では、Arduinoを使用して、数グラムから40 Kg(ロードセルの仕様に応じて)の重量を妥当な精度で測定できるデジタル体重計を構築する方法を学習します。精密グレードのロードセルの分類について学び、提案された回路を校正し、重量計を完成させます。

注:この回路は、商用実装に必要な規格に準拠していない場合があります。

体重計は、ミリグラムから数トンまで、さまざまな種類の取引や研究で使用されています。提案されている体重計の最大スケールは、ロードセルの仕様によって異なります。 500グラム、1キログラム、5キログラム、10キログラム、20キログラム、40キログラムなどの範囲があります。

ロードセルにはさまざまなグレードがあり、それらはさまざまな精度範囲を提供するため、プロジェクトに適したものを選択する必要があります。

ロードセル精度クラスの分類:

さまざまな種類のアプリケーションに対して、さまざまな精度クラスが定義されています。以下の分類は、最低精度から最高精度の範囲です。

精度が低い(ただしかなり正確な)ロードセルは、D1、C1、およびC2に分類されます。このプロジェクトにはこれで十分です。これらのロードセルは、砂、セメント、または水の重量を測定するために使用されます。

C3グレードのロードセルは、ボールベアリング、機械構造部品などの重量チェックなどの品質保証に使用されます。

C4、C5、C6はクラス最高の精度であり、これらのグレードのロードセルはグラムからマイクログラムで測定するために使用されます。これらのグレードクラスは、店頭規模、大規模生産監視、食品包装、実験室での使用などに使用されます。

それでは、プロジェクトの技術的な詳細を詳しく見ていきましょう。

回路図:

Arduinoへのロードセル接続HX711とロードセル。

Arduinoへのロードセル接続HX711とロードセル。

このプロジェクトは、Arduino、ロードセル、HX711ロードセルアンプボードとコンピューターで構成されています。 出力は、ArduinoIDEのシリアルモニターで監視できます。

プロジェクトの頭脳はいつものようにarduinoであり、Arduinoボードモデルを使用できます。 HX711は24ビットADCであり、ロードセルの重量のために最も小さな屈曲を見つけることができます。 2.7 V〜5Vで動作します。電力はArduinoボードから供給されます。

ロードセルには通常4本のワイヤーがあり、これはホイートストンブリッジで構成されたひずみゲージからの出力です。

赤い線はE +、黒い線はE-、緑の線はA-、白い線はA +です。一部のHX711モジュールはロードセルの端子の名前を指定し、一部のHX711モジュールはワイヤの色を指定します。このようなモデルは回路図に示されています。

HX711のDATAピンはArduinoのピン#3に接続され、HX711のクロックピンはArduinoのピン#2に接続されています。

ロードセルの取り付け方法:

Arduinoでロードセルをインストールする方法

ロードセルには、両側に2つずつ、合計4つのネジ穴があります。最高の精度を得るには、片側が静止している必要があります。適度な重量の木材に盛り付けることができます。

上図のように、薄い木または薄いプレートを使用して測定分銅を保持できます。

したがって、ウェイトを配置すると、ロードセルが曲がり、ひずみゲージが曲がり、HX711モジュールによって測定されてArduinoに供給される抵抗が変化します。

ハードウェアのセットアップが完了したら、コードをアップロードして調整しましょう。

回路の校正:

2つのプログラムがあります。1つはキャリブレーションプログラムです(キャリブレーション係数を見つける)。別のコードは重量測定プログラムです。校正プログラムコードから検出された校正係数を重量測定プログラムに入力する必要があります。

校正係数は、重量測定の精度を決定します。

ここからHX711ライブラリをダウンロードします:github.com/bogde/HX711

キャリブレーションプログラムコード:

//-------------------- --------------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -96550
char var
void setup()
{
Serial.begin(9600)
Serial.println('------------- Weight Scale Calibration --------------')
Serial.println('Press Q,W,E,R or q,w,e,r to increase calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press A,S,D,F or a,s,d,f to decrease calibration factor by 10,100,1000,10000 respectively')
Serial.println('Press 'T' or 't' for tare')
scale.set_scale()
scale.tare()
long zero_factor = scale.read_average()
Serial.print('Zero factor: ')
Serial.println(zero_factor)
}
void loop()
{
scale.set_scale(CalibrationFactor)
Serial.print('Reading: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
Serial.print('Calibration Factor is: ')
Serial.println(CalibrationFactor)
Serial.println('--------------------------------------------')
if (Serial.available())
{
var = Serial.read()
if (var == 'q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'a')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'w')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 's')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'e')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'd')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'r')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'f')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 'Q')
{
CalibrationFactor = CalibrationFactor + 10
}
else if (var == 'A')
{
CalibrationFactor = CalibrationFactor - 10
}
else if (var == 'W')
{
CalibrationFactor = CalibrationFactor + 100
}
else if (var == 'S')
{
CalibrationFactor = CalibrationFactor - 100
}
else if (var == 'E')
{
CalibrationFactor = CalibrationFactor + 1000
}
else if (var == 'D')
{
CalibrationFactor = CalibrationFactor - 1000
}
else if (var == 'R')
{
CalibrationFactor = CalibrationFactor + 10000
}
else if (var == 'F')
{
CalibrationFactor = CalibrationFactor - 10000
}
else if (var == 't')
{
scale.tare()
}
else if (var == 'T')
{
scale.tare()
}
}
}
//-------------------- --------------------//

校正方法:

  • ハードウェアのセットアップが完了したら、上記のコードをアップロードします。
  • 2本のネジを含めて重りを保持するために使用されている薄いプレートまたは木材を取り外します(ロードセルの反対側はベースに固定する必要があります)
  • シリアルモニターを開きます。
  • 既知の重りをロードセルに直接置きます(たとえば)。
  • 押す Q、W、E、R キャリブレーション係数をそれぞれ10,100,1000,10000ずつ増やします。
  • 押す A、S、D、F キャリブレーション係数をそれぞれ10,100,1000,10000ずつ減らします。
  • 校正係数をインクリメントまたはデクリメントするたびに「Enter」を押します。
  • 既知の重量の材料の正しい重量が表示されるまで、校正係数を増減します。
  • 風袋機能は、体重計をゼロに設定することです。これは、ボウルの重量なしで(たとえば)水の重量を測定したい場合に便利です。最初にボウルを置き、風袋を押して水を注ぎます。
  • 校正係数をメモし、既知の重量が表示されたら書き留めます。

これで、未知の重量を測定できます。

体重測定プログラムコード:

//---------------- ----------------//
#include
const int out = 3
const int clck = 2
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
Serial.begin(9600)
Serial.println('Press 'T' or 't' to tare')
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
Serial.print('Weight: ')
Serial.print(scale.get_units(), 3)
Serial.println(' Kilogram')
if (Serial.available())
{
char var = Serial.read()
if (var == 't')
{
scale.tare()
}
if (var == 'T')
{
scale.tare()
}
}
}
//---------------- ----------------//

フロートCalibrationFactor = -12000

-12000を見つけた校正係数に置き換えます。 負の数または正の数にすることができます。

完全なハードウェア設定で上記のコードをアップロードすると、体重計の準備が整います。

LCDディスプレイを使用した体重計

上記の記事では、PCを使用したArduinoベースの体重計システムについて説明しました。次のセクションでは、16 x 2のLCDディスプレイを追加して、体重計の実用バージョンを構築し、測定中にPCに依存しないようにします。重み。この投稿では、2つのバージョンが提案されています。1つは「I2C」16 x 2 LCDを備え、もう1つは「I2C」16 x 2LCDディスプレイを備えていません。

ここでは、読者が自分の都合に合わせてデザインを選択できるように、2つの選択肢があります。 2つの主な違いは、I2Cアダプターモジュールとのワイヤー接続です。LCDディスプレイの機能には4本のワイヤー(Vcc、GND、SCL、SDA)が必要ですが、I2Cアダプターがないと、ArduinoとLCDディスプレイを接続するために複数のワイヤーが必要です。

ただし、両方の機能はまったく同じで、従来の機能よりもI2Cを好むものもあれば、その逆もあるため、両方の設計を示します。

従来のLCDデザインを見てみましょう。

回路図:

arduino、16 x 2LCDディスプレイおよびLCDディスプレイのコントラストを調整するための10Kポテンショメータ

上記の回路図には、LCDディスプレイのコントラストを調整するためのarduino、16 x 2 LCDディスプレイ、および10Kポテンショメータがあります。

3.3 Vは、バックライト用にArduinoからLCDディスプレイに供給することができます。重量測定値をゼロにするためのプッシュボタンが用意されています。この機能については、最後に詳しく説明します。

これはLCDとArduinoの間の接続であり、ロードセルとロードセルアンプの間のArduinoへの接続は前のセクションで示されています。

LCDウェイトスケールマシンのコード:

// -------- Program developed by R.GIRISH -------//
#include
#include
const int rs = 10
const int en = 9
const int d4 = 8
const int d5 = 7
const int d6 = 6
const int d7 = 5
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
void setup()
{
lcd.begin(16, 2)
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0, 0)
lcd.print(' Weight Scale')
lcd.setCursor(0, 1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Tare ......')
lcd.setCursor(0, 1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

それでは、この体重計をI2CアダプターベースのLCDディスプレイで使用する方法を見てみましょう。

回路図ArduinoとI2Cアダプター付きLCDディスプレイ:

ArduinoとI2Cアダプター付きLCDディスプレイ

ここでは、背面にI2Cアダプターを備えたArduinoとLCDディスプレイがあります。これで、配線接続が簡素化され、簡単になりました。

I2Cモジュールの図:

I2Cモジュール

このモジュールは、通常の16 x2または20x 4 LCDディスプレイの背面に直接はんだ付けでき、回路図に従います。

また、ロードセル、ロードセルアンプ、Arduinoの接続については、前のセクションを参照してください。

I2Cベースの次のライブラリをダウンロードします。

github.com/marcoschwartz/LiquidCrystal_I2C

github.com/PaulStoffregen/Wire

I2Cベースの体重計回路のコード:

// -------- Program developed by R.GIRISH -------//
#include
#include
#include
const int out = 3
const int clck = 2
const int Tare = 4
HX711 scale(out, clck)
float CalibrationFactor = -12000 // Replace -12000 the calibration factor.
LiquidCrystal_I2C lcd(0x27, 16, 2)
void setup()
{
lcd.init()
lcd.backlight()
pinMode(Tare, INPUT)
digitalWrite(Tare, HIGH)
lcd.setCursor(0,0)
lcd.print(' Weight Scale')
lcd.setCursor(0,1)
lcd.print(' Machine')
delay(2000)
scale.set_scale(CalibrationFactor)
scale.tare()
}
void loop()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Weight:')
lcd.print(scale.get_units(), 3)
lcd.print(' Kg')
delay(200)
if (digitalRead(Tare) == LOW)
{
scale.tare()
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Tare ......')
lcd.setCursor(0,1)
lcd.print('Setting to 0 Kg.')
delay(1000)
}
}
// -------- Program developed by R.GIRISH -------//

注意:

いずれかのコードをArduinoにアップロードする前に、コードにキャリブレーション係数を入力する必要があります。

フロートCalibrationFactor = -12000

キャリブレーション係数の取得については、前のセクションの1つで説明しています。

風袋引き機能:

体重計の風袋機能は、読み取り値をゼロにすることです。たとえば、商品が積み込まれているバスケットがある場合、正味重量はバスケットの重量+商品の重量になります。

商品をロードする前にロードセルのバスケット付き風袋ボタンを押すと、バスケットの重量が無視され、商品の重量だけを測定できます。

このArduinoベースの実用的なLCD計量スケールマシン回路について質問がある場合は、コメントセクションで迅速に返信できることを表明してください。




前:モーターポンプ用のソリッドステートコンタクタ回路 次へ:ステップダウントランスの作り方