HS300xシリーズ(HS3001, HS3003)

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関数です。

備考:

戻り値etSTSOSS-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_MODEProgramming Mode以外で次のコマンドを行った場合
eCMD_WRITE_CFG_HUMI
eCMD_WRITE_CFG_TEMP
eCMD_READ_ID
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 INetCMD cmdOSS-ECALコマンドコード
eCMD_READ_TEMP_HUMISleep 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_HUMISleep 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_MODSleep ModeからProgramming Modeへ遷移するコマンド

1. Programming modeコマンド(0xA0, 0x00, 0x00) を書き込む
2. 関数内で120μs待機する

備考:
本コマンドは、HS300xの電源投入から10ms以内に行ってください。
eCMD_WRITE_CFG_HUMIHumidity 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_TEMPTemperature 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_IDSensor 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_MODProgramming ModeからSleep Modeへ遷移するコマンド

Sleep modeコマンド (0x80, 0x00, 0x00) を書き込む
関数内で120μs待機する
引数 OUTstHS300X_O* rltHS300Xからの受信データ
float32 temperature温度 [°C]
float32 humidity湿度 [%RH]
uint32 idHS300x 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関数です。

  1. Measurement Requests (0x88)をSlave addressに書き込む
  2. 計測時間iHS300X_CNV_TIME_TEMP_HUMI[ms]経過するまで待機する(待機中は戻り値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周期を設定してください。

戻り値etSTSOSS-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_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 OUTstHS300X_O* rltHS300Xからの受信データ
float32 temperature温度 [°C]
float32 humidity湿度 [%RH]
uint32 idHS300x 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関数です。

  1. Measurement Requests (0x88)をSlave addressに書き込む
  2. 計測時間iHS300X_CNV_TIME_HUMI[ms]経過するまで待機する(待機中は戻り値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周期を設定してください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_MIN最小湿度エラー(rlt.humidityは最小湿度)
eSTS_ERR_MAX最大湿度エラー(rlt.humidityは最大湿度)
eSTS_ERR_DATA_STALEデータ取得エラー
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 OUTstHS300X_O* rltHS300Xからの受信データ
float32 temperature温度 [°C](未更新)
float32 humidity湿度 [%RH]
uint32 idHS300x Register Sensor ID(未更新)
etSTS oHS300X_ENTER_PROG_MOD( void )

oHS300X_ENTER_PROG_MOD関数は、HS300xシリーズ(HS3001 and HS3003)をSleep ModeからProgramming Modeへ遷移させるAPI関数です。

  1. Programming modeコマンド(0xA0, 0x00, 0x00) を書き込む
  2. 関数内で120μs待機する

備考:
本API関数は、HS300xの電源投入から10ms以内に行ってください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
etSTS oHS300X_WRITE_CFG_HUMI( void )

oHS300X_WRITE_CFG_HUMI関数は、HS300xシリーズ(HS3001 and HS3003)のHumidity Sensor 分解能を設定 (8bit, 10bit, 12bit, 14bit)するAPI関数です。

  1. Humidity Sensor 分解能設定コマンド(0xA0, 0x06, 0x00 )を書き込む
  2. 関数内で120μs待機する
  3. Humidity Registerの値を読み込む
  4. Humidity Registerに分解能設定値 (RESOL_HUMI) を書き込む

備考:
本API関数は、Programming Mode中に行ってください。
本API関数終了後、Registerに反映されるまでは14ms必要です。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_MODEProgramming Mode以外行った場合のエラー
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
etSTS oHS300X_WRITE_CFG_TEMP( void )

oHS300X_WRITE_CFG_TEMP関数は、HS300xシリーズ(HS3001 and HS3003)のTemperature Sensor 分解能を設定 (8bit, 10bit, 12bit, 14bit)するAPI関数です。

  1. Temperature Sensor 分解能設定コマンド (0xA0, 0x11, 0x00 )を書き込む
  2. 関数内で120μs待機する
  3. Temperature Registerの値を読み込む
  4. Temperature Registerに分解能設定値 (RESOL_TEMP) を書き込む

備考:
本API関数は、Programming Mode中に行ってください。
本API関数終了後、Registerに反映されるまでは14ms必要です。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_MODEProgramming Mode以外行った場合のエラー
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
etSTS oHS300X_READ_ID( stHS300X_O* rlt )

oHS300X_READ_ID関数は、HS300xシリーズ(HS3001 and HS3003)のSensor IDを読込み、その値を rlt.idに保存するAPI関数です。

  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を保存する
戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_MODEProgramming Mode以外行った場合のエラー
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 OUTstHS300X_O* rltHS300Xからの受信データ
float32 temperature温度 [°C](未更新)
float32 humidity湿度 [%RH](未更新)
uint32 idHS300x 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関数です。

  1. Sleep modeコマンド (0x80, 0x00, 0x00) を書き込む
  2. 関数内で120μs待機する

備考:

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー

File構成

フォルダ*ファイル概要
HS300X_HALNAME_VERSION/samplesample.c (.cpp)サンプル・アプリケーション・プログラム
sample.hサンプル・アプリケーション・ヘッダ
HS300X_HALNAME_VERSIONoHS300X.c (.cpp)HS300X用OSS-ECALプログラム
oHS300X.hHS300X用OSS-ECALヘッダ
HS300X_ARDUINO.inoArduino用サンプル・アプリケーション・プログラム
oss_ecal.hOSS-ECAL 共通ヘッダ (Ver 01.00.00以降、AUTOSARはVer01.01.07以降)
user_setting.c (.cpp)ユーザ設定定数・テーブル
user_setting.hユーザ設定ヘッダ
readme.mdReadme
OSS-ECAL Terms of Use.txtOSS-ECAL利用条件

* HALNAMEはHAL対応表を参照してください。

HAL対応表

HALMCU*開発環境*HALNAME
Arduino 1.8.6ATmega2560
ATmega328P
Mega 2560 Rev3
Arduino Pro Mini 3.3V
ARDUINO
ARM Mbed 6.17.0STM32F401RESTM32 Nucleo-64 boardsMBED
Infineon ModusToolbox HAL Cat1 2.4.3CYBLE-416045-02CY8CPROTO-063-BLE PSoC 6 BLE Prototyping KitModusToolbox
NXP MCUXpresso SDK
iMXRT1051B_1052B
ksdk2_0
MIMXRT1052DVL6AIMXRT1050-EVKBiMXRT1051B1052B
Renesas SSP 2.4.0R7FS7G27H3A01CFCS7G2 SKSSP

* 開発時の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を組み込む方法

ユーザプログラムに複数のOSS-ECAL(同じMCU機能の電子部品)を組み込む方法

ユーザプログラムに複数のOSS-ECAL(異なるMCU機能の電子部品)を組み込む方法

ユーザプログラムに複数同じ電子部品を組み込む方法

電子部品の入れ替えによるユーザプログラムへの影響低減方法

注意事項

サンプル版OSS-ECALは、優先順位の異なるThread(Task)や割込みで用いることを前提としていません。下記の例のような使い方はしないでください。

例)同じADCグループに各センサーが割り当てられ、優先順位が異なる処理でOSS-ECAL APIを実行すると、正しい値を取得できない場合があります。
ADC Gr0 Ch0 温度センサ AD22100A 100ms周期 Thread(優先順位低)で温度取込み
ADC Gr0 Ch1 圧力センサ MPX5999D イベント割込み(優先順位高)で圧力取込み

OSS-ECAL Japanese
error: コンテンツは保護されている