重量計_HX711-ハーフブリッジロードセル2個

JUGEMテーマ:電子工作

 

重さをはかるロードセルシリーズ第3弾です。

 

前々の記事
 https://ameblo.jp/fc2miha/entry-12835245969.html
 http://miha.jugem.cc/?eid=360
  ハーフブリッジ4個でフルブリッジを構成
前の記事
 https://ameblo.jp/fc2miha/entry-12835409272.html
 http://miha.jugem.cc/?eid=361
  フルブリッジ1個で構成
今回
 ハーフブリッジ2個でフルブリッジを構成

という事で、ハーフブリッジ2個を組み合わせてフルブリッジ構成にする記事です。

 

■ハマりポイント

 前々の記事の回路を参考にして、
  単純に白-白と黒-黒を電源のEの+と-に入れただけではダメだったので、
   ここがハマりポイントになります。

 

■試行錯誤の末、回路がこちら。

 

 

ロードセルの白は黒へ、黒は白へ接続して電源であるEの+と-へ接続。
信号線は赤をAの+と-へ接続です。

 

最初に失敗した方だと、
 白-白と黒-黒を電源のEの+と-に接続ですが、
 ロードセルそれぞれ指で押してやると片方がプラスになるんですけど、
  もう片方がマイナスになるという謎現象が発生。
  同時に押すと打ち消しあう?謎。
 それで、反対にしたら安定して動きだしたというわけ。
 しばし回路とにらめっこしてみる。
 ハーフブリッジの中身の回路はこちら。
  
  
  
 Negative strain と Positive strain
 翻訳すると
  「負のひずみ」 と 「正のひずみ」
 となっているね。
 
 想像するにロードセルの微妙に曲がる部分の表と裏に抵抗がくっついてて。
  表側が伸びて裏側が縮む、
  そして伸び縮みによって抵抗が変化すれば、
  赤のラインに出てくる電圧が変化するわけですよね。
  
  で、その電圧の変化をHX711が読み取ってデジタル変換して送ってくれると
  いうわけで、HX711にとってみれば、A+とA-は逆に反応してもらわないと
  いけない訳で。。。。。
  なので、フルブリッジロードセルの中身では
   今回実験したみたいな回路で接続されていると思われる。
  
  で、フルブリッジロードセルのケーブルは4本になっていて、
  結果グリーンからA+ホワイトからA-に接続されている。


  想像なのでよくわからんけど。これで動きます。

 

今回はハーフブリッジ2個なので測定するにあたり工作しました。

 

2個ね

 

横からの写真

横から見た図

□□□□□□□□□□□□□□□□□□□□ ←上の板

 ■■■           ■■■■  ←左がロードセルで右が板
□□□□□□□□□□□□□□□□□□□□ ←下の板

ロードセルと高さを合わせるために板を置いて調整しています。

 

■プログラム

 

ロードセルが半分なので、半分ぐらいはロードセルのないところに体重乗ってるので、

その計算式を変更しています。

 

long saisyo = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("start");
  pinMode(9, OUTPUT);
  pinMode(8, INPUT);

  delay(2000);
  for (char i = 0; i < 24; i++) {
    digitalWrite(9, 1);
    delayMicroseconds(1);
    digitalWrite(9, 0);
    delayMicroseconds(1);
    saisyo = (saisyo << 1) | (digitalRead(8));
  }
  saisyo = saisyo ^ 0x800000;
  Serial.print("saisyo=");
  Serial.println(saisyo);

}
void loop() {

  long atai = 0;
  
  for (char i = 0; i < 24; i++) {
    digitalWrite(9, 1);
    delayMicroseconds(1);
    digitalWrite(9, 0);
    delayMicroseconds(1);
    atai = (atai << 1) | (digitalRead(8));
  }
  
  atai = atai ^ 0x800000;
  Serial.print("atai=");
  Serial.println(atai);
  
  long omosa;
  omosa = ((atai - saisyo)) / 258.14784769572;
  omosa = omosa * 10;
  Serial.print("omosa=");
  Serial.println(omosa);
  
  delay(2000);
}