2020年4月3日金曜日

FLIR LeptonとBOSONの温度表示の注意点。

FLIR Lepton(with Radiometry) & BOSON の赤外線センサー(放射温度測定機能付きを含む)の温度表示の注意点をまとめました。

W&Tサーマルカムについて
現在使用しているセンサーはFLIR LeptonFLIR BOSONです。
私達のシステムについて温度精度に関するご質問をに対する参考にして頂ければと思います。

まずセンサーからのデータはLepton(14bit)でBOSON(16bit)なので温度に反応する制度はセンサー自体の仕様書の誤差と同じです。

2番目に放射温度計の基礎知識も必要です。
センサーは遠赤外線の8~14μmの波長を利用しています。
対象物の温度が同じでも表面の状態や材質でも測定する温度は違います。
その際に重要になるのが放射率です。
放射率=吸収率+反射率+透過率
同じ温度の物質でも反射したり透過したエネルギーの分だけ温度が低くなっています。
水は0.920.98、コンクリートは0.94、ガラスは0.750.95、木は0.500.80

理論上、空気は0で1の吸収率は黒体と呼ばれるものです。
実際は100mで(気温35度湿度80%)20%減衰します。


放射率の誤差と温度の誤差は計算では補正出来ないので注意して下さい。
詳細は放射率を調べて見てください。

センサーの感度の誤差と放射率で赤外線メーカーは±3から±5の温度誤差と書いています。

FLIRの赤外線センサーは感度としては0.05k(0.05度)
2種類のモデルがあり一つは熱電堆(熱を電気に変えるセンサーのみ)で放射温度測定機能なし
環境温度により温度の補正が必要。

熱電堆に放射温度測定機能付きです。
環境温度により温度の補正は不要。(とはいえセンサー誤差の考慮は必要)

熱電堆は絶対温度が測れません。その為、熱電対の温接点と冷接点をを使って補正して絶対温度に近づける様に放射温度測定機能付きがあります。(自動で温度補正されたでデータが出力される。)

Lepton3.0の場合(放射温度測定機能無し)は代わりにチップ温度と冷接点温度がi2cで確認出来るようになってます。なのでソフトで補正する必要がある。
BOSONも冷接点温度は出力出来ます。

ですから温度表示についての注意点を良く理解してください。
  1. 先ずセンサー自体の誤差
  2. センサー部品が受ける環境温度
  3. 理論上空気は放射率0ですが、実際には気温35度で相対湿度80%の場合センサーから対象物まででエネルギーは20%減ってしまいます。
  4. 対象物の放射率
  5. センサーと測定対象物との角度
  6. 測定物の測定範囲



何が言いたいかと言うと、この赤外線センサーは相対温度を測る機器を理解してください。
上記の注意点から温度はあくまで参考と考えるべきです。

もちろん放射温度測定機能付きのセンサーを環境温度に影響受けにくい様に設計したケースの入れると温度表示はより真値に近づきます。

ご参考までに

今回ソフトウェアを作るにあったって氷や沸騰するお湯と常温の水を測定した温度で校正しています。恒温槽などの設備がないのでどこまで正確な測定が出来ているかは分かりませんが、温度表示はあくまで参考にして下さい。
上記注意点を全て正確に校正(補正)出来てればさらに真値に近くと思います。
今後より正確な温度に改変されたい方は下記を参考にして下さい。
正直センサー単体の個体差もあり校正してもキリはないと思います。

LEPTONの場合、
その係数は
0.56
459.67
1.8
0.05872
472.22999
32.0
read_lepton_frame();
     
     for (int frame_number = 0; frame_number < 60; frame_number++){     
       for (i = 0; i < 82; i++)
       {
          p=lepton_image[frame_number][i] ;
          if(i >= 2){ 
              if(p < min) min = p;
              if(p > max) max = p;
          }
          if(i==0) lepton_image[frame_number][i]=(p & 0x00ff);
       }
     }     
     diff = max - min;
     diff = diff / 256.0f;
     if(diff < 0.56f) diff = 0.56f; // 0.66

        lepton_command(SYS, 0x10 >> 2 , GET); //センサー温度i2cから取得
        float aux=read_data() ;

        float fpatemp = aux/ 100.0f;
        float fpatemp_f = fpatemp * 1.8f - 459.67f;

       Serial.println(fpatemp-273.15);
        value_min = ((0.05872 * (float)min - 472.22999f + fpatemp_f));
        value_min= (value_min - 32.0f) / 1.8f;    
        value_max = ((0.05872 * (float)max - 472.22999f + fpatemp_f));
        value_max = (value_max - 32.0f) / 1.8f;

       Serial.println(value_min);
       Serial.println(value_max);

BOSONの場合も 多項式で計算しました。(Polynomial)
37.4度39.2度41.2度42.5度43.5度43.9度44.度44.4度45.7度38度42.9度45度
35.3355435.1220634.9477835.4122934.8318535.1766535.5   34.3911436.0179836.5126435.4622435.31798



コロナウィルスでサーモグラフィーを使って体温の高い人を抽出で皮膚表面温度を測る場合は室温15度以下だと誤差が大きくなるので注意が必要。
その際の環境温度は20度から25度以上が安定します。体温に近い温度にする方が誤差は小さくなります。





校正はそれぞれの現場で体温と気温を測ってこの表を参考にすると良いでしょう。

0 件のコメント:

コメントを投稿