Hobby Lab 趣味のモノ作り実験のサイトです。
部品 センサー他 BH1750 ハードウェア
1.概要
2.簡単につかう
3.I2Cスレーブアドレス
4.レジスタ

I2C 関係
プロトコル
 I2C について
スレーブ関係資料
 ADS1115 16bit4CH A/D
 INA226 直流電圧電流計
 BME280 気圧,湿度,気温計
 BH1750 照度計
 DS3231 時計
 SSD1306 0.96"OLED
マスター関係プログラム
 I2C RaspberryPi_設定
ADS1115
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226
 Arduino
 RaspberryPi_Python
BNE280
 Arduino
 RaspberryPi_Python
BH1750
 Arduino
 RaspberryPi_Python
DS3231
 Arduino
 RaspberryPi_Python
SSD1306
 Arduino
 RaspberryPi_Python

Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Old Processor他
Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター

1.概要

 (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)内部回路





2.簡単につかう

 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)



3.I2Cスレーブアドレス

アドレスは2種類あり
ADDR端子 スレーブアドレス
VCC 0x5C
GND 0x23



4.レジスタ

 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 0 0 1 1 1 1 1
0x1F 31 1.85 0.93
デフォルト
b 0 1 0 0 0 1 0 1
0x45 69 0.83 0.42
※2倍
b 1 0 0 0 1 0 1 0
0x8A 138 0.42 0.21
最大
b 1 1 1 1 1 1 1 0
0xFE 254 0.23 0.11

  lx/count
H mode
lx/count
H mode2
上位オペコード 下位オペコード
b 0 1 0 0 0 H H H
 
b 0 1 1 L L L L L
 
最小 1.85 0.93
b 0 1 0 0 0 0 0 0
0x40
b 0 1 1 1 1 1 1 1
0x7F
デフォルト 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倍 0.42 0.21
b 0 1 0 0 0 1 0 0
0x44
b 0 1 1 0 1 0 1 0
0x3A
最大 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 パワーダウン状態の場合でも本コードを指示することにより電源がオンになり、測定を開始する。

各モードからの遷移

更新日 2025/11/24 19:50  管理者 平林 剛Hirabayashi Takeshi