概要

設計リソース

設計/統合ファイル

  • Schematic
  • Bill of Materials
  • Gerber Files
  • PADS Files
  • Assembly Drawing
設計ファイルのダウンロード 619 kB

デバイス・ドライバ

コンポーネントのデジタル・インターフェースとを介して通信するために使用されるCコードやFPGAコードなどのソフトウェアです。

ADT74x, ADT73x GitHub no-OS Driver Source Code

機能と利点

  • 冷接点補償機能付き熱電対温度センサー
  • 車載用SENTインターフェース

回路機能とその特長

これは、高精度の熱電対温度モニタリング・アプリケーションにおいて高精度アナログ・マイクロコントローラADuC7060/ADuC7061を使用した回路です。

ADuC7060/ADuC7061は、ARM7コア、32kBフラッシュ、4kB SRAM、さまざまなデジタル・ペリフェラル(UART、タイマー、シリアル・ペリフェラル・インターフェース(SPI)、I2Cインターフェースなど)に加えて、デュアル24ビット・シグマ・デルタ(Σ-Δ)A/Dコンバータ(ADC)、デュアル・プログラマブル電流源、14ビットD/Aコンバータ(DAC)、1.2V内部リファレンスを内蔵しています。

この回路では、熱電対と100Ωの白金測温抵抗体(RTD)をADuC7060/ADuC7061に接続します。このRTDは冷接点補償に使用します。予備のオプションとして、デジタル温度センサーADT7311を使ってRTDの代わりに冷接点温度を測定することもできます。

ソース・コードでは、4HzのADCサンプリング・レートを選択しました。ADCの入力プログラマブル・ゲイン・アンプ(PGA)のゲインを32に設定すると、ADuC7060/ADuC7061のノイズ・フリー・コード分解能は18ビットを上回ります。

ADuC7060/ADuC7061 as a Temperature Monitor Controller with a Thermocouple Interface
図1. 熱電対インターフェースを備えた温度モニタ・コントローラとしてのADuC7060/ADuC7061
(簡略回路図:全接続の一部は省略されています。)

回路説明

このアプリケーションでは、ADuC7060/ADuC7061の以下の機能を使用しています。

  • プライマリΣ△ADCはPGAを搭載しています。このアプリケーション用のソフトウェアでPGAのゲインを32に設定します。プライマリADCを連続的に切り替えながら熱電対電圧とRTD電圧をサンプリングしました。
  • 冷接点温度の測定にRTDを使用する場合、プログラマブル励起電流源がRTDに制御電流を強制的に流します。このデュアル電流源は、0µAから2mAまで200µAステップで設定可能です。この例では、RTDの自己発熱によって生じる誤差を最小限に抑えるため、200µAに設定しました。
  • 冷接点温度の測定にADT7311を使用する場合、SPIインターフェースをマスタ・モードで使いADT7311をスレーブ・デバイスとして接続します。
  • ADuC7060/ADuC7061のADC用に1.2Vリファレンスがn内蔵されています。熱電対電圧の測定には、高精度なことから内部電圧リファレンスを使用しました。
  • ADuC7060/ADuC7061内蔵ADC用に電圧リファレンスが外付けされています。RTD抵抗の測定には、外部のVref+ピンとVref−ピンの間に外付けリファレンス抵抗(RREF)を接続したレシオメトリック構成を使用しました。
  • 単電源オペアンプAD8628を使って、RREFとADCの間の高インピーダンス・リファレンス電圧をバッファしました。
  • AD8628の代わりにOP193を選択することもできます。
  • DACを使って熱電対の同相電圧をグラウンドより850mV高い値に設定しました。
  • ARM7TDMI®コアは、32kBフラッシュとSRAMメモリを内蔵した強力な16/32ビットARM7コアを用いてADCの設定と制御するユーザー・コードを実行し、RTDからのADC変換処理し、SPIインターフェースによる通信制御を行います。
  • タイマー1とデジタル出力ピンを使ってSENT出力信号を生成します。
  • オプションのPESD1LIN保護ダイオードがESD、電気的高速トランジェント(EFT)、最大23kVまでのサージ・トランジェントを抑制します。
  • SENT出力のEMCフィルタが、SAE規格J2716(SENTプロトコル)のセクション6.3.1で推奨されています。
  • デバイスを強制的にフラッシュ・ブート・モードにするため、2個の外部スイッチを使用します。S1をローに固定してS2を切り替えることにより、ADuC7060/ADuC7061は通常のユーザー・モードからブート・モードになります。ブート・モードでは、UARTインターフェースを介して内部フラッシュをプログラムし直すことができます。

熱電対とRTDはどちらも出力信号が非常に小さいため、これらの信号を増幅するPGAを必要とします。ADuC7060/ADuC7061の補助ADCはPGAを備えていないため、両方の信号ともプライマリADCに接続し、ソフトウェアで2つの信号を切り替えました。

このアプリケーションで使用した熱電対は、温度範囲が−200℃~+350℃のTタイプ(銅-コンスタンタン)です。その感度は約40µV/℃なので、バイポーラ・モードでは、ゲイン32のPGAを備えたADCにより熱電対の全温度範囲をカバーすることができます。

RTDは冷接点補償に使用しました。この回路で使用したRTDは、100Ωの白金RTD(EnercorpのPCS 1.1503.1)です。この製品は、0805表面実装パッケージで利用可能です。RTDの温度変動は0.385Ω/℃です。

リファレンス抵抗RREFは高精度の5.6kΩ(±0.1%)にする必要があります。


SENTインターフェース

SENTは、1ピン、単一方向(センサーからホスト)、時間変調信号のインターフェースで、主に車載システムであちこちに配置されているセンサーからホストCPUへのインターフェースに使用されます。

SENTの主な必要条件には以下のものがあります。

  • EMCフィルタを備え、0Vから5Vへの信号振幅が必要。
  • SENT信号に使用するクロックには±20%の精度が必要。
  • SENT出力回路にはグラウンドへの短絡と電源電圧への短絡に十分耐える堅牢性が必要。

関連するソース・コードはADuC7061のP0.4デジタル・ピンをSENT出力ピンとして使用します。使用するパケット・フォーマットはシングル・センサー・パケット・フォーマットで、このフォーマットについてはSAE規格J2716(SENTプロトコル)のA.4セクションに詳細が記載されています。ソース・コード、特に、SENT.hファイルとSent.cファイルを修正することにより、その他のパケット・フォーマットにも対応することができます。全ての温度測定値はデータ・ニブル1からデータ・ニブル3に/℃のフォーマットで返信されます。返信される出力パケットを要約すると以下のとおりです。

  • 同期パルスに56クロック・チック
  • ステータス・パルス(7チック~15チック)
  • データ・ニブル1(温度測定値のビット11~ビット8)
  • データ・ニブル2(温度測定値のビット7~ビット4)
  • データ・ニブル3(温度測定値のビット3~ビット0)
  • データ・ニブル4(カウンタのビット7~ビット4)
  • データ・ニブル5(カウンタのビット3~ビット0)
  • データ・ニブル6(ニブル1の反転)

パケットの例を図2に示します。

Example SENT Packet Measured at the P0.4 Pin
図2. P0.4ピンで測定されたSENTパケットの例

 

この回路は、大きな面積のグラウンド・プレーンを持つ多層プリント回路ボード(PCB)上に構築する必要があります。最適な性能を実現するためには正しいレイアウト、グランディング、デカップリング技術が必要です(チュートリアルMT-031「データコンバータのグランディングとAGND/DGNDの不可解さの解決」、チュートリアルMT-101「デカップリング技術」(英語)と、ADuC7060/ADuC7061評価ボード・レイアウトを参照してください)。


コードの説明

タイマー1を使ってSENT出力ピンP0.4を制御します。ADC結果により熱電対と冷接点温度の温度測定値が求められると、SENTパケット構成SENT_PACKETが更新されてタイマー1が始動します。図2に示されているように、このパケット構成のフィールドはP0.4ピンにクロック出力されます。パケットの最初の部分は同期シーケンスです。ホストはこのパルスからクロック周期を求め、これにより後続のニブル値を特定します。

温度測定値を得るため、熱電対とRTDの温度を測定します。RTD温度はルックアップ・テーブルを使って等価な熱電対電圧に変換します。これら2つの電圧を加算することにより、熱電対における電圧の絶対値を求めます。

まず、熱電対にある2本のワイヤ間の電圧(V1)を測定します。次に、RTD電圧を測定し、ルックアップ・テーブルを使って温度に変換します。その後、この温度を等価な熱電対電圧(V2)に変換します。さらに、V1とV2を加算して全体の熱電対電圧を求め、この値を最終的な温度測定値に変換します。

区分的リニアライゼーション手法を使って最終的な温度の値を計算します。一定値の電圧に対するそれぞれの温度をアレイに格納し、隣接するポイント間の線形インターポレーションによって中間値を計算します。理想的な熱電対電圧を使ったアルゴリズム誤差を図3に示します。ADuC7060/ADuC7061のADC0ピンを使用し、熱電対の全動作範囲に及ぶ52ポイントで熱電対電圧を測定したときに得られた誤差を図4に示します。ワーストケースでも全誤差は1℃未満です。

Error When Using Piecewise Linear Approximation
図3. 52個のキャリブレーション・ポイントと理想的な測定による区分的線形近似を使用したときの誤差

 

Error When Using Piecewise Linear Approximation
図4. ADuC7060/ADuC7061のADC0ピンで測定した52個のキャリブレーション・ポイントを使用して区分的線形近似を行ったときの誤差

 

ルックアップ・テーブルを使ってRTD温度を計算し、熱電対に対する方法と同じ方法をRTDに対して実行します。RTDでは、その温度を抵抗の関数として表す多項式が異なることに注意してください。

設計サポート・パッケージのソース・コードはKEIL µVision V3.90を使って生成されたものです。

RTDのリニアライゼーションと性能最適化については、アプリケーション・ノートAN-0970「RTD Interfacing and Linearization Using an ADuC706x Microcontrollerを参照してください。

バリエーション回路

外付けRTDを使用する代りに、温度センサーADT7311を使って冷接点温度を測定することもできます。

ADT7311を使ったソース・コードは設計サポート・パッケージのソフトウェア・パッケージとともに提供されます(www.analog.com/CN0281-DesignSupport)。

ADT7311を駆動するのに外部レギュレータを追加する必要があります。

マイクロコントローラにより多くの汎用I/Oピンが必要な場合、48ピンLFCSPパッケージまたは48ピンLQFPパッケージで供給されるADuC7060を使用することもできます。ADuC7060/ADuC7061は、標準JTAGインターフェースを介してプログラムやデバッグを行うことが可能です。

RTD測定のリファレンス・ソースとして外付けリファレンス抵抗を使用する場合、ユニティ・ゲイン・モードのオペアンプを使ってVREF+ピンの入力をバッファすることを推奨します。これにより、VREF+ピンへの入力リーク電流によって測定精度が低下するのを防ぎます。図9では、OP193がこの目的のために使われています。図1では、動作温度範囲が−40℃~+150℃のAD8628が使われています。

より広い温度範囲の測定には、タイプJのような別の熱電対を使用することができます。冷接点補償誤差を最小限に抑えるため、サーミスタをPCB上ではなく実際の冷接点に接触させて配置します。

冷接点温度の測定にRTDと外付けリファレンス抵抗を使用する代わりに、外付けデジタル温度センサーを使用することもできます。たとえば、I2Cインターフェースを介してADT7311をADuC7060/ADuC7061に接続することができます。

冷接点補償の詳細については、「Sensor Signal Conditioning, Analog Devices, Chapter 7, "Temperature Sensors."」を参照してください。

回路の評価とテスト

SENTインターフェースのテスト

SENTインターフェースの出力はデジタル・オシロスコープとロジック・アナライザを使って評価しました。SENTインターフェースは、SENT規格の最大許容値である100µsのSENTクロック周期でのみテストを行いました。このテストの制限要因には以下のものが含まれます。

  • タイマーのFIQ割込み遅延の変動。ARM7の可能な割込み遅延は最大45CPUクロックです。10.24MHzのCPUクロックでは、最大4.4µsになります。最小割込み遅延は5CPUクロック(0.5µs)です。ワーストケースの遅延は、ARM7コアがLDMIAまたはSTMIA(複数の値をメモリからロードまたはメモリへ格納)を実行しているときに生じます。この遅延を最小限に抑えるにはSplit Load and Store Multipleコンパイラ・オプションを選択します。この使用方法については図5を参照してください。
  • ADuC7060/ADuC7061の10.24MHz発振器の−40℃~+125℃の動作温度範囲におけるワーストケースの精度は±3%です。

Selecting Split Load and Store Multiple Option
図5. Split Load and Store Multiple オプションの選択

 

これらの制限要因があるにもかかわらず、100µsのSENTクロック周期を選択したときのこのテストの結果は、SENT規格で要求される±20%のタイミング精度に対し、十分に範囲内です。

図1のSENT出力にはEMCフィルタが付いています。SENT出力によるEMC放射を減らすため、図6に示すようなトランスミッタ出力波形になるように、このフィルタ(R1、C1、C2)の値を選択します。

このフィルタについては、限られたテストしか行っていないため、図1のように、出力フィルタの抵抗とコンデンサの値は記載していません(R1、C1、C2)。

Example SENT Shaped Waveform Transmitter Output
図6. SENT波形のトランスミッタ出力の例

 

さらに回路のテストと評価を行うため、熱電対測定とRTD測定を個別に評価しました。


熱電対測定のテスト

基本的なテスト・セットアップを図7に示します。2つの方法を使って回路の性能を評価しました。最初に、回路をボードに接続された熱電対でテストし、氷水の温度を測定し、次に沸騰したお湯の温度を測定しました。

Test Setup Used to Calibrate and Test the Circuit Over Full Thermocouple Output Voltage Range
図7. 熱電対の全出力電圧範囲での回路の補正とテストに使用したテスト・セットアップ

 

図3と図4に示されているような誤差を十分に評価するためにWavetekの4808多機能校正器を使用しました。この方法では、図7に示されているように、熱電対の代わりに電圧源として校正器を設置しました。Tタイプ熱電対の全範囲を評価するため、この校正器を使って、Tタイプ熱電対の負と正の範囲に対応する−200℃~+350℃の52個のポイントで熱電対等価電圧を設定しました(ITS-90のTタイプ熱電対の表を参照してください)。

ルックアップ・アルゴリズムの精度を評価するため、+1℃間隔で−200℃~+350℃の温度に相当する551個の電圧値を温度計算関数に代入しました。図3と図4に示したように、線形法と区分的線形近似法で誤差を計算しました。


RTD測定のテスト

RTD回路とリニアライゼーション・ソース・コードを評価するため、ボードのRTDを調整可能な高精度抵抗源に置き換えました。使用した計器は10進の可変抵抗器1433-Zです。テストしたRTDの値の範囲は90Ω~140Ωですが、これはRTDの温度範囲−25℃~+114℃を表します。

RTDテストの誤差の結果を図8に、テスト・セットアップ回路を図9に示します。

Error in °C of the RTD Measurement Using Piecewise Linearization Code and ADC0 Measurements
図8. 区分的リニアライゼーション・コードとADC0の測定値を使用したRTD測定の誤差(℃)

 

Test Setup Used to Calibrate and Test the RTD Output Voltage Range from −25°C to +114°C
図9. −25℃~+114℃のRTD出力電圧範囲の補正とテストに使用したテスト・セットアップ