飼い猫が抱っこ嫌がって体重が量れないからネコベッドに24時間秒単位で体重を計測できる体重計を作ったら、猫の睡眠時間と「睡眠時の水分発散量」っぽい物が計測できた。

動機

うちの猫はかわいい:relaxed:。1歳、しろきじ、前の飼い主が買えなくなって最近来た。

今回の主人公
Image from iOS (3).jpg

Image from iOS (1).jpg

とにかく抱っこが大っ嫌いだ。なのでよほどのことがなければ抱っこなんてしない。
だから体重が量れない!
爪が切れない!!(寝ているときにそっと切らせてもらう)

抱っこがダメな猫のために、良い体重の測り方はないものか??

市販の体重計は使えないのか?

普通に乗ることがない:joy:
餌を置いても、体重計をONにすると逃げる。
遠くにいると体重が見えない:sob:
オートオフ機能:sob:
WIFIでとばす体重計があるらしいが、いつ乗るかわからんしね:sob:

体重量るのがめんどくさくなってしまう。:sob::sob:

かわいい猫よ!!!人類の英知をなめるなよ!!抱っこしなくても体重くらい量ってやる!

ってことで、産業用、研究用なら24時間重さを計測するなにか変な物があるはずや!!
それが・・・意外とないんですよね。。
「上皿自動秤」「ばねばかり」が一番それに近いんです。アナログだし24時間量ってるようなもんだし・・・
カメラ仕込めば24時間量れるなぁ・・っと
でもこれブニョブニョして猫がいそうなところに仕込めないんですよ。そもそも小さいし・・
物理的に負荷が永遠かかっている状態って校正必要になるしなぁ・・・

重量センサーってないんですかね?って検索するとあるわ!。

image.png

こんな感じの金属

これから出る電圧をプリアンプ通してPCのオーディオインプットに入れたらいけるんじゃね??
96Khz24bitという無駄なサンプリングレートで体重を計測しまくるんや!!
(そもそもローカットされて入力されないじゃん!)

ってことでADコンバータにつなげる何かを・・・・そしたら
「ロードセル専用のA-DコンバータHX711」ってすげーー便利なもんがあるんですよ。
そうよね。。。あるよね。。センサーだもん。
AMAZONで早速購入!
「デジタルロードセル重量センサ20KGポータブル電子キッチンスケール HX711計量センサーモジュールArduinoと互換」

image.png

組み立て

Image from iOS (2).jpg
いろいろ準備とかすっ飛ばしてこんな感じです。
20年ぶりくらいの電子工作ですよ!

ひさしぶりの半田付け・・・おっさんには・・こまかいっす。

余っていたRaspberryPiを使います。

AMAZONクオリティーなので配線図?とかデータシートとか一切なし。基盤透かして確認しました。

秋月電子でちゃんとしたの買ってください。安いし。。

1時間ほどしらべて、チップのどの足がどれにつながっていればいいか、やっとわかりました。。
(こちとら素人なんだよ:sob:

んで・・
Image from iOS (5).jpg

くみたて、なんでグルーガン?ってのは・・・・この板に取り付けたからです。

Image from iOS.jpg

幅400*350の板に設置したら、ユラユラでかさ上げしないと接地しちゃうんです。
かさ上げにはナットを使ってるんですが、この設置個所だと一度ナットを積み上げないといけないのでグルーガンです。

で・・・・
https://github.com/tatobari/hx711py.git
をcloneして校正して・・・
qiita的にここが重要だろう!!と思いますが他のqiitaの記事にあるのでそこは書きません。:hugging:
今回は「猫と体重計」です!!:relaxed:

取得したデータをElasticsearchへ送ってKibana で確認。

image.png

一秒単位のグラフです。
猫があそんでるときに、たまたま計測した:blush:
世界で一番しょうもないと思われるElasticsearchとKibanaの使い方です。:blush:

なにも重さがかかってないときでも、+-4gほどノイズが乗るんですよ。
さらに最大20グラムの大きな波が30分間隔であるっぽい。

ここからが本題

このままだと、ユラユラでブニョブニョしてロードセルにしっかりと荷重がかからない。
ユラユラ揺れるので猫が乗らないという実用に耐えられない体重計が出来上がってしまいました。

↓無荷重
1234556.jpg

↓荷重あり
Image from iOS (1).jpg
ぐにゃ~:joy::joy::joy:

これじゃぁー人間の体重計にもならん。

工作中にたまたま獣医師さんが見に来て、
「なにやってんすか(笑)」
「だっこできないから・・・人類の英知で・・・:sob:
「ねこの体重そんなに量らなくていいですから!(笑)」
というやりとをする:sob:

本気出すぜ

もうここまで来たら引き下がれません。4ポイントでささえます。
秋月電子へ発注!

秋月電子のHX711は秒10回のサンプリング固定みたいです。
1枚で2つのロードセルを接続できます。

Image from iOS (4).jpg
このターミナルって部品がね・・よくわからなくて。。ジョイントできるんですよ。
1枚はしらなくて無理やりくっつけた。

Image from iOS (3).jpg
いろいろすっ飛ばしてこんな感じです。
困ったときのダクトテープです!
DIYだ!!

original - コピー.jpg

1234.jpg
RaspberryPiの設置部分がなくて・・・収まりどころが悪くて・・・
ノミで削って・・・ノミの刃が切れなくて苦しかった。
こんな感じです。

プログラム

上記のgithubのソースを変えていきます。

hx = HX711(5, 6)
hx.set_reading_format("MSB", "MSB")
hx.set_reference_unit_A(104.2003)
hx.set_reference_unit_B(-24.513)

hx.reset()

hx2 = HX711(13, 19)
hx2.set_reading_format("MSB", "MSB")
hx2.set_reference_unit_A(103.3425)
hx2.set_reference_unit_B(-23.62031)
hx2.reset()

hx.tare_A()
hx.tare_B()

hx2.tare_A()
hx2.tare_B()

while True:
    try:

        val_A = hx.get_weight_A(5)
        val_B = hx.get_weight_B(5)


        val_C = hx2.get_weight_A(5)
        val_D = hx2.get_weight_B(5)

        val=val_A+val_B+val_C+val_D
        print(val, val_A, val_B, val_C, val_D)


        hx.power_down()
        hx.power_up()
        hx2.power_down()
        hx2.power_up()

        time.sleep(0.8)

    except (KeyboardInterrupt, SystemExit):
        cleanAndExit()


2枚のHX711を使うので、二つのインスタンスを作ります。
4ポイントあるので合算します。

実際に使ってみてわかったこと

  • hx711のデータシートを見るとBチャンネルはおまけみたいな感じでgain32固定です。
  • 英語の理解が正しいかよくわかりませんがBチャンネルを使うには5Vを入力しろって書いてあります。
  • Bチャンネルの入力は逆相になってる。(だからマイナスが返ってくる)
  • Bチャンネルのgainが小さいからreferenceUnitが小さい

バグ

https://github.com/tatobari/hx711py/blob/master/hx711.py
のコードが間違っているので修正します。

    def get_reference_unit(self):
        return get_reference_unit_A()

selfがないので

    def get_reference_unit(self):
        return self.get_reference_unit_A()

こんな感じで修正。

完成!!

bbb.jpg
黄色バスタオルの下に設置してます。
この時のわが猫の体重↓

image.png

3700グラム付近を指しています。
寝始めから1時間後に20グラムほど軽くなってます。これは水分が抜けているのか??20グラムの波なのか??

猫がこのベッドで寝ているとき時間が分かるのでスゴイなぁ:blush:
ちょっと前に獣医師のところに行って量ったときは3666でしたので誤差ですね。(餌とか水分とか)

久しぶりに半田つかったので楽しかったです。:relaxed:

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account