重量計_HX711-ハーフブリッジロードセル1個
JUGEMテーマ:電子工作
重さをはかるロードセルシリーズ第4弾です。
ハーフブリッジ4個で構成
https://ameblo.jp/fc2miha/entry-12835245969.html
http://miha.jugem.cc/?eid=360
フルブリッジ1個で構成
https://ameblo.jp/fc2miha/entry-12835409272.html
http://miha.jugem.cc/?eid=361
ハーフブリッジ2個で構成
https://ameblo.jp/fc2miha/entry-12835545932.html
http://miha.jugem.cc/?eid=362
ハーフブリッジ1個で構成
→今回の試み。
という事で、ハーフブリッジ1個と固定抵抗を組み合わせてフルブリッジ構成にする記事です。
■回路
ハーフブリッジロードセルの中身に2個の抵抗がついている。
それに普通の固定抵抗を加えてフルブリッジ構成になっている。
■ハマりポイント
ゼロ=0が安定しない。
上記のハーフブリッジ2個の時も安定しない傾向が見られたが、
1個だと全く安定しません。
何かを載せた時に測定結果が大きくなるので、それなりに重量センサーとして働いてはいます。
ただ、誤差が大きくて、0が定まらなく、正確に重さをはかる用途には不向きな気がします。
スイッチみたいに使う分には出来そうだけど、あまり実用的ではないです。
1個のフルブリッジにするか、ハーフの4個が正確な様です。
■プログラム
色々試行錯誤してみました。
改善点
測定を10回平均とした。
HX711の仕様によると、データが準備できると、DTをLowにするとなっているので、
測定開始時DTのLowを待ってからデータを読み取るように変更
long saisyo = 0;
long get2()
{
while(1){
if(!digitalRead(8)){
break;
}
}
long ret = 0;
for (char i = 0; i < 24; i++) {
digitalWrite(9, 1);
delayMicroseconds(1);
digitalWrite(9, 0);
delayMicroseconds(1);
ret = (ret << 1) | (digitalRead(8));
}
ret = ret ^ 0x800000;
return ret;
}
long get()
{
//return get2();
long total = 0;
long ret = 0;
//digitalWrite(9, 0);
//delay(1000);
for (int i=0;i<10;i++) {
total = total + get2();
}
ret = total / 10;
return ret;
}
void setup()
{
Serial.begin(9600);
Serial.println("start");
pinMode(9, OUTPUT);
pinMode(8, INPUT);
for(int i=5;i>0;i--){
Serial.print(i);
delay(1000);
}
Serial.println("0");
saisyo = get();
Serial.print("saisyo=");
Serial.println(saisyo);
}
void loop() {
long atai = 0;
atai = get();
// 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)) / 640;
omosa = omosa * 10;
Serial.print("omosa=");
Serial.println(omosa);
delay(2000);
}