0
1

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 3 years have passed since last update.

BH1750について

Last updated at Posted at 2020-05-09

BH1750FVIのモジュールが安価に入手できたので使い方を調べてみました。

BH1750の英語のデータシートはネットで入手できます。BH1750はすでにディスコンになっていて、後継のチップはBH1721FVCなどになるようです。BH1721FVCのデータシートは日本語のものがロームのサイトにありました。仕様が一部変更されているようです。

BH1750のデフォルトのI2Cアドレスは0x23で通常はContinuously H-Resolution Modeの0x10を書くと、その後2バイトづつデータ読めます。

値(Lux)はデフォルトでは

((buff[0] << 8) | buff[1]) / 1.2

この場合0.83ステップでのデータになります。ほとんど整数値に近いので

((buff[0] << 8) | buff[1]) * 5 / 6

と整数演算しても良いかもしれません。

これより細かいステップでデータを取得したい場合はMtregを使う必要があります。Mtregは31から254でデフォルトが69となります。

例えば254の場合は

(((buff[0] << 8) | buff[1]) * 69) / (1.2 * 254)

で0.23ステップになります。

またH-Resolution Mode2(0x11)ではこれの半分のステップになります。

読み取れるデータはこうなっていて

スクリーンショット 2020-05-09 11.17.36.png

例えばbuff[0] = 0,buff[1] = 1の場合

2の-1乗は0.5なので

(0.5 * 69) / (1.2 * 254) = 0.11

となります。

2の0乗は1ってこと忘れてました。^ ^;

Mtregを小さくすれば100000Luxまで測れるようですが、逆に大きくすると上限は小さくなります。Mode2でMtregが254の場合7417がMAXなので、5000以上になる場合は通常モードやMtregを小さくして計測するのが良いです。

7400付近でさちってます。

スクリーンショット 2020-05-11 8.41.53.png

H-Resolution Mode2でMtreg=254にしてmrubyスクリプトで20秒おきにデータを拾ってThingSpeakに投げてみました。

最初に試した時にはいきなり小さい値が出てきたりして安定しませんでした。

スクリーンショット 2020-05-10 7.56.30.png

蟹さんとI2Cバスリピーター(PCA9515AD)を挟んでつないでいたのですが、直接つないだら正常に動くようになりました。

スクリーンショット 2020-05-11 5.00.32.png

蟹さんのJTAGピンをGPIOにしてBITBANGでI2Cしているのですが、このピンは内部でpull-up(75K)されていているのが原因で、動作が変な気がします。

0.11ステップでとれてるようなのですが、データが滑らかになっていません。

pull-up抵抗を調整したりデバイスを増やしてみたりしていたところ、挙動が変わりました。謎です。

スクリーンショット 2020-05-12 10.12.19.png

mrubyスクリプトはまずOne TimeのL-Resolution Modeでデータを取得して、1000以下の場合はH-Resolution Mode2で再取得するようにしました。

BH1750はModeやResolutionを動的に変えると変な動きになるので、変えない方が良さそうです。暗い方を細かく取りたい場合はHigh Mode2でMtregを大きくして、明るい方を上限まで取りたい場合はLow ModeでMtregを小さくするとよいでしょう。

蟹さんのmrubyはfloatが使えないので100倍の整数演算で計算して文字列にして小数点を付けてます。

入手したモジュールはGY-302と呼ばれているもののようです。

写真(2020-05-09 9.55).jpg

回路はこんなになってるようです。

GY-302.png

このチップのVCCの標準は3.0Vで3.3Vではありません。3.3Vでも動きますが。またこのモジュールにはI2Cのレベル変換がないので、5Vで使うのは規定範囲から外れます。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?