高度シリコンセンサで高精度温度測定を実現
エレクトロニクス業界では、より高いレベルの精度が求められ続けており、温度検知も例外ではありません。多くの温度検知ソリューションが存在し、それぞれにメリットとデメリットがあります。シリコン温度センサはかなりリニアですが、他のソリューションほどの精度を提供してきませんでした。しかし、シリコン温度検知の最近の進歩により、高分解能と高精度がシリコンソリューションで達成可能になりました。
新しい冷凍庫
2020年3月、英国はロックダウン直前でした。世界中がスーパー閉鎖に備えて食料を買い占め、将来は不透明でした。そんな折、ブラムブル家の冷凍庫が故障しました。ケニー・ロジャースの曲「You Picked a Fine Time to Leave me...」の歌詞が頭をよぎる中、オンラインで新しい冷凍庫を探しました。
数日後、新しい冷凍庫が到着しました。奥様の希望通り、フロントパネルにデジタル温度表示が付いています。推奨設定は-18℃で、1時間後には正しい温度になり、食品を入れられる状態になりました。温度表示の精度には懐疑的でしたが、食品が凍れば構わないと思っていました。しかし、エンジニアの心は落ち着かず、数日間、 ostensibly sageなデジタル表示が自信満々に私を見つめ、挑発しているように感じられ、ついに我慢できなくなりました。この新しいキッチンの一員の精度主張をテストしなければなりませんでした。
温度センサ
産業用途には多種多様な温度センサが使用されており、それぞれに利点と欠点があります。多くの文献が各種温度センサの動作を詳細に説明しているため、ここでは詳細は繰り返しませんが、以下に概要を示します。
熱電対
熱電対は、非常に高い温度を低コストで、中程度の精度で測定する方法を提供します。異なる金属で作られた2つの接点が異なる温度に保たれるとき、それらの間に電圧が発生することを利用します。これは1821年にトーマス・ゼーベックによって発見されました。Kタイプ熱電対(クロメルとアルメルの合金製)の場合、約41μV/℃の電圧を出力し、1000℃を超える温度測定に使用できます。しかし、ゼーベック効果は2つの接点間の温度差に依存するため、『ホット』接点が対象温度を測定する一方で、『コールド』接点を既知の温度に保つ必要があります。皮肉なことに、冷接点の温度差を測定するために、別の温度センサが冷接点に必要となり、AD8494のような部品がこれを行う完璧なソリューションを提供します。熱電対は物理的に小さいため熱容量が低く、温度変化に対する応答が速いです。
RTD(抵抗温度検出器)
中程度の温度(500℃未満)を測定するには、抵抗温度検出器(RTD)が産業界で広く使用されています。これらのデバイスは、温度とともに抵抗が正の方向に変化する金属要素で構成され、最も一般的なのは白金です。実際、PT-100センサは産業界で最も広く使用されているRTDで、白金(PT)製で0℃での抵抗が100Ωであることからこの名が付いています。これらのデバイスは熱電対ほど高温を測定できませんが、高い直線性と再現性を備えています。PT100には精密な駆動電流が必要で、センサ両端に温度に比例した正確な電圧降下を生み出します。PT100の接続配線の抵抗がセンサの抵抗測定に誤差を生じさせるため、ケルビン接続(4線式または3線式)が一般的です。
サーミスタ
低コストで温度範囲が低い場合、サーミスタで十分なことがよくあります。これらのデバイスは高度に非線形で、シュタインハート・ハートの式に基づく特性を持ち、温度上昇とともに抵抗が減少します。サーミスタの利点は、わずかな温度変化で抵抗変化が大きいため、非線形にもかかわらず高い精度が達成できることです。サーミスタは熱応答も速いです。個々のサーミスタの非線形性は明確に定義されているため、LTC2986のようなコンポーネントを使って校正で補正できます。
ダイオード、ダイオード、どこにもダイオード、しかし(Vbe)ドロップは沈まず…
最後に、家庭の新メンバーの真実性を検証するため、シリコン温度センサを選びました。これらは箱から出してすぐ使え、冷接点温度補償やリニアライゼーションを必要とせず、アナログおよびデジタル出力が利用可能で、工場出荷時に校正済みです。しかし最近までは、中程度の精度しか提供してきませんでした。電子機器の健全性表示には十分でしたが、例えば体温測定のように、通常ASTM E1112標準によると±0.1℃の精度が必要な用途には、これまで十分な精度がありませんでした。それが、最近リリースされたADT7422とADT7320シリコン温度センサにより、それぞれ±0.1℃と±0.2℃の分解能で測定可能になり、状況が変わりました。
シリコン温度センサは、トランジスタのVbeの温度依存性を利用します。これはEbers-Mollの式で与えられ、以下のように近似されます:

ここで、Icはコレクタ電流、Isはトランジスタの逆飽和電流、qは電子電荷(1.602×10-19クーロン)、kはボルツマン定数(1.38×10-23)、Tは絶対温度です。
コレクタ電流の上記式はダイオードの電流にも成り立ちます。では、なぜすべてのアプリケーション回路がダイオードではなくトランジスタを使うのでしょうか? 実際、ダイオードの電流には、pn接合の空乏領域を通過する際に電子が正孔と再結合することによる再結合電流も含まれ、これがダイオードのVbeと温度に対する電流の非線形性を呈します。この電流はバイポーラトランジスタにも現れますが、トランジスタのベースに流れるためコレクタ電流には現れず、非線形性が大幅に小さくなります。
上式を変形すると:

IsはIcに比べて小さいため、上式の『1』の項を無視できます。これで、VbeがIcの対数的変化に従ってリニアに変化することがわかります。また、IcとIsが一定なら、kとqも定数なので、Vbeは温度に対してリニアに変化します。トランジスタに定電流を流し、Vbeの温度変化を測定するのは容易です。
Isはトランジスタの形状に関係し、温度に強く依存します。多くのシリコンデバイスと同様、温度が10℃上昇するごとに値が2倍になります。この電流変化の影響は『ln』関数で軽減されますが、Vbeの絶対値がトランジスタごとに異なるため、校正が必要という問題が残ります。そのため、実用的なシリコン温度センサは2つの同一トランジスタを使用し、一方にIc、もう一方に10Icのコレクタ電流を流します。同一トランジスタと比率精度の高い電流は、集積回路内で容易に製造できるため、ほとんどのシリコンセンサがこのアーキテクチャを採用しています。電流の対数的変化がVbeのリニアな変化を生み、2つのVbeの差が測定されます。
上記式から、同じ温度に保たれた2つのトランジスタについて、それらのVbeの差は次式で与えられます:

なぜなら:

したがって:

各トランジスタに異なる電流を流し、Vbeの差を測定することで、非線形なIs項、異なる絶対Vbeの影響、トランジスタ形状に関連するその他すべての非線形効果を除去できました。k、q、ln10はすべて定数なので、Vbeの変化は絶対温度に比例(PTAT)します。電流を10倍にすると、2つのVbeの差は約198μV/℃で温度に対してリニアに変化します。これを実現する簡略化回路を図1に示します。

図1. 温度測定のための基本回路。
図1の電流は慎重に選択する必要があります。電流が高すぎると、トランジスタ内部の抵抗での自己発熱と電圧降下が結果を汚染します。電流が低すぎると、トランジスタ内部のリーク電流が大きな誤差を加えます。
上記の式はトランジスタのコレクタ電流に関係しますが、図1では定電流がトランジスタのエミッタに注入されています。トランジスタはコレクタ-エミッタ電流比が確立され(1に近い)、コレクタ電流がエミッタ電流に比例するように設計できます。
これは物語の始まりに過ぎません。シリコン温度センサで±0.1℃の精度を得るには、広範なキャラクタリゼーションとトリミングが必要です。
鳥か?飛行機か?
いいえ、スーパー温度計です。はい、存在します。未校正のシリコン温度センサをシリコンオイルで満たされた槽に入れ、正確な温度に加熱し、スーパー温度計で測定します。これらのデバイスは5桁以上の精度で測定できます。センサ内部のヒューズを飛ばして温度センサのゲインを調整し、y = mx + Cの式を使って出力をリニアライズします。シリコンオイルは非常に均一な温度を提供するため、多くのデバイスを1サイクルで校正できます。
ADT7422は、25℃〜50℃の温度範囲で±0.1℃の精度を持ちます。この温度範囲は、典型的な人体温度38℃を中心としており、ADT7422を正確なバイタルサイン監視に最適化しています。産業用途向けには、ADT7320がトリミングされ、-10℃〜+85℃のより広い温度範囲で±0.2℃の精度を持ちます。

図2. 0.8mm厚PCBに実装されたADT7422
しかし、シリコン温度センサの校正だけが問題ではありません。極めて精密な電圧リファレンスと同様に、ダイへのストレスがセンサの精度を損なう可能性があり、PCB、リードフレーム、プラスチックモールド、露出パッドの熱膨張すべてを考慮する必要があります。はんだ付けプロセスも独自の問題をもたらします。はんだリフロー工程で部品温度が260℃まで上昇し、プラスチックパッケージが軟化し、ダイのリードフレームが歪みます。部品が冷えてプラスチックが硬化すると、機械的ストレスがダイにロックインされます。アナログ・デバイセズのエンジニアたちは、数人月もの繊細な実験を費やし、PCB厚0.8mmが最適なスイートスポットであり、はんだ付け後でも±0.1℃の精度が達成可能であることを発見しました。
ソフトウェア内部
システムソフトウェアの大部分は、ADT7320からのデータをフォーマットし、LCDに表示することに関わっています。ADT7320からデータを取得するのは簡単です。プロセッサ初期化時に、CSとSCLKの両ラインをハイに設定し、SCLKラインは変換間でハイのままアイドル状態になります。その後、CSラインをローにしてデータトランザクションを開始します。SPIでは、データはSCLKの立上りエッジでADT7320に読み込まれ、立下りエッジで出力されます。以下のコードは初期化ルーチンを詳述しています。
シリアルインターフェースをリセットするには、CSラインをローにし、DOUTラインをハイにし、SCLKを40回発振させます。その後CSラインをハイにします。これにより40個の『1』がADT7320にクロックインされ、シリアルインターフェースがリセットされます。SPIバスリセット後、少なくとも500μsの遅延が必要です。
次のコードブロックは、トランザクションが読み取りか書き込みか、どのレジスタをアドレスするかをADT7320に伝えるコマンドバイトを送信します。以下の行:
data = 0b00001000;
は、ADT7320にレジスタ0x01への書き込みを指示します。ADT7320は、以下の行で16ビット分解能でデータ出力するようプログラムされます:
data = 0b10000000;
DOUTラインを『0』に事前設定し、データバイトのMSBを調べ、MSBが『1』ならDOUTラインをハイに設定します。SCLKラインをハイにしてデータをADT7320にクロックインします。
void reset_adt7320(void) /* initialise ADT7320 */ { unsigned char n, data; /* reset the serial interface */ clearbit(PORTA, CS); setbit(PORTA, DOUT); for(n=40; n>0; n--) { clearbit(PORTA, SCLK); setbit(PORTA, SCLK); } setbit(PORTA, CS); delay_10ms(); /* must wait >500us after reset */ /* set to 16 bit mode */ clearbit(PORTA, CS); data = 0b00001000; /* clear bit 6 (write), reg #001 */ /* send command byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); /* clock data in on rising SCLK */ } data = 0b10000000; /* continuous conversion, 16 bits */ /* send data byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); } setbit(PORTA, CS); }
温度データを取得する関数呼び出しも同様です。以下の行:
data = 0b01010000;
は、ADT7320にレジスタ2の16ビットデータを読み取るよう指示します。
その後、ADT7320が温度変換を実行するまで少なくとも240ms待機します。16ビットの温度データがクロックアウトされ、その後CSラインがハイに設定されます。
clearbit(PORTA, CS); /* data = command byte */ data = 0b01010000; /* read mode, register 2 */ /* read ADT7320 */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); } delay_150ms(); /* temperature conversion */ delay_150ms(); /* read temperature data */ for(n=16; n>0; n--) { clearbit(PORTA, SCLK); if checkbit(PORTA, DIN) { setbit(temp, (n-1)); } setbit(PORTA, SCLK); } setbit(PORTA, CS);
完全なコードセットはこちらから入手可能です。
ソーセージは一体何℃なのか?
ADT7320を冷凍庫内に約30分間置き、新しい冷凍庫がどの温度に落ち着くかを見ました。
図3は、冷凍庫温度が-18.83℃であることを示しています。

図3. -18.83℃の冷凍庫温度
食品保存にこのレベルの温度精度は不要ですが、驚くほど正確だと感じました。次に、英国の夏の日にオフィスの温度を測定しました。図4に示す通り、22.87℃でした。

図4. オフィス温度 22.87℃
結論
シリコン温度センサは大きく進歩し、極めて高精度になり、バイタルサイン監視を高い精度で実現できるようになりました。内部技術は確立された原理に基づいていますが、サブ度レベルの精度を得るために必要なトリミングには多大な労力が必要です。このレベルの精度を達成しても、機械的ストレスとはんだ付けによって、数時間の校正で得られた利益が容易に失われる可能性があります。
ADT7320とADT7422は、PCBにはんだ付けされた後でもサブ度レベルの精度を達成するための、数年にわたるキャラクタリゼーションの頂点を示しています。
参考文献
Huijsing, Johan and Michiel Pertijis. Precision Temperature Sensors in CMOS Technology. Springer, 2006.
Horowitz, Paul and Winfield Hill. The Art of Electronics. Cambridge University Press, April 2015.
Analog Circuit Design, Volume 2, Chapter 32. Linear Technology, December 2012.
AD590 datasheet. Analog Devices, Inc., January 2013.
ADT5912 data sheet (to be released). Analog Devices, Inc.
埋め込み
- シリコン:特性、製造、市場展望
- 低コストセンサーで実現するコスト効率の良い室内温度マッピング
- 複数DS18B20 1-WireセンサーをRaspberry Pi接続で精密温度監視
- Raspberry Pi 2でDS18B20温度センサー読み取りガイド
- Raspberry PiでMaxim 1-WireセンサーとDS2482 I2Cブリッジを用いた温度測定
- Raspberry Piでサーバークローゼットの温度を正確に監視
- インフィニオン、自動車/産業向け高精度AMR角度センサー「XENSIV TLE5109A16」発表
- ams、Sensors Expo 2019で最先端光学センサーテクノロジーを披露
- Maxim、ウェアラブル健康機器向けに消費電力・サイズを削減し精度向上した新センサを発表
- IBASE、-40℃~+85℃動作の堅牢COM Expressモジュール「ET875/ET870」発表-IoT/産業用途向け
- センサー種類と回路図の包括的ガイド