Hobby Lab 趣味のモノ作り実験のサイトです。
部品 センサー他 BME280 ハードウェア
1.概要
2.簡単につかう
3.I2Cスレーブアドレス
4.レジスタ
 ~A1h calib00..calib25
  D0h id
  E0h reset
 ~F0h calib26..calib41
  F2h ctrl_hum
  F3h stataus
  F4h ctel_meas
  F5h config
  F7h press_msb
  F8h press_lsb
  F9h press_xlsb
  FAh temp_msb
  FBh temp_lsb
  FCh temp_xlsb
  FDh hum_msb
  FEh hum_lsb
5.出力補正計算

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
 Si4735について
 Si4735ラジオを作って見よう1
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 電源電圧 DC1.71~3.6V
2 通信方式 I2C(最大3.4MHz)
SPI(最大10MHz)
3 測定レンジ・精度 温度:-40~+80℃±1℃
湿度:0~100%±3%
気圧:300~1100hPa±1hPa
4 分解能 温度:1℃
湿度:1%
気圧:1hPa
5 消費電流 1.8μA:1Hz湿度・温度
2.8μA:1Hz圧力・温度
3.8μA:1Hz湿・圧力・温度
0.1μA:スリープモード

 (2)ピン

ピンと目的は下表のとおり
PIN DEVICE DESCRIPTION
1 VDD Power supply: 3.3V to 5V
2 GND Ground I2C slave address select
3 SCL Serial clock input: Clocks data on SDA
4 SDA Serial data: Transmits and receives data
写真の右側はVDDが5V対応になっている。
左側はSPI対応品

 (3)内部回路





2.簡単に使う

 手順は
(1) 設定 (1-1)~(1-3)  
(2) 補正値取得 要求(2-1Req)~(2-3Req) 返信(2-1Res)~(2-3Res)
(3) データ取得 要求(3-1Req) 返信(3-1Res)
 です。

 (1)設定

 (1-1)温度測定条件設定 湿度のオーバーサンプリングの設定
 湿度のオーバーサンプリング ×1に設定
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
 ③温度測定条件設定レジスタの設定
->
ー>
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0xF2(※温度測定条件設定レジスタ)
0x01


 (1-2)温度測定条件設定 温度、気圧のオーバーサンプリングとモードの設定
 温度、気圧のオーバーサンプリング ×1、ノーマルモードに設定
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
 ③温度測定条件設定レジスタの設定
->
ー>
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0xF4(※温度、気圧測定条件設定レジスタ)
0x27  b 0010 0111


 (1-3) ディバイスのレート、フィルタ、およびインターフェース オプションの設定
 通常モードでの非アクティブ期間tstandby =1000ms に設定
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
 ③温度測定条件設定レジスタの設定
->
ー>
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0xF5 (※温度測定条件設定レジスタ)
0xA0   b 1010 0000


 (2)補正値の取得

  値の要求(2-1Req)~(2-3Req)  値の返信(2-1Res)~(2-3Res)
 3回に分けて補正パラメータを取得します。


 (2-1Req)値の要求
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0x88 (※補正データ calib00)
 (2-1Res)値の返信   レジスタ0x88から24個のデータを取得
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0x87 ~ 0x10 24個




 (2-2Req)値の要求
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0xA1 (※)
 (2-2Res)値の返信    レジスタ0xA1から1個のデータを取得
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの返信
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0x4B


 (2-3Req)値の要求
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0xE1 (※)
 (2-3Res)値の返信    レジスタ0xE1から7個のデータを取得
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの返信
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0x 76 0100 12 23 03 1E


(2-1Res)~(2-3Res)値の返信まとめ 
 取得データ 32個の役目  Symbol 「Tn」 は圧力関連値 「Pn」は湿度関連値
Add 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
Data 87 6F 01 68 32 00 C7 8E 3F D6 D0 0B 34 1F BB FF F9 FF AC 26 0A D8 BD 10
Symbol T1 T2 T3 P1 P2 P3 P4 P5 P6 P7 P8 P9
Exc 6F 87 68 01 00 32 8E C7 D6 3F 0B D0 1F 34 FF BB FF F9 26 AC D8 0A 10 BD
Value 28551 26625 50 36551 54847 3024 7988 65467 65529 9888 55306 4285

Add A1 E1 E2 E3 E4 E5 E6 E7
Data 4B 76 01 00 12 23 03 1E
Symbol H1 H2 H3 H4 H5 H6
Exc 4B 01 76 00 12 23 23 03 1E
Value 75 374 00 4643 8963 30
上記T1~T3およびP1~P9、H1~H6の補正値により次に取得するデータを加工して、気圧・湿度・温度を算出する。 
詳細計算方法は「4.出力補正計算」を確認下さい。

 (3)データ取得

 温度、湿度、気圧データの取得
 (3-1Req)値の要求
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの選択
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0xF7 (※)

 (3-1Res)値の返信(温度、湿度、気圧データ)
 ①読取るBME280のスレーブアドレス番号
 ②設定するレジスタの返信
->
ー>
76   詳細は「2.I2Cスレーブアドレス」参照
0x  53 4C 00  86 81 00  66 40

データと測定項目一覧表
Add Data 測定項目
F7,F8,F9 53,4C,00 気圧
FA,FB,FC 86,81,00 温度
FD,FE 66,40 湿度

補正値によりデータを計算した測定結果は
TEMP : 29.88 DegC PRESS : 998.10 hPa HUM : 42.93 %



3.I2Cスレーブアドレス

SDA端子と下記表の端子を接続することによりスレーブアドレスが決定する。
No SDA スレーブアドレス
1 GNDと接続 0x76
2 SDOと接続 0x77



4.レジスタ

レジスタ一覧表
No アドレス 名称 説明 Type
1 0x88..0xA1 calib00..calib25 補正用データ R
2 0xD0 id チップID R
3 0xE0 reset リセット W
4 0xE1..0xF0 calib26..calib41 補正用データ R
5 0xF2 ctrl_hum 温度測定条件設定 R/W
6 0xF3 stataus ステータス R
7 0XF4 ctel_meas 測定条件設定 R/W
8 0xF5 config 動作設定 R/W
9 0xF7 press_msb 気圧データ(上位8bit) R
10 0xF8 press_lsb 気圧データ(下位8bit) R
11 0xF9 press_xlsb 気圧データ(最下位4bit) R
12 0xFA temp_msb 温度データ(上位8bit) R
13 0xFB temp_lsb 温度データ(下位8bit) R
14 0xFC temp_xlsb 温度データ(最下位4bit) R
15 0xFD hum_msb 湿度データ(上位8bit) R
16 0xFE hum_lsb 湿度データ(下位8bit) R

(1)0x88 calib00~calib25

 補正値で計算方法は 「4.出力補正計算」を確認下さい。
[レジスター一覧表に戻る]


(2)0xD0 idレジスタ 「チップID」

「id」レジスタにはチップ識別番号chip_id[7:0](0x60)が含まれています。
この番号は、デバイスのパワーオンリセットが完了するとすぐに読み取ることができます。
[レジスター一覧表に戻る]


(3)0xE0 resetレジスタ「リセット」

「リセット」レジスタにはソフトリセットワードリセット[7:0]が含まれています。
レジスタに値0xB6が書き込まれると、デバイスは完全なパワーオンリセット手順を使用してリセットされます。
0xB6以外の値を書き込んでも効果はありません。読み出し値は常に0x00です。
[レジスター一覧表に戻る]


(4)0xE1~ calib26

 補正値で計算方法は 「4.出力補正計算」を確認下さい。
[レジスター一覧表に戻る]


(5)0xF2 ctrl_humレジスタ 「温度測定条件設定」

「ctrl_hum」レジスタは、デバイスの湿度データ取得オプションを設定します。
このレジスタへの変更は、「ctrl_meas」への書き込み操作後にのみ有効になります。
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
-- -- -- -- -- osrs_h[2:0]
湿度データのオーバーサンプリングを制御します。下表を参照してください。
設定については を、詳細についてはデータシート 3.4.1 章を参照してください。
bit 湿度/温度のオーバーサンプリング RMSノイズ※
000 スキップ(出力は0x8000に設定)  
001 ×1 / ×1 0.07
010 ×2 / ×1 0.05
011 ×4 / ×1 0.04
100 ×8 / ×1 0.03
その他 ×16 / ×1 0.02
 ※25℃における湿度で
[レジスター一覧表に戻る]


(6)0xF3 statausレジスタ 「ステータス」

「ステータス」レジスタには、デバイスのステータスを示す 2 つのビットが含まれています。
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
-- -- -- -- measuring[0] -- -- im_update[0]
measuring[0]
変換が実行中の場合は自動的に「1」に設定され、結果がデータ レジスタに転送 されると「0」に戻ります。

im_update[0]
NVM データがイメージ レジスタにコピーされるときに自動的に '1' に設 定され、コピーが完了すると '0' に戻ります。
データは、パワーオン リセ ット時および各変換の前にコピーされます。
[レジスター一覧表に戻る]


(7) 0xF4 ctrl_measレジスタ

「ctrl_meas」レジスタは、デバイスの圧力と温度のデータ収集オプションを設定します。
変更を有効にするには、 「ctrl_hum」を変更した後にレジスタに書き込む必要があります。
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
osrs_t[2:0] osrs_p[2:0] mode[1:0]
osrs_t[2:0]
温度データのオーバーサンプリングを制御します。
設定については 下表を、詳細についてはデータシート第 3.4.3 章を参照してください。
bit 温度のオーバーサンプリング RMSノイズ※
000 スキップ(出力は0x8000に設定)  
001 ×1 0.005
010 ×2 0.004
011 ×4 0.003
100 ×8 0.003
その他 ×16 0.002
 ※25℃における温度で

osrs_p[2:0]
圧力データのオーバーサンプリングを制御します。
下表を参照してください。設定については を、データシート詳細については 3.4.2 章を参照してください。
IIRフィルタ係数
bit 気圧/温度のオーバーサンプリング オフ 2 4 8 16
000 スキップ(出力は0x8000に設定)          
001 ×1 / ×1 3.3 1.9 1.2 0.9 0.4
010 ×2 / ×1 2.6 1.5 1.0 0.6 0.4
011 ×4 / ×1 2.1 1.2 0.8 0.5 0.3
100 ×8 / ×1 1.6 1.0 0.6 0.4 0.2
その他 ×16 / ×2 1.3 0.8 0.5 0.4 0.2

mode[1:0]
デバイスのセンサーモードを制御します。
下表を参照してください。
設定については を、詳細については データシート3.3 章を参照してください。
bit モード
00 スリープモード
01又は10 強制モード
11 ノーマルモード
[レジスター一覧表に戻る]


(8) 0xF5 configレジスタ 「config」 1010 0000

「 config」レジスタは、デバイスのレート、フィルタ、およびインターフェース オプションを設定します。
通常モードでは、「config」レジスタへの書き込みは無視される場合があります。
スリープ モードでは、書き込みは無視されません。
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
t_sb[2:0] filter[2:0] -- spi3w en[0]
t_sb[2:0]
通常モードでの非アクティブ期間tstandbyを制御します。
設定については下表 を、詳細についてはデータシート第 3.3.4 章を参照してください。
bit スタンバイ(ms)
000 0.5
001 62.5
010 125
011 250
100 500
101 1000
110 10
111 20

filter[2:0]
IIRフィルタの時定数を制御します。
下表を参照してください。
設定については を、詳細については データシート3.4.4 章を参照してください。
bit フィルタ係数 サンプル数※
000 オフ 1
001 2 2
010 4 5
011 8 11
その他 16 22
 ※サンプルが75%以上に達するステップ応答の数

レジスタフィルタに書き込むと、フィルタはリセットされます。
次の ADC 値は変更されずにフィルタを通過し、フィルタの初期メモリ値になります。
温度または圧?の測定がスキップされた場合、出力レジスタが 0x80000 に設定されていても、対応するフィルタ メモリは変更されません。
以前にスキップされた測定が再度有効になると、測定がスキップされなかった最後のときのフィルタメモリを使用して出力がフィルタされます。
これが望ましくない場合は、フィルタを再初期化するためにフィルタレジスタに書き込んでください。
さまざまなフィルタ設定のステップ応答(たとえば、高さの突然の変化に対する応答)が図 7 に表示されています。

spi3w_en[0]
'1'に設定すると3線式SPIインターフェースが有効になります。
詳細については データシート6.3章を参照してください。
[レジスター一覧表に戻る]


(9)pressレジスタ 0xF7…0xF9

「気圧データ」(_msb、_lsb、_xlsb)
「press」レジスタには、生の圧力測定出力データup[19:0]が含まれています。
デバイスから圧力と温度の情報を読み出す方法の詳細については、データシート第4章を参照してください。
[レジスター一覧表に戻る]


(10)tempレジスタ 0xFA…0xFC

「温度データ」(_msb、_lsb、_xlsb)
「temp」レジスタには、生の温度測定出力データut[19:0]が含まれています。
デバイスから圧力と温度の情報を読み出す方法の詳細については、データシート第4章を参照してください。
[レジスター一覧表に戻る]


(11)hum レジスタ 0xFD…0xFE

「湿度データ」(_msb, _lsb)
「temp」レジスタには、生の温度測定出力データut[19:0]が含まれています。
デバイスから圧力と温度の情報を読み出す方法の詳細については、データシート第4章を参照してください。
[レジスター一覧表に戻る]



5.出力補正計算

補正計算に使用するデータはBME280のレジスタアドレス 0x88(データ数24個)、0xA1(データ数1個)、0xE1(データ数7個) の3箇所から得られるデータを使用する。
下記表は各々のデータが何に関連するのかを示す。
なお表の
 「Add」はレジスタアドレスを示す
 「Data」はレジスタアドレスのデータを示す(1項で取得したデータ例)
 「Symbol」の 「Tn」 は圧力関連値 「Pn」は湿度関連値を示す。
 「Value」は各Symbolの値(10進数)を示す。

出力補正データ一覧表
Add 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
Data 87 6F 01 68 32 00 C7 8E 3F D6 D0 0B 34 1F BB FF F9 FF AC 26 0A D8 BD 10
Symbol T1 T2 T3 P1 P2 P3 P4 P5 P6 P7 P8 P9
Exc 6F 87 68 01 00 32 8E C7 D6 3F 0B D0 1F 34 FF BB FF F9 26 AC D8 0A 10 BD
Value 28551 26625 50 36551 54847 3024 7988 65467 65529 9888 55306 4285

Add A1 E1 E2 E3 E4 E5 E6 E7
Data 4B 76 01 00 12 23 03 1E
Symbol H1 H2 H3 H4 H5 H6
Exc 4B 01 76 00 12 23 23 03 1E
Value 75 374 00 4643 8963 30

BME280のデータシートでは補正値により下記方法を参照する事と言っている。



















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