いっちーのブログ

アクセスカウンタ

zoom RSS 技術メモ11 体重計_前編(Arduino)

<<   作成日時 : 2016/02/11 21:34   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

体重計の出力をUnity5で読み取って遊んでみようと思った。
体重測定までとはいかないが、体重移動がわかれば、面白いインターフェースになるだろう。
やった内容をメモ書きとして残す。

まずは体重計を購入する。
中に入っている重さセンサ自体をネットでも売っている。
ただ、高いのでセンサのみの購入は断念した。
画像

タニタ製「HD660」をヨドバシ.comから \1,410‐ で購入。
中を開けるとこんな感じだ。
画像

四隅にセンサがあり、配線が回路基板と液晶がある中央部に集まっている。
さらに中央部もあけてみる。
画像

基板上の回路がどうなっているのかを追ってみようとトライしたが、よくわからなかった。
専用に処理用のICがあるんじゃないか。回路部分は流用できぬ模様。

四隅には「A」「B」「C」「D」の刻印がある。
ツメを外すと中のセンサを取り出せた。
画像

左の金属がセンサで「歪みゲージ(ロードセル)」というらしい。
原理的には重いものが乗るとこの金属が歪み、抵抗値が変わるので、それを測定すれば、重さがわかるということのようだ。
線が3本(赤、白、緑)出ている。
デジマルで抵抗値を測ると、赤‐白間2kΩ、赤‐緑間1kΩ、白‐緑間1kΩとなっていた。
赤‐白の間に1kΩの抵抗が二つ直列につながっており、抵抗同士の接続部から緑が出ているのであろう。
この二つの抵抗のうちどちらか一つ、あるいは両方が重さにより変化するのだと思う。

センサの出力を読みに行く前に体重計の大きさを変えよう。
このままでは乗りにくい。少なくとも足を肩幅くらいに開いても乗れるようにしたい。
センサを戻し、横(長いほう、30pくらいある。)にのこぎりで3等分してみる。(真ん中は不要)
画像

センサから出ている線を途中で切り、別の線をはんだ付けして伸ばす。
センサから出ている線は細く、ちょっと力を入れるだけで切れるので注意したほうが良い。
ちなみにつなぐ用の緑の線が見当たらなかったので、黒い線で代用している。
画像

線を保護するため布テープで固定、回路につなぎ易いように先端にコネクタをつけてみた。
画像

ホームセンターで木板を買ってきた。
18oの厚さの「ラジアタパイン材」というやつだ。
自分(60sくらい)が乗ったくらいでは特に曲がったりしないので、強度はあると思う。
強力両面テープで割った体重計をくっつける。
画像

なお、このままひっくり返すと、左後に「A」、左前「B」、右前「C」、右後「D」の刻印のセンサがくることになる。

上に乗っかる準備ができたので、回路の準備をする。
画像

ただArdunooにつないでも、抵抗値の変化量が小さいので読み取れない。
負帰還増幅回路で変化量を300倍に増幅してやる。
左で1kΩ抵抗を二つ使い5Vを分圧して、2.5Vを作成している。
これを基準電圧として、オペアンプ(LM2902)の+側に入れる。
センサの白線を5V、赤線をGND(0V)につないだ。
センサに何も乗っかっていなければ緑線からも2.5Vが出力されるはずだ。
これを抵抗1kΩを介して、−側につなぐ。
−側にはオペアンプの出力から300kΩの期間抵抗がつながっている。
このため、−側の入力と2.5V(+側の基準電圧)の差分が−300倍(300k÷1k)されて、オペアンプから出力され、Arduinoのアナログ入力ピンに入力される。
例えば、単純計算だが、白‐緑間の抵抗が1Ω変化したとすると、緑線からの出力は (5/2001)×1000 = 2.49875V となる。
これと2.5Vとの差分 -0.00125V が-300倍され、オペアンプの出力は2.875V(2.5-0.00125×(-300))となる。
実際に出力を測定してみるため、回路を作る。
画像

サンハヤト製のArduino用基板を購入して、回路をはんだ付けした。
足位置がArdunoと同じなので、このままArduinoにさして使える。
しかし、この基板はArdunoのSDAやSCLにつなぐ位置に穴がない。
今回は関係ないが、ArduinoでI2C通信を使うときに使えないんじゃないか?
サンハヤトらしくない手際の悪さだ。
ちなみに表面の手前に出ているピンはセンサの出力につけたコネクタを指すためのものだ。

さっそくセンサとArduno、ArduinoとパソコンPCをつなぐ。
画像

さらにPCで出力を確認。
左側がArdunoのスケッチ(プログラム)、右側がシリアルモニタに表示させたセンサの出力だ。
画像

500msごとにArduinoのアナログピンから入力値を読み取っている。
読み取り後、シリアルモニタに数値を表示させ、改行している。
シリアルモニタにはA,B,C,Dの後にセンサA、センサB、センサC、センサDの値がそれぞれ出ている。
ちなみにArduinoのアナログ入力ピンは10bit(0〜1023)の分解能を持っている。
USBからの5Vの電源で動いているとして、単純にシリアルモニタの数値1あたり約4.9mV(5V/1023)ということになる。
だとすると各出力はAでおよそ2.279V(465×0.0049)、Bで2.519V、Cで2.210V、Dで2.729Vとなる。
木板はそんなに重くないので、何も乗ってない状態ではすべて2.5Vでもよさそうなものだが、実際にかなり値がずれてしまった。
原因としては、木板の貼り付け時のずれも含め、センサ自体の抵抗値のずれ、回路の精度(オペアンプのオフセット電流やオフセットずれ、抵抗の精度)などいろいろ考えられる。
ちゃんとした測定用の回路を組めばもっと2.5V付近の数字が出てきてもよいのだろうが、トライしても組める自信はないので、これで良しとする。
製品には使えたものではないだろうが、一品ものならばよいだろう。
それぞれのセンサの平均値を引き算し、補正する。
画像

補正後のスケッチとシリアルモニタである。
数値が補正されほぼ0になっている。
木板の上に乗ると値が変化した。
画像

これでセンサ側の読み取りについては準備OKだと思う。

後編にてUnityとつなげてみる。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
技術メモ11 体重計_前編(Arduino) いっちーのブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる