部品実験 元に戻る

BH1750 2024/11/02

本文目次

本文以外目次
1.簡単につかう
2.I2Cスレーブアドレス
3.レジスタ
4.概要
1.BH1750 Arduinoプログラム
2.BH1750 Pythonプログラム(RaspberrPi)


本   文
1.簡単につかう
 BH1750は照度センサー。
 アクセスの仕方(BH1750の連続高精度値を読む方法)
 I2Cの信号の並びは スレーブアドレス(以下SAと言う)+オペコード 又は SA+返信データ(2Byte)です。
 信号の内容は3つ ①設定を送る ②動作を要求する ③動作の返信(照度データ2Byte)

(1)設定を送る(オペコード)
 BH1750の設定は「高額窓の影響を考慮したセンサー感度調整」しか有りません。
 この感度調整用の設定値は「3.レジスタ(2)高額窓の影響を考慮したセンサー感度調整方法」を参照。
 今回はデフォルト値(0x42、0x65)をBH1750に設定する。
 上位バイト送信
  ①読取るBH1750のSA番号
  ②オペコードの指示
->
->
0x23
0x42

 下位バイトの送信
  ①読取るBH1750の※SA番号
  ②オペコードの指示
->
->
0x23
0x65



(2)動作の要求
 動作については今回指示するう「連続高精度解像モード」を含め9つあり。
 詳細は「3.レジスタ(3)動作モードについて」を参照。

 連続高精度解像モードで要求
  ①読取るBH1750の※SA番号
  ②オペコードの指示
->
->
0x23
0x10



(3)動作の返信(照度データ)
 高精度解像度の場合は「(2)動作の要求」から標準で120ms経過してからSA番号を送る事。
 低解像度の場合は(2)値の要求から標準で16ms経過してからSA番号を送る事。
  ①読取るBH1750の※SA番号
  ②値の返信 2BIT
->
->
0x23
0x01 0xE3

 lxの求め方 0x01E3 /1.2 = 483/1.2 = 402.50(lx)
[目次に戻る]


2.I2Cスレーブアドレス
アドレスは2種類あり
ADDR端子 スレーブアドレス
VCC 0x5C
GND 0x23
[目次に戻る]


3.レジスタ
 I2Cの信号の並びは スレーブアドレス(以下SAと言う)+オペコード 又は SA+返信データ(2Byte)です。
(1)オペコード
 下記表の
 No10,No11が設定で使用し、「(2)高額窓の影響を考慮したセンサー感度調整方法」を参照。
 No1~No9は動作の要求で使用し、「(3)動作モードについて」を参照。
No オペコード 概   要
1 b0000 0000 0x00 パワーダウン
2 b0000 0001 0x01 電源オン
3 b0000 0111 0x07 リセット
4 b0001 0000 0x10 連続H解像度モード
5 b0001 0001 0x11 連続H解像度モード2
6 b0001 0011 0x13 連続L解像度モード
7 b0010 0000 0x20 ワンタイムH解像度モード
8 b0010 0001 0x21 ワンタイムH解像度モード2
9 b0010 0011 0x23 ワンタイムL解像度モード
10 b0100 0xxx 0x40~0x47 ゲイン調整上位値
11 b011x xxxx 0x60~0x7E ゲイン調整下位値

(2)高額窓の影響を考慮したセンサー感度調整方法
BH1750FVIは、センサー感度を変更することができます。
この機能を使用することで、光学窓の影響(光学窓の有無の違い)をキャンセルすることができます。
調整は、測定時間を変更することで行います。
たとえば、光学窓の透過率が50%(光学窓を設定すると測定結果は0.5倍になる)の場合、センサー感度をデフォルトから2倍に変更することで、光学窓の影響を無視できます。

この調整は (測定時間レジスタ) の値を変更することで、センサー感度をシフトします。
センサー感度の目標が 2 倍の場合、MTreg 値は 2 倍に設定する必要があります。
MTreg 値をデフォルトから 2 倍に変更すると、測定時間も 2 倍に設定されます。

MTreg 値はデフォルトが69(0x45)をデフォルト値として最小が31(0x1F)~254(0xFE)まで設定が出来ます。
ただしBH1750へ設定を指示する場合はオペコードとして2Byteにして2回に分けて指示します。
下はデフォルト値(0x42、0x65)を設定した場合を示している。


MTreg 値をオペコードにする方法は下表のとおり
MTreg
b H H H L L L L L
オペコード
b 0 1 0 0 0 H H H
b 0 1 1 L L L L L
上位 下位
   H=上位bit  L=下位bit   

MTreg 値からオペコードへ変換した値一覧
  Mtreg値 lx/count
H mode
lx/count
H mode2
上位オペコード 下位オペコード
b H H H L L L L L
16 10
b 0 1 0 0 0 H H H
 
b 0 1 1 L L L L L
 
最小
b 0 0 0 1 1 1 1 1
0x1F 31 1.85 0.93
b 0 1 0 0 0 0 0 0
0x40
b 0 1 1 1 1 1 1 1
0x7F
デフォルト
b 0 1 0 0 0 1 0 1
0x45 69 0.83 0.42
b 0 1 0 0 0 0 1 0
0x42
b 0 1 1 0 0 1 0 1
0x65
※2倍
b 1 0 0 0 1 0 1 0
0x8A 138 0.42 0.21
b 0 1 0 0 0 1 0 0
0x44
b 0 1 1 0 1 0 1 0
0x3A
最大
b 1 1 1 1 1 1 1 0
0xFE 254 0.23 0.11
b 0 1 0 0 0 1 1 1
0x47
b 0 1 1 1 1 1 1 0
0x7E
  H mode  lx/count = 69/(Mtreg値x1.2)
  H mode2 lx/count = 69/(Mtreg値x1.2x2)


(3)動作モードについて
各オペコードの内容は下表のとおり
コード 項  目 コメント
0x00 パワーダウン 消費電力を小さくするモードでこれを復帰する場合は0x01電源ONを指示すること。
消費電流は標準で120μAが0.01μAになります。
0x01 電源オン ワーダウンの状態から電源をオン状態にし測定・リセットコマンドを待ちます。
0x07 リセット ※1 データレジスタ値をリセットします。
0x10 連続H解像度モード ※2 1lx解像度で測定開始 測定時間は120ms必要
0x11 連続H解像度モード2 ※2 0.5lx解像度で測定開始測定時間は120ms必要
0x13 連続L解像度モード ※2 4lx解像度で測定開始測定時間は16ms必要
0x20 ワンタイムH解像度モード ※2 連続モードのコメント測定後jは自動的にパワーダウンモード移行
0x21 ワンタイムH解像度モード2 ※2 連続モードのコメント測定後jは自動的にパワーダウンモード移行
0x23 ワンタイムL解像度モード ※2 連続モードのコメント測定後jは自動的にパワーダウンモード移行
※1 パワーダウン状態の場合は「電源オン」指令を出してからこのコードを指示すること。
※2 パワーダウン状態の場合でも本コードを指示することにより電源がオンになり、測定を開始する。

各モードからの遷移

[目次に戻る]


4.概要
(1)仕様
No スペック 説  明
1 電源電圧 DC2.4~3.6V
2 通信方式 I2C
3 測定レンジ・精度 照度:1~65535 lx
4 分解能 0.5 lx(高解像度モード2)
5 消費電流 120μA 電源オン状態
0.01μA: 電源オフ状態

(2)ピン
ピンと目的は下表のとおり
PIN DEVICE DESCRIPTION
1 ADDR スレーブアドレス制御端子で
GNDに接続することで0x23
Vccに接続することで0x5Cとなります。
2 SDA データの送受信I2CのSDA母線に接続します、
3 SCL クロック入力でI2CのSCL母線に接続します
4 GND Ground
5 VDD Power supply: 3.0V (2.4~3.6V)
Pinは写真左から1番と呼ぶ

(3)内部回路

[目次に戻る]