MLX90640は32x24ピクセルの赤外線(Infra Red)アレイセンサです。
測定対象物の輻射熱から温度分布を得ます。温度の求め方について調べました。
資料を以下に示します。
・MLX90640のデータシート、資料1*1
・Adafruit社、資料4*4
・測定範囲(FOV)の説明、資料5*5
・熱の輻射に関して、資料6*6
・放射温度計、赤外線センサに関して、資料7*7、
サーモパイルによる温度測定
絶対温度が0[K](ケルビン)でない物体は、物体内部の分子運動によりその温度に応じた熱エネルギーを電磁波(ほぼ赤外線)の形で放出しています。(熱輻(ふく)射)(資料 6)
サーモパイルは熱電対が複数直列に接続されており、赤外線がセンサの受光部に入ると、冷接点側との温度差となり熱起電力が発生します。熱起電力から補正演算を行うことで、測定対象物の温度(T)を得ます。
温度の計算
MLX90640では最初に補正(キャリブレーション)用のデータを、EEPROMから読出します。その後、測定データをRAMから読出し、各ピクセル毎に演算を行い温度を得ます。
測定データと更新周期
センサーの測定データ(16bit)は、センサー内のRAM領域(0x400~0x6FF) に、768(=32x24)個分格納されます。
この領域はSubpage0とSubpage1の2つに分けられ、サブページ毎に交互にデータが更新されます。 デフォルト(Chess reading pattern設定)のSubpage割り当ては以下の通りです。
測定データは更新周期毎に、Subpage0またはSubpate1に格納されます。
更新周期(IR refresh rate)=4 [Hz]の場合、250msec毎にSubpage0またはSubpage1が更新されます。更新完了で、ステータスレジスタ(0x8000)のbit3(New data available in RAM)が1となります。
補正データ
I2C通信でEEPROMから読み出します。ドライバソフトでは読み出し後、構造体のメンバ(変数)に格納しています。
以下はドライバソフト(資料2) の int MLX90640_ExtractParameteres( ) 内の処理です。
括弧()内の項目は、データシート(資料1)での該当箇所です。
1)供給電圧 (Vdd) Extract_VDD() (11.1.1. Restoring the VDD sensor parameters)
供給電圧 Vddの計算用パラメータの取り出しと、演算。Kvdd と vdd25を得る。
2) PTAT Extract_PTAT() (11.1.2. Restoring the Ta sensor parameters )
Ta(センサ周囲温度) 計算用パラメータの取り出し。KvPTAT, KtPTAT, vPTAT25, alphaPTAT を得る。
3)Gain Extract_Gain() (11.1.7. Restoring the GAIN coefficient (common for all pixels)
ゲインの取り出し。GAINを得る。
4)TGC Extract_Tgc() (11.1.16. Restoring the TGC coefficient)
TGCの取り出し。 MLX90640ESF-BAx-000-TU の場合は常に 0。
5) Resolution Extract_Resolution() ( 11.1.17. Restoring the resolution control coefficient)
reaolutionEE を得る。
6) KsTa Extract_KsTa() (11.1.8. Restoring the KsTa coefficient (common for all pixels) )
KsTaを得る。
7)KsTo Extract_KsTo() (11.1.10. Restoring the KsTo coefficient (common for all pixels) )
KsToと ctの取り出し。
8) CP Extract_CP()
cpKta,cpKv,cpAlpha[0],cpAlpha[1],cpOffset[0],cpOffset[1] を得る。
9) Alpha Extract_Alpha()
alpha[768]とalphaScaleを得る。
10) Offset Extract_Offset() (11.2.2.5.2 Offset calculation)
offset[768]を得る。
11) Kta Extract_Kta() (11.1.6 Restoring the Kta(i,j) coefficient )
ktaScaleとkta[768]の取り出し。(データシートとドライバで処理が異なる。)
12) Kv Extract_Kv() (11.1.5 Restoring the Kv(i,j) coefficient )
kvScaleとkv[768]の取り出し。(データシートとドライバで処理が異なる。)
13) CILCP Extract_CILCP()
calibrationModeEEとilChessC[3]の取り出し。
14) ExtractDeviatingPixels ()
不良ピクセル(broken , outlier)数のチェック。
温度計算フロー
ドライバソフト(資料2)の 3.4.3 MLX90640_CalculateTo の処理フローです。
括弧()内は、データシート(資料1)に該当する項目です。
(Adafruit(資料4)も同じドライバを使用しています。また、テーブルによる温度計算(資料3)は使用していません。)
計測範囲
センサの計測範囲は、FOV(Filed of View)と距離により得られます。(資料5 )
測定対象物とセンサが d 離れている場合、Sは次式となります。
MLX90640-ESF-BAAの場合、FOVはX 方向=110°, Y方向=75°です。
センサと測定対象物の距離を50mmとします。
計測範囲のX方向は、
, (tan55° = 1.428)
]
Y方向は、
, (tan37.5° = 0.767)
]
計測範囲は143x76 [mm]となります。
*1:資料1「MLX90640 32x24 IR array Datasheet (REVISION 12 – DECEMBER 3, 2019) 」 https://www.melexis.com/en/product/MLX90640/Far-Infrared-Thermal-Sensor-Array
*2:資料2「MLX90640 32x24 IR array Driver (REVISION 1 - OCTOBER 31, 2022)」 https://github.com/melexis/mlx90640-library
*3:資料3「MLX90640 32x24 IR array Look-up table implementation 」 https://github.com/melexis/mlx90640-supporting-functions/tree/master
*4:資料4「Adafruit MLX90640 library functions」 https://github.com/adafruit/Adafruit_MLX90640
*5:資料5「FOVの説明動画 」 https://www.youtube.com/watch?v=YGFmlFPjRLE
*6:資料6 「例題でわかる伝熱工学 第2版 熱の移動が図でみえる」 (森北出版)
*7: 資料7 堀場製作所「放射温度計の基礎知識」https://www.horiba.com/jpn/process-and-environmental/products/infrared-radiation-thermometer/
*8: 資料8 日本セラミック「サーモパイル型赤外線センサについて」https://www.nicera.co.jp/products/infrared-sensor/thermopile-sensor/about-thermopile-sensor
*9: 資料9 「ジャパンセンサー 赤外線」 https://www.japansensor.co.jp/manage/wp-content/uploads/2018/10/infrared_20180930.pdf
*10: 資料10 「ジャパンセンサー サーモメータ」 https://www.japansensor.co.jp/manage/wp-content/uploads/2015/03/thermometer.pdf