HS300xシリーズ(HS3001, HS3003)は、Renesas Electronics製の温度および湿度センサIC(-40~+125℃、0.0~100.0%RH)です。HS300xシリーズのOSS-ECAL(電子部品抽象化レイヤのオープンソースソフトウェア:Open Source Software for Electronic Components Abstraction Layer)を提供致します。
MCUインタフェース:I2C
ご注意:このリソースの元の言語は英語です。 翻訳は概要を便宜的に提供するもので、機械翻訳を使用していることがあり、私たちは翻訳の正確性および妥当性につきましては一切保証いたしません。 また、実際の設計などの前には、必ず最新版Datasheetをご参照くださいますようお願いいたします。
HS300xシリーズ (HS3001, HS3003)
概要
HS300xシリーズ(HS3001 and HS3003)は、高精度で完全に校正された相対湿度・温度センサーです。このMEMSセンサーは独自のセンサーレベル保護機能を備えており、高い信頼性と長期安定性を保証します。
校正および温度補正ロジックを内蔵し、標準I2C出力を介して完全に補正されたRHおよび温度値を提供。出力データのユーザー校正は不要です。
HS300xシリーズは、高精度、高速測定応答時間、長期安定性と小型パッケージの組み合わせにより、ポータブル機器から過酷な環境向けに設計された製品まで、幅広いアプリケーションに最適です。
HS300xシリーズ・デジタル・センサーは 相対湿度と温度レベルを測定します。測定データは内部で補正され 測定データは内部で補正され ユーザーによる校正は不要です。校正は不要です。
特徴
- 湿度範囲0~100%RH
- 湿度精度:±1.5% RH、標準(HS3001、10~90% RH、25°C)
- 14ビット分解能:0.01% RH typical
- 独立したプログラマブル分解能設定:8、10、12、14ビット
- 高速RH応答時間:1秒時定数(typical)(1m/秒の気流時)、4秒時定数(typical)(静止空気中)
- 温度センサー精度:±0.2℃(代表値)(HS3001、-10~+80°C)
- 低消費電流:平均1.0µA(8ビット分解能、1.8V電源)、平均24.4µA(14ビット分解能、3.3V電源)、1秒間に1回のRHおよび温度測定
- 経年変化に対する優れた安定性
- 過酷な環境条件や機械的衝撃に対する高い堅牢性
- 非常に低い消費電力
用途
- 気候制御システム
- 家電製品
- 気象観測所
- 産業オートメーション
- 医療機器
- 車室内空調
OSS-ECAL仕様
API関数
etSTS oHS300X( etCMD cmd, stHS300X_O* rlt )
oHS300X関数は、引数のコマンドcmdによってHS300xシリーズ(HS3001 and HS3003)の処理を実行するAPI関数です。
備考:
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_EXE | 実行中 | ||
eSTS_ERR_MIN | 最小温度エラー(rlt.temperatureは最小温度) または 最小湿度エラー(rlt.humidityは最小湿度) | ||
eSTS_ERR_MAX | 最大温度エラー(rlt.temperatureは最大温度) または 最大湿度エラー(rlt.humidityは最大湿度) | ||
eSTS_ERR_COMMAND_CODE | コマンド選択エラー | ||
eSTS_ERR_DATA_STALE | データ取得エラー | ||
eSTS_ERR_MODE | Programming Mode以外で次のコマンドを行った場合 eCMD_WRITE_CFG_HUMI eCMD_WRITE_CFG_TEMP eCMD_READ_ID | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー | ||
引数 IN | etCMD cmd | OSS-ECALコマンドコード | |
eCMD_READ_TEMP_HUMI | Sleep ModeからMeasurement Modeへ遷移し、Temperature RegisterとHumidity Registerの値を読み込んで温度と湿度に特性変換して、その温度と湿度をrlt.temperatureとrlt.humidityに保存するコマンド 1. Measurement Requests (0x88)をSlave addressに書き込む 2. 計測時間が経過するまで待機する(待機中は戻り値eSTS_EXE) 3. Temperature Registerの値とHumidity Registerの値を読み込む 4. Temperature Registerの読み込んだ値を温度に変換する 温度=(読み込んだ値/ゲイン係数)+温度オフセット値 (Min to Max) 5. Humidity Registerの読み込んだ値を湿度に変換する 湿度=読み込んだ値/ゲイン係数 (Min to Max) 6. rlt.temperatureに温度を保存する 7. rlt.humidityに湿度を保存する 備考: iHS300X_CNV_TIME_TEMP_HUMI[ms]経過計測は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD [ms]にThread周期を設定してください。 | ||
eCMD_READ_HUMI | Sleep ModeからMeasurement Modeへ遷移し、Humidity Registerの値を読み込んで湿度に特性変換して、その湿度をrlt.humidityに保存するコマンド 1. Measurement Requests (0x88)をSlave addressに書き込む 2. 計測時間が経過するまで待機する(待機中は戻り値eSTS_EXE) 3. Humidity Registerの値を読み込む 4. Humidity Registerの読み込んだ値を湿度に変換する 湿度=読み込んだ値/ゲイン係数 (Min to Max) 5. rlt.humidityに湿度を保存する 備考: iHS300X_CNV_TIME_HUMI[ms]経過計測は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD [ms]にThread周期を設定してください。 | ||
eCMD_ENTER_PROG_MOD | Sleep ModeからProgramming Modeへ遷移するコマンド 1. Programming modeコマンド(0xA0, 0x00, 0x00) を書き込む 2. 関数内で120μs待機する 備考: 本コマンドは、HS300xの電源投入から10ms以内に行ってください。 | ||
eCMD_WRITE_CFG_HUMI | Humidity Sensor 分解能を設定 (8bit, 10bit, 12bit, 14bit)するコマンド 1. Humidity Sensor 分解能設定コマンド(0xA0, 0x06, 0x00 )を書き込む 2. 関数内で120μs待機する 3. Humidity Registerの値を読み込む 4. Humidity Registerに分解能設定値 (RESOL_HUMI) を書き込む 備考: 本コマンドは、Programming Mode中に行ってください。 本コマンド終了後、Registerに反映されるまでは14ms必要です。 | ||
eCMD_WRITE_CFG_TEMP | Temperature Sensor 分解能を設定 (8bit, 10bit, 12bit, 14bit)するコマンド 1. Temperature Sensor 分解能設定コマンド (0xA0, 0x11, 0x00 )を書き込む 2. 関数内で120μs待機する 3. Temperature Registerの値を読み込む 4. Temperature Registerに分解能設定値 (RESOL_TEMP) を書き込む 備考: 本コマンドは、Programming Mode中に行ってください。 本コマンド終了後、Registerに反映されるまでは14ms必要です。 | ||
eCMD_READ_ID | Sensor IDを読込み rlt.idに保存するコマンド 1. Sensor ID-Upper コマンド (0x80, 0x1E, 0x00)を書き込む 2. 関数内で120μs待機する 3. Sensor ID-Upperの値を読み込む 4. Sensor ID-Lower コマンド (0x80, 0x1F, 0x00)を書き込む 5. 関数内で120μs待機する 6. Sensor ID-Lowerの値を読み込む 7. rlt.idにSensor IDを保存する 備考: 本API関数は、Programming Mode中に行ってください。 | ||
eCMD_EXIT_PROG_MOD | Programming ModeからSleep Modeへ遷移するコマンド Sleep modeコマンド (0x80, 0x00, 0x00) を書き込む 関数内で120μs待機する | ||
引数 OUT | stHS300X_O* rlt | HS300Xからの受信データ | |
float32 temperature | 温度 [°C] | ||
float32 humidity | 湿度 [%RH] | ||
uint32 id | HS300x Register Sensor ID |
etSTS oHS300X_READ_TEMP_HUMI( stHS300X_O* rlt )
oHS300X_READ_TEMP_HUMI関数は、HS300xシリーズ(HS3001 and HS3003)をSleep ModeからMeasurement Modeへ遷移させ、Temperature RegisterとHumidity Registerの値を読み込み、その値を温度および湿度に変換し、その温度および湿度をrlt.temperature および rlt.humidityに保存するAPI関数です。
- Measurement Requests (0x88)をSlave addressに書き込む
- 計測時間iHS300X_CNV_TIME_TEMP_HUMI[ms]経過するまで待機する(待機中は戻り値eSTS_EXE)
- Temperature Registerの値とHumidity Registerの値を読み込む
- Temperature Registerの読み込んだ値を温度に変換する
温度=(読み込んだ値/ゲイン係数)+温度オフセット値 (Min to Max) - Humidity Registerの読み込んだ値を湿度に変換する
湿度=読み込んだ値/ゲイン係数 (Min to Max) - rlt.temperatureに温度を保存する
- rlt.humidityに湿度を保存する
備考:
iHS300X_CNV_TIME_TEMP_HUMI[ms]経過計測は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_EXE | 実行中 | ||
eSTS_ERR_MIN | 最小温度エラー(rlt.temperatureは最小温度) または 最小湿度エラー(rlt.humidityは最小湿度) | ||
eSTS_ERR_MAX | 最大温度エラー(rlt.temperatureは最大温度) または 最大湿度エラー(rlt.humidityは最大湿度) | ||
eSTS_ERR_DATA_STALE | データ取得エラー | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー | ||
引数 OUT | stHS300X_O* rlt | HS300Xからの受信データ | |
float32 temperature | 温度 [°C] | ||
float32 humidity | 湿度 [%RH] | ||
uint32 id | HS300x Register Sensor ID(未更新) |
etSTS oHS300X_READ_HUMI( stHS300X_O* rlt )
oHS300X_READ_HUMI関数は、HS300xシリーズ(HS3001 and HS3003)をSleep ModeからMeasurement Modeへ遷移させ、Humidity Registerの値を読み込み、その値を湿度に変換し、その湿度をrlt.humidityに保存するAPI関数です。
- Measurement Requests (0x88)をSlave addressに書き込む
- 計測時間iHS300X_CNV_TIME_HUMI[ms]経過するまで待機する(待機中は戻り値eSTS_EXE)
- Humidity Registerの値を読み込む
- Humidity Registerの読み込んだ値を湿度に変換する
湿度=読み込んだ値/ゲイン係数 (Min to Max) - rlt.humidityに湿度を保存する
備考:
iHS300X_CNV_TIME_HUMI[ms]経過計測は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_EXE | 実行中 | ||
eSTS_ERR_MIN | 最小湿度エラー(rlt.humidityは最小湿度) | ||
eSTS_ERR_MAX | 最大湿度エラー(rlt.humidityは最大湿度) | ||
eSTS_ERR_DATA_STALE | データ取得エラー | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー | ||
引数 OUT | stHS300X_O* rlt | HS300Xからの受信データ | |
float32 temperature | 温度 [°C](未更新) | ||
float32 humidity | 湿度 [%RH] | ||
uint32 id | HS300x Register Sensor ID(未更新) |
etSTS oHS300X_ENTER_PROG_MOD( void )
oHS300X_ENTER_PROG_MOD関数は、HS300xシリーズ(HS3001 and HS3003)をSleep ModeからProgramming Modeへ遷移させるAPI関数です。
- Programming modeコマンド(0xA0, 0x00, 0x00) を書き込む
- 関数内で120μs待機する
備考:
本API関数は、HS300xの電源投入から10ms以内に行ってください。
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー |
etSTS oHS300X_WRITE_CFG_HUMI( void )
oHS300X_WRITE_CFG_HUMI関数は、HS300xシリーズ(HS3001 and HS3003)のHumidity Sensor 分解能を設定 (8bit, 10bit, 12bit, 14bit)するAPI関数です。
- Humidity Sensor 分解能設定コマンド(0xA0, 0x06, 0x00 )を書き込む
- 関数内で120μs待機する
- Humidity Registerの値を読み込む
- Humidity Registerに分解能設定値 (RESOL_HUMI) を書き込む
備考:
本API関数は、Programming Mode中に行ってください。
本API関数終了後、Registerに反映されるまでは14ms必要です。
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_MODE | Programming Mode以外行った場合のエラー | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー |
etSTS oHS300X_WRITE_CFG_TEMP( void )
oHS300X_WRITE_CFG_TEMP関数は、HS300xシリーズ(HS3001 and HS3003)のTemperature Sensor 分解能を設定 (8bit, 10bit, 12bit, 14bit)するAPI関数です。
- Temperature Sensor 分解能設定コマンド (0xA0, 0x11, 0x00 )を書き込む
- 関数内で120μs待機する
- Temperature Registerの値を読み込む
- Temperature Registerに分解能設定値 (RESOL_TEMP) を書き込む
備考:
本API関数は、Programming Mode中に行ってください。
本API関数終了後、Registerに反映されるまでは14ms必要です。
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_MODE | Programming Mode以外行った場合のエラー | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー |
etSTS oHS300X_READ_ID( stHS300X_O* rlt )
oHS300X_READ_ID関数は、HS300xシリーズ(HS3001 and HS3003)のSensor IDを読込み、その値を rlt.idに保存するAPI関数です。
- Sensor ID-Upper コマンド (0x80, 0x1E, 0x00)を書き込む
- 関数内で120μs待機する
- Sensor ID-Upperの値を読み込む
- Sensor ID-Lower コマンド (0x80, 0x1F, 0x00)を書き込む
- 関数内で120μs待機する
- Sensor ID-Lowerの値を読み込む
- rlt.idにSensor IDを保存する
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_MODE | Programming Mode以外行った場合のエラー | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー | ||
引数 OUT | stHS300X_O* rlt | HS300Xからの受信データ | |
float32 temperature | 温度 [°C](未更新) | ||
float32 humidity | 湿度 [%RH](未更新) | ||
uint32 id | HS300x Register Sensor ID |
備考:
本API関数は、Programming Mode中に行ってください。
etSTS oHS300X_EXIT_PROG_MOD( void )
oHS300X_ENTER_PROG_MOD関数は、HS300xシリーズ(HS3001 and HS3003)をProgramming ModeからSleep Modeへ遷移させるAPI関数です。
- Sleep modeコマンド (0x80, 0x00, 0x00) を書き込む
- 関数内で120μs待機する
備考:
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_I2C_OBJECT | I2Cオブジェクト選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_HAL_I2C | HAL I2Cエラー |
File構成
フォルダ* | ファイル | 概要 |
---|---|---|
HS300X_HALNAME_VERSION/sample | sample.c (.cpp) | サンプル・アプリケーション・プログラム |
sample.h | サンプル・アプリケーション・ヘッダ | |
HS300X_HALNAME_VERSION | oHS300X.c (.cpp) | HS300X用OSS-ECALプログラム |
oHS300X.h | HS300X用OSS-ECALヘッダ | |
HS300X_ARDUINO.ino | Arduino用サンプル・アプリケーション・プログラム | |
oss_ecal.h | OSS-ECAL 共通ヘッダ (Ver 01.00.00以降、AUTOSARはVer01.01.07以降) | |
user_setting.c (.cpp) | ユーザ設定定数・テーブル | |
user_setting.h | ユーザ設定ヘッダ | |
readme.md | Readme | |
OSS-ECAL Terms of Use.txt | OSS-ECAL利用条件 |
* HALNAMEはHAL対応表を参照してください。
HAL対応表
HAL | MCU* | 開発環境* | HALNAME |
---|---|---|---|
Arduino 1.8.6 | ATmega2560 ATmega328P | Mega 2560 Rev3 Arduino Pro Mini 3.3V | ARDUINO |
ARM Mbed 6.17.0 | STM32F401RE | STM32 Nucleo-64 boards | MBED |
Infineon ModusToolbox HAL Cat1 2.4.3 | CYBLE-416045-02 | CY8CPROTO-063-BLE PSoC 6 BLE Prototyping Kit | ModusToolbox |
NXP MCUXpresso SDK iMXRT1051B_1052B ksdk2_0 | MIMXRT1052DVL6A | IMXRT1050-EVKB | iMXRT1051B1052B |
Renesas SSP 2.4.0 | R7FS7G27H3A01CFC | S7G2 SK | SSP |
* 開発時のMCUおよび開発環境。
同じHALであってもMCUや開発環境が異なると動作が合わない場合があります。
OSS-ECAL ダウンロード
OSS-ECALのダウンロードは、英語版OSS-ECALサイトからお願いいたします。なお、ダウンロードを行う際は、英語版OSS-ECALサイトにログインしてから操作してください。
組込み方法
下記を参考にユーザプログラムにAPI関数を組み込んでください。
user_setting.hで温度および湿度の分解能 (8bit, 10bit, 12bit, 14bit)の設定する。
// Resolution setting : 8U( 8 bit ), 10U( 10 bit ), 12U( 12 bit ), 14U( 14 bit )
#define RESOL_HUMI 8U // 8 bit humidity measurement
#define RESOL_TEMP 12U // 12 bit temperature measurement
ユーザプログラムに複数のOSS-ECAL(同じMCU機能の電子部品)を組み込む方法
ユーザプログラムに複数のOSS-ECAL(異なるMCU機能の電子部品)を組み込む方法
注意事項
サンプル版OSS-ECALは、優先順位の異なるThread(Task)や割込みで用いることを前提としていません。下記の例のような使い方はしないでください。
例)同じADCグループに各センサーが割り当てられ、優先順位が異なる処理でOSS-ECAL APIを実行すると、正しい値を取得できない場合があります。
ADC Gr0 Ch0 温度センサ AD22100A 100ms周期 Thread(優先順位低)で温度取込み
ADC Gr0 Ch1 圧力センサ MPX5999D イベント割込み(優先順位高)で圧力取込み