4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

重量センサーを使いたい

Last updated at Posted at 2022-02-25

重量センサーを使ってみた

重量センサーで遊びたいと思い、とりあえずobnizに繋いでみました
IMG_6145.jpg

試しにちゃんと測れるか確認してみます
↓「12グラム」です。ちなみにこのプラモデルはヘキサギアの「ビアンコ」というものです。
IMG_6144.jpg

01.js

const Obniz = require('obniz');
const obniz = new Obniz('xxxx-xxxx');

obniz.onconnect = async () => {
    //ロードセルを使用
    var sensor = obniz.wired('hx711' , {gnd:0, dout:1, sck:2, vcc:3} );
    var value = await sensor.getValueWait(1); //1 times average
      console.log('grams:' + value );
};

↓「301971」と計測されました
ちなみに何も置いていないと「297300」になりました。
IMG_6146.jpg

どうやらそのままでグラムにはならないようです。
何も置いていない状態で0グラムになる&何か置いたらちゃんとグラムで測れるようにしたいです。

調べてみると、
setOffset
setScale
を設定しないとだめのようだったので試してみます。

まずsetoffsetを設定しました。
何も置いていない状態での計測結果をそのまま設定すると、計測値がゼロに近くなりました。
計測器が少なからず歪んでいるのでその補正をしなければいけない。と理解しました。
この状態で先ほどの「ビアンコ」を載せると、5020という数字が出ました。

02.js

const Obniz = require('obniz');
const obniz = new Obniz('xxxx-xxxx');

obniz.onconnect = async () => {
    //ロードセルを使用
    var sensor = obniz.wired('hx711' , {gnd:0, dout:1, sck:2, vcc:3} );
    sensor.setOffset(297300);
    var value = await sensor.getValueWait(1); //1 times average
      console.log('grams:' + value );
};

次にsetScaleを設定しました。
12グラムのものが5020を計測されるので、按分して係数を求めて「418」という数字が出しました。
この数字をsetScaleに設定します。
小数点がたくさんついたので小数点の処理も追加しました。

03.js

const Obniz = require('obniz');
const obniz = new Obniz('xxxx-xxxx');

obniz.onconnect = async () => {
    //ロードセルを使用
    var sensor = obniz.wired('hx711' , {gnd:0, dout:1, sck:2, vcc:3} );
    sensor.setScale(418); 
    sensor.setOffset(297300); 
    var value = await sensor.getValueWait(1); //1 times average
    var grams = Math.ceil(value);
    console.log('grams:' + grams);
};

↓何とか「12グラム」と測定されるようになりました。
IMG_6146 - コピー.jpg

別のものを載せても正しくグラムが測れたので
ややブレが生じることがあるものの、ひとまずはこれでよしとしました。

まとめ

重量センサーを使うときは、「setOffset」「setScale」を設定する必要がある。
①何も置いていない状態で計測する。
②計測された数字を「setOffset」に設定する。
③何か適当な重さのモノを計測した数字と、そのモノのグラム数を案分する
④按分した結果を「setScale」に設定する。

とりあえず、この流れをやればブレはあるもののグラムを計測することができそうです。
こういうのをキャリブレーションというみたいです。

多少ブレが生じることもあるので、もっと正しい使い方がありそうです。
数グラムの誤差があってもやりたいことができないことをなさそうなのでこのまま行こうと思います。

どなたか正しいやり方があれば教えてください。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?