Ⅰ、 3線式PT100温度測定原理

3線式接続法の中心的な目的は、リード線の抵抗値が測定精度に与える影響を排除することです。PT100の抵抗値は非常に小さく(100Ω @ 0℃)、接続線の抵抗値(R6、R7、R15と表記される10分の数Ω~数Ω、3線式RTDテストの回路図を参照)によって無視できない誤差が生じる可能性があります。3線式システムは、巧妙な回路設計によってこの問題を解決します。3線式RTDの3本のリード線はすべて通常同じ長さなので、3本のリード線の抵抗が等しいと仮定すると(RL1 = RL2 = RL3、つまり回路図ではR6=R7=R15)、SSP1220の内部デュアル電流源(IDAC)は、これらのリード線抵抗の影響を打ち消すために使用されます。

測定原理を詳しく解説:

  1. SSP1220の内部で2つの適合するプログラマブル電流源(IDAC1とIDAC2)を使用し、同じ電流を出力する:電流源の選択は1mA未満であることが推奨され、このテストの電流源の選択値は500uAである。
  2. PT100の3つのリード抵抗は等しいと仮定する:R6 = R7 = R15 = Rl
  3. SSP1220は差動入力ペア(AIN0、AIN1)を通してPT100の電圧を測定します: Vイン = VAIN1 - VAIN0

どこでVAIN1 = IIDAC1 x (RL1+Rピーティーヒャク)+ (IIDAC1 + Iアイダックツー) x RL3, VAIN0 = Iアイダックツー x RL2 + (IIDAC1 + Iアイダックツー) x RL3

以来:私はIDAC1 = Iアイダックツー = Iアイダック AND RL1 = RL2 = RL3 = RL

に代入する:VIN = [Iアイダック x (RL + Rピーティーヒャク)+ 2Iアイダック x RL]- IIDAC x RL + 2IIDAC x RL] = Iアイダック x RL + Iアイダック x Rピーティーヒャク + 2Iアイダック x RL - 2Iアイダック x RL = Iアイダック x Rピーティーヒャク

巧みな回路構成により、差動入力電圧VINからリード抵抗の影響を完全に排除し、PT100抵抗の電圧降下のみを含ませている。

  1. SSP1220の基準電圧Vrefは、高精度の外部基準抵抗Rref (R5)を介して2つのIDAC電流をマージすることにより生成される。
  2. 比率測定では、最終 ADC 出力コードは IDAC 電流の絶対値、精度、ドリフトに関係なく (Rpt100) / (Rref) に比例し、同時にリード抵抗 Rl1 と Rl2 の影響も打ち消します:

24ビットのSSP1220の場合、出力される数値コードは次のようになる:

コード = (223 - 1) x (Vイン/Vリファレンス) = (223 - 1) x [Rピーティーヒャク/(2 x Rリファレンス) ]

ADC コードによる PT100 抵抗値の逆数:

Rピーティーヒャク = [コード/(2)23-1)] x 2 x Rリファレンス

最後に、PT100の抵抗-温度特性に従って(通常、カレンダ-ヴァン・デューセン式またはテーブル・ルックアップ法を使用)、Rpt100を温度値に変換します:T = f (Rpt100)。PT100の場合、0℃、R0 = 100.00Ωで、抵抗温度係数は約α≈0.00385Ω/Ω/℃となります。

ハードウェア回路設計

データシートの典型的なアプリケーションによると、典型的な3線式PT100の接続回路は以下の通りです:

  1. 回路の接続方法
  • PT100の接続:PT100(3線式)は回路図のように接続します。
  • 電圧リファレンス生成:IDAC1出力はAIN2(内部ソフトウェア構成が必要)に接続され、IDAC2出力はAIN3(内部ソフトウェア構成が必要)に接続され、2つのIDAC電流はノードで合流し、外部基準抵抗Rref(R5)を介して一緒に流れる。REF のもう一方の端はアナログ・グラウンド AVSS に接続される。SSP1220の正基準入力REFP0はRREF(R5)の上端(IDACマージポイント)に接続される。SSP1220の負基準入力REFN0はAVSSに接続する。したがって、基準電圧VREF=(IIDAC1 + IIDAC2) * RREFとなる。
  • 信号測定:SSP1220のAIN1は差動正入力AINPとして構成され、SSP1220のAIN0は差動負入力AINNとして構成されるため、測定される電圧はAIN1とAIN0の電位差となる。
  • フィルター回路:アンチエイリアシングとノイズ抑制のため、アナログ入力(AIN0、AIN1、AIN2)と基準入力(REFP0)の両方にRCローパスフィルターを追加する必要がある。入力フィルター:R1、R2、C1、C6、C5で構成。基準フィルター:R3、R4、C2、C3、C4で構成。スケール測定の精度を維持するため、基準フィルターのカットオフ周波数は入力フィルターと一致させる必要がある。

Ⅲ、デバイスの選択とパラメータ計算

仮想的な設計目標は以下の通りである:PT100タイプ:3線式、温度測定範囲:-200℃~+850℃、電源電圧AVDD:3.3V(AVSS=0V)、DAC電流:500μA(各チャンネル)、データレート:20SPS(最適なノイズ性能のため)。

  1. 基準抵抗(Rref)の選択と計算

Rrefはシステム全体の精度の中核をなす。機能です:ADC の基準電圧 Vref を生成し、その精度と安定性が測定結果を直接決定します。

抵抗の計算:

ADC のレンジを最大にし、PGA のコモンモード電圧要件を満たすために、Vref は通常電源電圧の約半分に設定される。この設計では、AVDD = 3.3V、ターゲット VREF は約 1.65V である。

Iアイダック = I_IDAC1 + I_IDAC2 = 500uA + 500uA = 1mA

Rリファレンス = Vリファレンス /(IIDAC1 + Iアイダックツー) = 1.65V/1mA = 1.65kΩ

公称値1.65kΩの抵抗を選択することができる。見つからなければ、1.62kΩ または 1.69kΩ も許容できる近似値である。

選考条件

精度:少なくとも±0.1%、高精度用途には±0.05%以上を推奨。

温度ブリーティング:非常に低くなければならず、±5ppm/℃または±10ppm/℃の精密フィルム抵抗を推奨。

長期安定性:高い

通常の1%、100ppm/℃のチップ抵抗は絶対に使用しないでください。

  1. IDAC電流およびPGAゲイン・オプション

IDAC電流:500μAを選択。この値は、消費電力、自己発熱効果、および信号振幅のバランスがうまく取れています。電流が小さすぎると、信号が弱くノイズの影響を受けやすくなります。電流が大きすぎると、PT100が自己発熱したり、IDAC準拠電圧を超えたりする可能性があります。

PGAゲインの選択:PT100は電圧が小さい(例えば500μA×100Ω=50mV)が、比率測定(基準電圧もIDACのもの)を使用するため、飽和を避けるために増幅する必要がなく、ゲイン選択は1Xとなる。

  1. フィルター回路の部品選択

フィルター抵抗(R1、R2、R3、R4):通常1kΩが選択される。この値は、効果的にフィルタリングするのに十分大きく、(入力バイアス電流による)入力での大きなオフセット電圧を避けるのに十分小さい。また、電流制限保護としても機能する。

差動フィルタ・コンデンサ(C1、C2):抵抗とともにカットオフ周波数を設定する。例えば、データレート20SPSの場合、カットオフ周波数は数十Hzに設定できる。 fc = 1 / (2π * (R1+R2) * C1)。R1+R2=2kΩでfc≈16Hzと予想される場合、C1≈1 / (2* 2000 * 16) ≈ 4.7μF。実際のアプリケーションでは、より広いノイズ除去帯域幅を得るために100nF(0.1μF)がよく使われる。タイプC0G(NPO)セラミック・コンデンサは、誘電率が安定し、電圧係数が低く、微小音響効果が低いため推奨される。

コモンモードフィルター付きコンデンサ(C5、C6、C3、C4):差動コンデンサのミスマッチが過度のコモンモード・ノイズを差動ノイズに変換しないようにするため。

Ⅳ、ソフトウェア設定

  1. マスター・ロジック:

float SSP1x20_read_temperature(void)

{

uint32_t ADC_data;

uint32_t ADC_temp1;

//SSP1x20_read_register(SSP1x20_REG0, 4, &Read_REGTab[0]);

Write_REGTab[0] = SSP1x20_MUX_AIN0_AIN1 | SSP1x20_GAIN_1 | SSP1x20_PGA_BYPASS_ON;

Write_REGTab[1]=SSP1x20_DR_20SPS|SSP1x20_MODE_NORMAL|SSP1x20_SC|SSP1x20_TS_ON| SSP1x20_BCS_OFF;

Write_REGTab[2]=SSP1x20_VREF_2048|SSP1x20_REJECT_OFF|SSP1x20_PSW_OFF | SSP1x20_IDAC_1000uA;

Write_REGTab[3] = SSP1x20_IDAC1_AIN2 | SSP1x20_IDAC2_AIN3 | SSP1x20_DRDYM_DRDY;

SSP1x20_WriteRegister(SSP1x20_REG0, 4, &Write_REGTab[0]);

SSP1x20_SendCommand(SSP1x20_CMD_START);

spi_adc_cs_low();

while (ADC_DRDY_GAIN == 1);//SSP1x20_DRDYM_DRDY

  1. プログラムの主な構成と説明
  • レジスタ0の設定:MUXとゲイン

Write_REGTab[0] = SSP1x20_MUX_AIN0_AIN1 | SSP1x20_GAIN_1 | SSP1x20_PGA_BYPASS_ON;

ビット構成機能説明
BIT7〜BIT4MUX_AIN0_AIN1差動入力チャンネル選択AIN0 - AIN1 → PT100電圧測定用
BIT3~BIT1GAIN_1(1倍ゲイン)ゲイン設定1×(Vin≒1Vなので増幅の必要なし)
ビット0PGA_BYPASS_ONPGAバイパス信号の歪みを防ぐため、プログラマブル・ゲイン・アンプをオフにする
  • コンフィギュレーション・レジスタ1:サンプル・レートとモード

Write_REGTab[1] = SSP1x20_DR_20SPS | SSP1x20_MODE_NORMAL | SSP1x20_SC | SSP1x20_TS_OFF | SSP1x20_BCS_OFF;

ビット構成機能説明
BIT7〜BIT5DR_20SPSデータレート20回/秒 → 低速の温度変化に最適
BIT4~BIT3MODE_NORMAL通常の作業モードシングルでも連続でもない
ビトーSCセルフキャリブレーションが可能精度の向上(推奨)
BIT1TS_OFF内部温度センサーを無効にするTS_ON 内部温度センサーをオンにし、外部温度を測定する設定は機能しない(この設定が最も優先される)

 

  • コンフィギュレーション・レジスタ2:IDACによる基準電圧

Write_REGTab[2] = SSP1x20_VREF_2048 | SSP1x20_REJECT_OFF | SSP1x20_PSW_OFF | SSP1x20_IDAC_500uA;

ビット構成機能説明
BIT7〜BIT6VREF_2048外部基準電圧外部R_REFR_REFを使用して基準電圧を生成する(例えば1.65kΩ)。
BIT5〜BIT4REJECT_OFFノッチフィルターなし電源周波数干渉耐性は不要
ビット3PSW_OFF電源スイッチを有効にしない通常の電力供給を維持する
BIT2〜BIT0IDAC_500uA励磁電流3.9kΩ×1mA=3.9V>3.3Vの過電圧を避けるため500μAに設定

  

ビット構成機能説明
BIT7〜BIT5IDAC1_AIN2IDAC1出力→AIN2励磁電流はPT100の上端を流れる。
BIT4~BIT2IDAC2_AIN3IDAC2出力をAIN3へリード抵抗を打ち消すためにパスに戻る
BIT1DRDYM_DRDYDRDYモードDRDY信号で変換完了を知らせる

 

(4) レジスタ3:IDACルート・チャネルをDRDYで構成する

  1. 3線式PT100コア:

現在の進路

  • IDAC1 → ain2 → PT100 → ain1
  • IDAC2 → AIN3 → AIN1(リターン)
  • 2つの電流が等しい → R_LEAD2R_LEAD2の電圧降下を相殺する

uint32_t raw_u24 = SSP1x20_read_data_drdy();

 

SSP1220出力 24ビットデータしかし、MCUは通常32ビットで読み取る(SPIは一度に4バイトを読み取る)。

 

もし (raw < 0) raw = -raw;

PT100 電圧 は常に正 (AIN0からAIN1に電流が流れる)。

raw < 0なら AIN0とAIN1のソフトウェア・コンフィギュレーションは逆になる。

printf("Raw: %ld, R=%.3f Ω, Temp=%.2f °Cr}n",raw, R_pt100, temperature);

プリント 元のコード値から抵抗値を計算し、最終的な温度を算出する。 デバッグしやすいように

Rawがマイナスの場合→構成が逆になる

R>1400Ωの場合→IDACまたはRrefの設定が正しくないことを示す

Temp = -999 → R値が妥当な範囲外であることを示す。

 

Ⅴ、測定手順と結果

  1. 両端のPT100電圧測定プログラム:

void SSP1x20_ADC_MeasurePt100(void)

{

float V_ref = 2.048; // 内部基準電圧 2.048V

//多点単一電圧測定;

Write_REGTab[0] = SSP1x20_MUX_AIN1_AIN0 | SSP1x20_GAIN_1 | SSP1x20_PGA_BYPASS_OFF;

Write_REGTab[1] = SSP1x20_DR_20SPS | SSP1x20_MODE_NORMAL | SSP1x20_SC | SSP1x20_TS_OFF | SSP1x20_BCS_OFF;

Write_REGTab[2] = SSP1x20_VREF_REF0 | SSP1x20_REJECT_OFF | SSP1x20_PSW_OFF | SSP1x20_IDAC_500uA;

Write_REGTab[3] = SSP1x20_IDAC1_AIN2 | SSP1x20_IDAC2_AIN3 | SSP1x20_DRDYM_DRDY;

SSP1x20_WriteRegister(SSP1x20_REG0, 4, &Write_REGTab[0]);

 

printf("Write_REGTab[0]=%x\rn", Write_REGTab[0]);

printf("Write_REGTab[1]=%x\rn", Write_REGTab[1]);

printf("Write_REGTab[2]=%x\rn", Write_REGTab[2]);

printf("Write_REGTab[3]=%x\rn", Write_REGTab[3]);

一方

{

SSP1x20_SendCommand(SSP1x20_CMD_START); // 連続測定が有効な場合、このコマンドは 1 回のみ送信されます。

HAL_Delay(100);

spi_adc_cs_low();

}

 

SSP1220テスト結果

  1. SSP1220内部温度測定

内部温度テスト機能

float SSP1x20_read_temperature(void)

{

uint32_t ADC_data;

uint32_t ADC_temp1;

 

//SSP1x20_read_register(SSP1x20_REG0, 4, &Read_REGTab[0]);

Write_REGTab[0] = SSP1x20_MUX_AIN0_AIN1 | SSP1x20_GAIN_1 | SSP1x20_PGA_BYPASS_ON;

Write_REGTab[1] = SSP1x20_DR_20SPS | SSP1x20_MODE_NORMAL | SSP1x20_SC | SSP1x20_TS_ON | SSP1x20_BCS_OFF;

Write_REGTab[2] = SSP1x20_VREF_2048 | SSP1x20_REJECT_OFF | SSP1x20_PSW_OFF | SSP1x20_IDAC_1000uA;

Write_REGTab[3] = SSP1x20_IDAC1_AIN2 | SSP1x20_IDAC2_AIN3 | SSP1x20_DRDYM_DRDY;

SSP1x20_WriteRegister(SSP1x20_REG0, 4, &Write_REGTab[0]);

 

SSP1x20_SendCommand(SSP1x20_CMD_START);

spi_adc_cs_low();

 

while (ADC_DRDY_GAIN == 1);//SSP1x20_DRDYM_DRDY

 

内部温度テストの構成詳細:

 Write_REGTab[1] = SSP1x20_DR_20SPS | SSP1x20_MODE_NORMAL | SSP1x20_SC | SSP1x20_TS_ON | SSP1x20_BCS_OFF;

  • SSP1x20_TS_ON: 内部温度センサーを有効にする (クリティカル)の場合、このコンフィギュレーションが最も優先されます。
  • SSP1x20_SC:セルフキャリブレーションを行う(推奨)
  • 20SPS:低速・高精度、温度測定に最適

Write_REGTab[2] = SSP1x20_VREF_2048 | SSP1x20_REJECT_OFF | SSP1x20_PSW_OFF | SSP1x20_IDAC_1000uA;

  • SSP1x20_VREF_2048:使用する 内部2.048V基準電圧 (外部REF0ではない)
    • 内部温度センサーは 絶対電圧出力, a 固定基準電圧 を使用して温度を変換しなければならない。
  • IDAC_1000uA:IDACは有効だが、 TS_ONモードのIDACは内部温度測定に影響しない (無視できる)。

Write_REGTab[3] = SSP1x20_IDAC1_AIN2 | SSP1x20_IDAC2_AIN3 | SSP1x20_DRDYM_DRDY;

  • IDACピンとDRDYを構成する。 内部温度の測定に影響はない (レジはそのままで)。
  • 2 変換を開始し、DRDYを待つ

SSP1x20_SendCommand(SSP1x20_CMD_START); SPI_ADC_CS_LOW();同時に (adc_ddy_gain == 1); // 等待 drdy 变低

  • STARTコマンドを送信し、連続トランジションを開始する。
  • 待つ DRDYピンがLowになるデータの準備ができたことを示す

室内室温の測定結果を下図に示す:

3.外部温度測定(方法1、簡易係数0.385計算)

外部温度テスト関連コード:

uint32_t ADC_gain_value = 0; // 読み出しデータ

uint32_t ADC_value = 0; // データ値を測定する

float tmpPt100=0;

float RTD=0;

void SSP1x20_ADC_Measure(void)

{

 

printf("¦多点単一電圧測定¦");

Write_REGTab[0] = SSP1x20_MUX_AIN1_AIN0 | SSP1x20_GAIN_1 | SSP1x20_PGA_BYPASS_OFF; SSP1x20_MUX_AIN1_AIN0 インターフェース AIN1 AIN0 は実際の回路図に基づいて選択してください。

Write_REGTab[1] = SSP1x20_DR_20SPS | SSP1x20_MODE_NORMAL | SSP1x20_SC | SSP1x20_TS_OFF | SSP1x20_BCS_OFF;

Write_REGTab[2] = SSP1x20_VREF_REF0 | SSP1x20_REJECT_OFF | SSP1x20_PSW_OFF | SSP1x20_IDAC_500uA;

Write_REGTab[3] = SSP1x20_IDAC1_AIN2 | SSP1x20_IDAC2_AIN3 | SSP1x20_DRDYM_DRDY;

SSP1x20_WriteRegister(SSP1x20_REG0, 4, &Write_REGTab[0]);

printf("Write_REGTab[0]=%x\rn", Write_REGTab[0]);

printf("Write_REGTab[1]=%x\rn", Write_REGTab[1]);

printf("Write_REGTab[2]=%x\rn", Write_REGTab[2]);

printf("Write_REGTab[3]=%x\rn", Write_REGTab[3]);

一方

{

 

SSP1x20_SendCommand(SSP1x20_CMD_START); 連続測定が有効な場合、このコマンドは 1 回のみ送信されます。

HAL_Delay(100);

spi_adc_cs_low();

ADC_gain_value =0;

 

ADC_gain_value = SPI_ADC_ReadByte();

ADC_gain_value = (ADC_gain_value << 8) | SPI_ADC_ReadByte();

ADC_gain_value = (ADC_gain_value << 8) | SPI_ADC_ReadByte();

 

spi_adc_cs_high();

 

RTD = 1650*( (float)ADC_gain_value /(0x3fffff));//基準抵抗1650オーム

tmpPt100 = (RTD-100)/0.38;

__NOP();

 

printf("R=%.3f Ω, Temp=%.2f °Crrn",RTD, tmpPt100 );

}

氷水混合物の温度を3線式RTDで測定した結果を下図に示す:

外部温度測定(方法2、カレンダー・ヴァン・デューセンの式で計算)はより正確である。

 

マスターコード

//高精度RTD→温度

static float rtd_to_temperature_iec60751(float rtd)

{

if (rtd < 0.0f) return -999.0f; // 不正な値

 

float t = (rtd - R0_PT100) / 0.385f; // 初期推測値

 

if (rtd <= R0_PT100) {。

//T < = 0℃:完全な式を使用する

for (int i = 0; i < 10; i++) {.

float rt_calc = R0_PT100 * (1.0f + A_COEFF*t + B_COEFF*t*t + C_COEFF*(t - 100.0f)*t*t*t);

float dr_dt = R0_PT100 * (A_COEFF + 2.0f*B_COEFF*t + C_COEFF*(4.0f*t*t - 300.0f*t*t));

float error = rt_calc - rtd;

t -= error / dr_dt;

if (fabsf(error) < 0.001f) break;

}

} else {

// T >= 0°C:: 簡略化した式を使用する。

for (int i = 0; i < 10; i++) {.

float rt_calc = R0_PT100 * (1.0f + A_COEFF*t + B_COEFF*t*t);

float dr_dt = R0_PT100 * (A_COEFF + 2.0f*B_COEFF*t);

float error = rt_calc - rtd;

t -= error / dr_dt;

if (fabsf(error) < 0.001f) break;

}

}

tを返す;

}

/**

* アナログチャンネルADC測定(外部温度測定)

* @param None

* なし

*/

uint32_t ADC_gain_value = 0; // 読み出しデータ

uint32_t ADC_value = 0; // データ値を測定する

float tmpPt100=0;

float RTD=0;

void SSP1x20_ADC_Measure(void)

{

 

printf("¦多点単一電圧測定¦");

Write_REGTab[0] = SSP1x20_MUX_AIN1_AIN0 | SSP1x20_GAIN_1 | SSP1x20_PGA_BYPASS_OFF;

Write_REGTab[1] = SSP1x20_DR_20SPS | SSP1x20_MODE_NORMAL | SSP1x20_SC | SSP1x20_TS_OFF | SSP1x20_BCS_OFF;

Write_REGTab[2] = SSP1x20_VREF_REF0 | SSP1x20_REJECT_OFF | SSP1x20_PSW_OFF | SSP1x20_IDAC_500uA;

Write_REGTab[3] = SSP1x20_IDAC1_AIN2 | SSP1x20_IDAC2_AIN3 | SSP1x20_DRDYM_DRDY;

// Write_REGTab[3] = SSP1x20_IDAC1_AIN3 | SSP1x20_IDAC2_AIN2 | SSP1x20_DRDYM_DRDY;

SSP1x20_WriteRegister(SSP1x20_REG0, 4, &Write_REGTab[0]);

printf("Write_REGTab[0]=%x\rn", Write_REGTab[0]);

printf("Write_REGTab[1]=%x\rn", Write_REGTab[1]);

printf("Write_REGTab[2]=%x\rn", Write_REGTab[2]);

printf("Write_REGTab[3]=%x\rn", Write_REGTab[3]);

一方

{

SSP1x20_SendCommand(SSP1x20_CMD_START); 連続測定が有効な場合、このコマンドは 1 回のみ送信されます。

HAL_Delay(100);

spi_adc_cs_low();

 

ADC_gain_value =0;

ADC_gain_value = SPI_ADC_ReadByte();

ADC_gain_value = (ADC_gain_value << 8) | SPI_ADC_ReadByte();

ADC_gain_value = (ADC_gain_value << 8) | SPI_ADC_ReadByte();

 

spi_adc_cs_high();

 

#define CALIBRATED_FULL_SCALE 4210300.0f // キャリブレーションデータによる

 

RTD = 1650.0f * ((float)ADC_gain_value / CALIBRATED_FULL_SCALE);

tmpPt100 = rtd_to_temperature_iec60751(RTD);

__NOP();

 

printf("R=%.3f Ω, Temp=%.2f °Crrn",RTD, tmpPt100 );

}

}

 

テスト結果を図に示す:

 

温水温度テスト:

氷水混合テスト:

4.外部温度試験構成の詳細:

登録値を設定する(あなたのコード)機能の説明なぜこれを選んだのですか?
REG0
ライト_REGTab[0]
SSP1x20_MUX_AIN1_AIN0
| SSP1x20_GAIN_1
|SSP1x20_PGA_BYPASS_OFF
チャンネル選択+ゲイン設定に入る 
SSP1x20_MUX_AIN1_AIN0差動入力: AIN1が正でAIN0が負PT100は両端がAIN0とAIN1に接続され、差動電圧測定が必要です。⚠️ 極性に注意もし設定が逆であれば、ADC は負の値(例えば 0x800000)を出力し、その結果温度は負になります。
SSP1x20_GAIN_1ゲイン = 1PT100は電圧は小さいが(例えば500μA×100Ω=50mV)、比率測定を使用する(基準電圧もIDACのものである)。 増幅なし は飽和を避けるために必要である。
SSP1x20_PGA_BYPASS_OFFバイパスPGAなし信号経路が正常であることを確認するために、PGA 機能を保持する(ゲイン=1 であっても)。
REG1
ライト_REGTab[1]
SSP1x20_DR_20SPS
| SSP1x20_MODE_NORMAL
| SSP1x20_SC
| SSP1x20_TS_OFF
| SSP1x20_BCS_OFF
データ・レート+動作モード 
SSP1x20_DR_20SPSサンプルレート 20サンプルポイント/秒低速は精度を向上させ、ノイズを抑制し、温度測定(ゆっくりとした変化)に適している。
SSP1x20_MODE_NORMAL通常の連続変換モードリアルタイムモニタリングのための連続データ出力。
SSP1x20_SC自己校正の実行各コンフィギュレーション後にキャリブレーションを行うことで、オフセット/ゲインエラーを排除し、精度を向上。
SSP1x20_TS_OFF内部温度センサーをオフにする我々は外部のPT100を測定しており、内部温度は必要ない。
SSP1x20_BCS_OFFバーンオフ電流源の無効化いや、そんなことはない。
レグ2
ライト_REGTab[2]
SSP1x20_VREF_REF0
| SSP1x20_REJECT_OFF
| SSP1x20_PSW_OFF
SSP1x20_IDAC_500uA
基準電圧+IDAC設定 
 SSP1x20_VREF_REF0用途 外部参照 電圧(REF0 = AIN2/AIN3間電圧)。実施 比率に基づく測定:ADC 結果 = (Vpt100 / Vref) × 224、 IDAC電流の絶対値に依存しない電源変動に強い。
 SSP1x20_REJECT_OFF50/60Hzサプレッションが有効になっていない環境干渉が小さい場合はオフにすることができますが、電力周波数環境であれば、REJECT_50をオンにすることをお勧めします。
 SSP1x20_PSW_OFFセンサーの電源スイッチを切るPT100はIDACから電源を供給され、追加のPSWは必要ありません。
 SSP1x20_IDAC_500uA定電流源電流の設定 500 μA共通の電流値、消費電力と信号振幅のバランス(100Ω→50mV)。
レグ3
ライト_REGTab[3]
SSP1x20_IDAC1_AIN2
| SSP1x20_IDAC2_AIN3
| SSP1x20_DRDYM_DRDY
IDAC出力端子+DRDYコンフィギュレーション 
SSP1x20_IDAC1_AIN2IDAC1出力→AIN2AIN2~PT100(励磁)
SSP1x20_IDAC2_AIN3IDAC2出力をAIN3へAIN3はR_refの一端で基準抵抗に接続される(ループを形成する)
→実現する 3線式補償 (ワイヤー抵抗を相殺する)。
SSP1x20_DRDYM_DRDY有効にする DRDYピン (データレディ信号)。MCUはGPIOを通じてDRDYのロー・レベルを検出し、データがいつ読み込まれているかを把握してポーリングを回避する。

 

----------------------------------

キー・パーツ・コードの計算式:

RTD = 1650*( (float)ADC_gain_value /(0x3fffff)); //基準抵抗1650オーム tmpPt100 = (RTD-100)/0.385;

基準抵抗1650オーム、

1行目のコード RTD = 1650 * (ADC / 0x3FFFFF)

元のADC値をPT100の抵抗値に変換するように設計(比率測定)

  • VIN = I × RPT100(PT100を横切る電圧)
  • VREF = I × RREF(基準抵抗にかかる電圧)

両端に同じ定電流源I adcを使用する。

 

だから     Vin/Vref = Rpt100/Rref

 

ADCの出力は、この比率をデジタル化したものである。

ADC_Code = Vin/Vref x 224

 

だから押し戻された

Rpt100= Rref x ADC_Code /224

 

---------------------------------------

2行目のコード:tmpPt100 = (RTD - 100) / 0.385;

直線近似式で温度を見積もる

0℃の場合、Rpt100 = 100 Ω

温度が1℃上昇するごとに、抵抗値は約0.385Ω増加する。

だから

 

T (R-100)/0.385

 

 

Ⅵ、よくある問題のデバッグガイド

アノーマル考えられる原因トラブルシューティングの手順
ADC(生)の元の値は負であるAIN0はAIN1の逆の構成です。1.ソフトウェアの設定とハードウェアの接続が一致していることを確認する。
r_pt100 > 1400ω1.IDAC 電流設定が正しくない。1.REG2 の IDAC コンフィギュレーションをチェックする(500μA であることを確認する)。
温度値は - 999°CPT100は18Ω〜330Ωの範囲を超える1.PT100 が断線していないか確認する(PT100 の抵抗値を測定する); 2. SPI 通信を確認する(レジスタ構成値を読み込む)。
温度変動 > 0.1°C1.電源のリップルが大きい。1.SSP1220 の VDD リップルを測定する(10mV 以下必要); 2.干渉を避けるためにシールド線のアースをチェックする。

Ⅶ、 SSP1220 コア・レジスタ構成表

登録アイテムの設定値(外部温度測定)機能の説明
REG0差動チャンネルAIN1-AIN0PT100の配線を合わせ、負の生を避ける。
ゲイン信号の飽和を避け、比率測定に適応する
PGAバイパス無効にする信号経路の完全性を保つ
REG1サンプリング・レート20SPS低速で精度が向上し、低速の温度信号にも対応
作業モードノーマルモード温度データの連続変換とリアルタイム出力
セルフ・キャリブレーションイネーブルオフセット/ゲインエラーを排除し、精度を向上
内部TS無効にする内部センサーを必要としない外部温度測定
 レグ2基準電圧外部 REF0IDAC電流変動に対抗する比率ベースの測定
IDAC電流500μA平衡消費電力と信号振幅(50mV 100Ω)
レグ3IDAC1ルートAIN2励磁電流入力 PT100
IDAC2ルートAIN3リード抵抗R7に対抗する

Ⅷ、カレンダー・ヴァン・デューセン方程式係数表

係数数値単位適用範囲
R0100.0Ω0℃基準抵抗
A3.9083×10-3-1-200℃~600℃
B-5.775×10-7-2-200℃~600℃
C-4.183×10-12-4-200℃~0℃

完全なコードは、当社のテクニカルサポートにお問い合わせください。連絡先18014203727