パソコン側の処理
マイコン側で測定した温度(4チャンネル)と基準接点温度(cjt)を読み出します。
・操作
「Serial Port」ボタンで通信ポートをオープンします。
「Start」ボタンでモニタコマンドを2秒毎に送信します。(タイマ精度のため完全に2秒にはなりません。)
マイコン側から読み出されたデータは上側のグラフ領域に表示されます。また読み出したデータは常にメモリ上に保持されます。
「Save]ボタンで読み出したデータをファイルに保存します。(CSV形式)
「Clear」ボタンで過去の読み出しデータをクリアし、現時刻から読み出しデータをメモリ上に保持します。
「Open」ボタンで保存したファイルを開きます。下側のグラフ領域に表示されます。
「Message」ボタンによりウィンドウが開き、送受信データを表示します。
・プログラム
収集した温度はリストとしてメモリ上に保持しています。Saveしないとファイル上に保存されません。
グラフはScottPlotの散布図を使用しています。
送受信データの表示は別ウィドウです。WPFでのウィンドウ(WPF)の追加については、ConfSerialと同様です。
(https://vabc.hatenadiary.jp/entry/2021/11/21/085446)
送受信データはMainWindowクラスで定義し、別のCommLogクラスで表示しています。public static とすれば他のクラスからアクセスできるようです。
・GitHubへの登録(xaml,csと CSV)
https://github.com/vABCWork/WPF-trend
マイコン側の処理
A/D変換データから測定対象の温度を得る手順です。
CPU RX23E-Aには、ゲインアンプ付きのデルタシグマA/Dコンバータ(DSAD)を2ユニット(DSAD0とDSAD1)があり、DSAD0を熱電対(4チャンネル)に、DSAD1を測温抵抗体(RTD)に使用します。
測定する電圧は差動入力で入力します。差動入力については、資料2*2の「2.1.2 入力方式の選択」、また資料3*3の「2.4 差動信号入力端子」に説明があります。
①DSAD0 (熱電対用)
4チャンネルを順にスキャンして各チャンネルのA/D値を得ます。
・ゲイン
熱電対入力のゲインは128です。このゲインでの入力電圧(熱起電力)範囲は-19.5[mV] ~19.5[mV] です。(資料2の「2.1.1 入力電圧範囲より)
またKタイプの熱電対の測定レンジは-270℃~1370℃で、その熱起電力は-6.458[mV]~54.886[mV]です。19.5[mV]は470℃であり100℃まで十分に測定できます。(熱起電力表(K-Type) 「JIS C1602:2015 熱電対」より)
・バイアス電圧
資料1では、バイアス電圧(Vbias)を入れていますが、本実験では入れていません。(バイアスを入れることで、電源電圧の1/2[V](VCC=5Vならば2.5[V],VCC=3.3Vならば1.65[V])を中心に差動信号が出力されDSAD内部でA/D変換される)
・ A/D値から熱起電力の計算
資料4*4の「34.3.5 DSAD への入力電圧とA/D 変換結果」に記載されています。
AD変換データ形式が2の補数形式(-8388608~8388607)としているので、
測定対象温度 > 基準接点温度(CPUボードの熱電対端子部の温度)の場合、A/D値は正の値となり、
測定対象温度 < 基準接点温度の場合、A/D値は負の値となります。
・補足
熱電対を使用した測定については、テキサス・インスツルメンツの資料
資料5*5 と資料6*6も大変参考になります。
②DSAD1 (測温抵抗体用)
測温抵抗体(RTD)に電流を流してその電圧を測定します。リファレンス抵抗の電圧をA/Dコンバータのリファレンス電圧とすることで、電流の変動に影響されず測定します。
・ゲイン
RTD入力のゲインは32となっています。外部リファレンス抵抗にかかる電圧をVrefとすると、Vref= 2.495[V] (=4.99 [KΩ] x 500[uA]) となります。
差動入力範囲はGain=32 の場合、-78~ 78 [mV] (2.495 / 32= 0.07796875 [V] = 78 [mV])
78[mV]は、RTDが156[Ω]となる温度です。 (78[mV]/500[uA] = 156[Ω」 )
156[Ω]は、140℃以上 になるので、CPUボード上の測定温度範囲0から50℃を満たしています。(「JIS C1604 測温抵抗体」より)
・レシオメトリック測定
リファレンス抵抗のにかかる電圧は、 ----- (a)
測温抵抗体の両端にかかる電圧(Vin)は、 ----- (b)
またAD値から測定電圧(Vin)は、-------- (c)
(a)式と(b)式を(c)式に代入すると、
-------- (d)
IEXC0の影響を受けずに、Rrtdが得られます。
・参考 非レシオメトリック測定(直接測定)
RTDの両端にかかる電圧(Vin)は、
またAD値から測定電圧(Vin)は、
RTDの電圧を直接測定した場合、励起電流とVrefの影響を受けます。
③抵抗値から基準接点の温度 (Rrtd[Ω]→Trtd[℃])
得られた抵抗値(Rrtd)が「抵抗値と温度の対応表」のどの位置にあるか検索し、Rrtd前後の抵抗値と温度から、直線近似によりRrtdに相当する温度を求めます。
例えばRrtd=106.4[Ω]の場合、前後の抵抗と温度は対応表より
抵抗値[Ω] | 温度[℃] |
106.238 | 16 |
106.627 | 17 |
基準(冷)接点の温度は、16.4℃になります。
④基準接点の温度から熱起電力(Trtd[℃]→Vcj)
「熱起電力と温度の対応表」より、基準接点温度(Trtd) 前後の熱起電力と温度から、直線近似によりTrtdに相当する熱起電力を求めます。
例えばTrtd=16.4[℃]の場合、前後の熱起電力と温度は対応表より
熱起電力[uV] | 温度[℃] |
637 | 16 |
667 | 17 |
⑤熱起電力の加算
RTDで測定したCPUボード上の温度に相当する熱起電力と、熱電対による熱起電力を加算します。(基準接点補償)
Vact = Vtc + Vcj
例: Vtc = 650 [uV] , Vcj = 653[uV]
Vact = 650 + 653 = 1303 [uV]
・GitHubへの登録
https://github.com/vABCWork/moni_4ch
(登録ファイル: test1n.c, timer.c, timer.h, dsad.c, dsad.h, sci.c, sci.h, dma.c, dma.h thermocouple.c, thermocouyple.h)
熱電対の加工
熱電対はQIコネクタを使用してCPUボードの端子と接続します。このため購入後に加工が必要です。
圧着が不安な箇所は「はんだ付け」しました。(つけ過ぎるとハウジングに入らなくなります。)
*1:資料1「RX23E-Aグループ 熱電対を使用した温度計測例(R01AN4747JJ0110Rev.1.10)」
*2:資料2「RX23E-AグループAFE・DSADの使い方 (R01AN4799JJ0100 Rev.1.00) 」
*3:資料3「RX21A グループ ΔΣA/D コンバータ ユーザーズガイド (R01AN1437JJ0100 Rev.1.00) 」
*4:資料4「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0110 Rev.1.10)」
*5:資料5「A Basic Guide to Thermocouple Measurements」SBAA274–September 2018
*6:資料6「内部温度センサCJC を搭載した2 チャネル、K タイプの熱電対測 定回路」JAJA649–January 2019