重さを測る その2 0.01gが測れるロードセル

 前回は20kgまで測れるロードセルを利用しました。1g単位は安定して測れましたが、それ以下は変動が大きかったので、電源からのノイズやAC100Vの誘導ノイズ、IC内部の安定化電源の安定性、適切な有効ビット数の取れるPGAのゲインなどの配分が適切であれば、もっと良い結果が得られたかもしれません。
 今回は、定格容量が100gのロードセルを利用します。

ロードセルの主なスペック

 アマゾンで入手した「uxcell 計量センサーロードセル 電子スケール アルミニウム合金 0-100g 高精度 シルバートーン」は、翌日配達でした。荷重をかける方向を示す矢印はありません。同じ出品者からはそっくりな写真でスペックの違うものが出ています。定格出力が0.7AmV/Vと書かれています。

  • 定格容量;100g
  • 定格出力;1mV/V

 1/10000まで分解能があるとすれば0.01g単位の計測ができそうです。市販されている、より精密な計測ができる0.001g単位の秤は、空気が動く影響を遮るように回りを囲っています。

接続

 前回とロードセルのケーブルの色が同じだったので、HX711ボードと同様の配線をしました。ロードセルは、20kgのときと同じくリード線がある部分をワッシャで浮かし、2mmの木ねじで留めました。

スケッチ

 前回のスケッチの中で「定格容量;20kg」の部分を100gに変更しましたが、表示される値がおかしいので、「定格容量;200g」、「定格出力;0.669mV/V」に修正したら、テスト用おもりの値に近づきました。0.667mV/Vは0.7mV/V±0.1mVとスペックだと解釈すれば妥当な数値なのですが、200gは明らかにおかしいです。スケッチの換算式が間違っているのかもしれません。

 30回の平均をとると実質的なビット数が増えて小さい桁の表示が安定するはずですが、そうではありません。表示される値が変動します。ノイズなどの影響でA-Dコンバータのビット数が十分に取れていないような表示です。HX711ボードの電源を、ノイズがなく低いインピーダンスのエネループ4本に変更しました。ArduinoのGNDをCN2のGNDへ追加で接続します。HX711の動作電圧の上限は5.5Vです。エネループの電圧は5.3Vだったので、そのままつなぎました。その結果、小数点第3位が変化する程度まで安定になりました。

 30回を100回の平均に変えましたが、それでも小数点3桁目は±0.005g程度変化しています。部屋の中の空気の動きやロードセルの取り付けなどの影響で変動しているのかもしれません。絶対値を正確にするには、値の正確なおもりを使って定格出力の数値を修正することで対応できます。
 温度や風の影響などの変動理由、ロードセル自体が持つの重さと出力値の比例度合など、バラックで実験して0.001gという確度を得るのは大変そうです。

#define DAT 8
#define CLK 9
float offset=0;

void setup() {
Serial.begin(9600);
Serial.println("start");
pinMode(CLK, OUTPUT);
pinMode(DAT, INPUT);
offset = Read();
}

void loop() {
float data;
data = Read();
Serial.print(-data,3);Serial.println("g");
delay(1000);
}

float Read(void){
long sum = 0;
for (int i = 0; i < 100; i++) {
long data=0;
while(digitalRead(DAT)!=0);
for(char i=0;i<24;i++) {
digitalWrite(CLK,1);
delayMicroseconds(1);
digitalWrite(CLK,0);
delayMicroseconds(1);
data = (data<<1)|(digitalRead(DAT));
}
digitalWrite(CLK,1); //gain=128
delayMicroseconds(1);
digitalWrite(CLK,0);
delayMicroseconds(1);
data = data^0x800000;
sum += data;
}
float data = sum /100;
float volt;float gram;
volt =data*(4.2987/16777216.0/128);Serial.println(volt,10);
gram=volt/(0.000669*4.2987/200.0);Serial.println(gram,4);
return gram-offset;
}

 5gの分銅を測っている様子です。

 コラム 実験に使ったおもり

 アマゾンで精密 キャリブレーション ウェイト デジタル スケール セット キットを入手しました。5gから50gの分銅が入っています。付属のピンセットでつまめるようになるのには訓練が必要です。

前へ

温度を測って異常を検知 その2 複数1-Wire温度センサ

次へ

温度を測って異常を検知 その3 警報