【温度センサーIC+PICマイコンの設計】-4:温度センサーICの出力信号をマイコンに取り入れる(実機検証編)

エレキ設計

この記事でわかること

別投稿”【温度センサーIC+PICマイコンの設計】-3:温度センサーICの出力信号をマイコンに取り入れる(ソフト設計編-2” の続編です。製作した”温度センサーIC回路+PICマイコンのプログラム”を実機検証しました。

※PICマイコンは、マイクロチップ・テクノロジー(Microchip Technology)社の
マイクロコントローラ製品です。
“MPLAB X IDE”のバージョンは、V6.05です。
PICkit4の説明については、Microchip社の資料:”MPLAB PICkit4 ユーザガイド”を引用しています。

本ブログで使用している測定機器は、個人購入して一般市販レベルの機器で有ります。また機関による校正等を行っていません。
温度センサーIC:LM61、PIC16F1938、その他部品は、1個の検証です。したがって本部品の品質を保証する投稿ではありません。
測定値は、参考レベルです。

実機検証項目(別投稿:シミュレーションの検証項目と同じ)

実機検証項目は、前投稿:”【PICマイコン支援ツール”MPLAB X IDE”】シミュレーション”の検証項目と同じとしました。

1.30℃について”温度センサーIC+PICマイコン”で温度測定
  (自作の恒温槽のため正確に30℃設定制御は、難しいので20℃代・30℃代・40℃代・50℃代・60℃代をマイコンで温度測定(T_regの値)、グラフにして近似直線上の30℃時のマイコン温度測定値を算出します。)
2.10秒タイマー値( TMR2_10sec_flg = “0” ⇒ “1” )10秒測定

プログラムの書き込み

前記事で作成したプログラムをPICマイコンのフラッシュメモリーに書き込みます。
PICkit4を接続する回路を、”図1:温度センサーICと書き込み回路”に示します。

”U1 ブロック1”のコネクタは、ICSP インターフェース(I/F)です。
ICSP I/Fは、PICkit4と接続します。
PICkit4は、USB I/Fを経由して PC:パソコンと接続しプログラムをマイコン内のフラッシュメモリーに書き込みます。

図1:温度センサーICと書き込み回路

温度センサーIC:図左側の”LM61の回路部”は、プログラム書き込みには、関係ないです。

書き込み方法の詳細は、ここを参照

”MPLAB X IDE”画面の書き込み処理実行後の右側の”Output”ウィンドウに、結果表示
  ”Programming /Verify complete” 表示で、プログラム書き込み正常終了が確認できます。

実機評価:温度測定環境

実機構成

PICマイコンにプログラムを書き込んだ後、下記 実機検証構成で温度測定を行います。

下記に、実機検証の構成図を”図2:実機検証構成図”に示します。

図2:実機検証構成図

説明:

PIC16F1938:
マイコロチップ社のPICマイコン
PITkit4:PICデバッカーキット
MPLAB X統合開発環境(IDE)の強力な GUI を使って Microchip PIC® マイクロコントローラ (MCU)、dsPIC® DSC、CEC(ARM® Cortex®-M4 ベース )MCU を迅速かつ簡単にデバッグおよびプログラミングできます。
構成は、PICkit4を経由して、PICマイコン(PIC16F1938)と PCのインターフェースを制御する
デバッカーキットです。
PC:パソコン
”MPLAB X IDE”支援ソフトが搭載されているパソコン
“MPLAB X IDE”のバージョンは、V6.05
Temperature chamber:恒温槽
自作の恒温槽、温度制御用回路が無いのため、目標温度設定の制御は難しいです。
LM61:
Ti製の温度センサーIC
Thermometer:
市販の温度計、恒温槽内の温度を測定します。
VDD:DC電源
1.5V単一乾電池2個直列接続
温度センサーICの電源
Vdd:PICマイコン電源
PICkit4からPICマイコンに5V供給
c:コンデンサー
ノイズ対策用のコンデンサー 1uF(カタログの仕様に合わせています。)
R:プルアップ抵抗
10kΩ
評価時は、”/MCLR”端子をハイレベルに固定(マイコン内部にもプルアップ抵抗接続有り)

実行するプログラム説明

”MPLAB X IDE”支援ソフトのデバックモードを使い、パソコンからPICマイコンを制御して、約10秒毎の温度測定値を確認します。
温度値は、プログラム中のデータ宣言をした”T_reg”の値です。

“T_reg”と10秒カウントとブレイクポイント設定に関係したプログラムを、
図3:実行プログラムmain.c と 図4:実行プログラムtmr2.cを下記に示します。

main.c プログラム

図3:実行プログラムmain.c

E:80行 ”T_reg”が温度値
”MPLAB X IDE”支援ソフトのデバックモードを使い、”T_reg”の温度値を観測。
自作恒温槽で温度制御機能が無いため、30℃の温度設定制御が難しいので、20℃代、30℃代、40℃代、50℃代、60℃代を測定して、線形近似のグラフを作成して、30℃時の”T_reg”を算出します。

F: 82行 ”TMR2_10sec_flg=0“は、10秒フラグをクリア

tmr2.cプログラム

図4:実行プログラムtmr2.c

二段目の赤枠:143行 ”TMR2_10sec_flg=1“は、10秒達成フラグ

2.10秒のタイマー時間の検証は、
main.cの”TMR2_10sec_flag=0″ ⇒ tmr2.cの“TMR2_10sec_flag=1“の時間を測定します。

実機評価

”MPLAB X IDE”支援ソフトのデバックモード

図2:実機検証構成図と”MPLAB X IDE”支援ソフトで、実機検証の環境構成となります。
具体的なソフト設定、検証方法を下記に示します。

1.PICkit4設定は、前投稿の”PICマイコン 4Hzパルス ソフト設計”の”プログラム書き込み”と同じです。
本記事の場合:Projectsは、”TMPRTR_get”となります。(上記、参考の”前投稿のProjects名”とは違います。)

2.検証を開始は、”Debug Project”上記アイコンを、選択(左側ボタンクリック)します。
  ”警告ウィンドウ”を”OK”選択すると⇒ Runします。

PICkit4のLEDが青色⇒オレンジ色に変わります。
一旦、”Pause”して、プログラム実行を停止させます。

1.20℃代・30℃代・40℃代・50℃代・60℃代の恒温槽内に温度センサーICを入れて、温度測定

恒温槽内に温度センサーICを設置して温度測定(”T_Reg”)、同時に恒温槽内の温度計と比較検証します。
恒温槽30℃の温度設定制御が難しいので、20℃代、30℃代、40℃代、50℃代、60℃代を温度測定してクラフを作成、このグラフを元に近似直線を作成して、30℃時の”T_reg”を算出します。

1.温度測定(T_reg値) のために、”Watches”機能を起動

[Window]⇒[Debugging]⇒[Watches]を選択、Watchesウインドウが画面の右側に表示します。下記図を参照

図5:”Watches”起動

右側に”Watches”ウインドウ表示
<Enter new watch>青枠に
“D_reg”, “A_reg”, “T_reg” を入力、観たいデータを指定

図6:”Watches”ウインドウ

2.”Break point”の設定

図7:main.c 82行にブレイクポイント設定

Break pointをmain.cの ”T_reg = (A_reg/10.0)-60.0″ 実行の次の82行に設定
(上記、図7:main.c 82行にブレイクポイント設定を参照)。
82行で、マウス左側ボタンクリック。本行が、”赤色四角”となります。

3.恒温槽の温度を変更後、停止していたプログラムを”Continue”のアイコン選択して
再実行します。

図8:”Continue”のアイコン

4.82行のブレイクポイントで停止、”Watches”ウインドウにマイコンの温度測定値表示

5.恒温槽の温度を変更

3から5を繰り返して、PICマイコンで恒温槽内の温度測定をします。

6.温度測定結果

測定結果を下記、表にしました。

表1:温度センサーICの温度測定

①:恒温槽内温度 [℃]
市販の温度計
②:PICマイコン温度
(T_reg) [℃]*1
温度差(①ー②)
25.524.31.2
29.729.10.6
32.932.10.8
35.134.50.6
40.239.50.7
48.747.90.8
50.249.50.7
54.854.10.7
58.358.5-0.2
60.159.90.2

*1:T_regの値は、小数点第2位を四捨五入しています。

上記、表からグラフ作成。
近似直線を作成して恒温槽温度30℃のマイコン温度測定を算出します。

図9:恒温槽温度対マイコン温度測定グラフ

上記、グラフの近似直線 y=1.0211x-1.5239 となりました。
x(恒温槽温度)= 30℃を代入⇒ y(マイコン温度測定)= 29.1℃ となります。

参考資料:温度センサーIC:LM61の仕様から温度誤差は、±3℃ですのでその範囲内となり、マイコン温度測定として問題ない結果だと判断します。

温度センサーIC30℃(AN0端子に900mV印加)のシミュレーションの実行については、ここを参照。

2.10秒タイマー値( TMR2_10sec_flg = “0” ⇒ “1” )10秒測定

プログラムが実行している場合は、”Pause”を選択して、プログラム実行を停止させます。

シミュレーションによる時間測定方法の詳細は、投稿名:”PICマイコンのソフト支援ツール”MPLAB X IDE”のシミュレーションの紹介とプログラム検証”の”10秒タイマー検証”項を参照のこと。

1.時間測定のために、”Stopwatch”機能を起動

[Window]⇒[Debugging]⇒[Stopwatch]を選択、Stopwatchウインドウが画面の右側に表示します。下記図を参照。

図10:”Stopwatch”起動

図11:”Stopwatch”ウインドウ

2.2つの”Break point”の設定

2-1:1番目のbreak pointをmain.cの”TMR_10sec_flag=0”実行後の次の83行に設定(下記、図12:main.c 83行にブレイクポイント設定を参照)。83行で、マウス左側ボタンクリック。本行が、”赤色四角”となります。

図12:main.c 83行にブレイクポイント設定

2-2:2番目のbreak pointをtmr2.cの”TMR_10sec_flag=1”実行後の次の146行に設定。(上記、図13:tmr2.c 146行にブレイクポイント設定参照)146行で、マウス左側ボタンクリック。本行が、”赤色四角”となります。

図13:tmr2.c 146行にブレイクポイント設定

3.Stopwatchのプロパティを設定

3-1:下記図の赤枠[properties]を選択して、”Start Condition”と”Stop Condition”を選択します。
3-2:Start Condition:main.cの”TMR_10sec_flag=0”実行の次の83行を指定
3-3:Stop Condition:tmr2.cの”TMR_10sec_flag=1”実行の次の146行を指定
3-4:”OK”を選択

図14:StopwatchのProperties選択

図15:StopwatchのProperties設定

3-5:下記表示が有る場合は、”OK”を選択

図16:Stopwatchのワーニング

4.継続して実行

図17:Continueのアイコン

4-1:上図、[Continue]を選択

main.c

図18:1回目のブレイク

4-2:”TMR2_10sec_flg=0″後、サイクルカウント クリア”Target halted. Stopwatch cycle count=0″を表示

4-3:上図、[Continue]を選択して、続いて実行

tmr2.c

図19:”Target halted.Stopwatch cycle count”表示

4-4:”TMR2_10sec_flg=1″後、サイクルカウント
”Target halted. Stopwatch cycle count=39957060″を表示

5.TMR2_10sec_flg=”0”⇒”1”の時間を計算

マイコンへのクロック入力:16MHz、命令クロック:4MHz(1サイクル:0.25us)となります。
実機検証の時間
39,957,060 サイクル × 0.25us=9.989265秒

TMR2_10sec_flg=”0”⇒”1”の時間は、9.989265秒でした。

”MPLAB X IDE”のシミュレーションと比較

本実機検証の10秒カントと同じプログラムを”MPLAB X IDE”のシミュレーションで検証した時の、TMR2_10sec_flg=”0”⇒”1”のサイクル数と時間を表示します。
本プログラムのシミュレーションについては、ここを参照

表2:10秒タイマーの比較

検証方法TMR2_10sec_flg=”0”⇒”1”の時間 [秒]
PICkit4を接続した実機検証
(”MPLAB X IDE”環境使用)
9.989265秒(39,957,060 サイクル)
”MPLAB X IDE”のシミュレーション
(実機無し)
10.000015秒(40,000,061サイクル)

上記、タイマー時間の総括

実機検証とシミュレーションで、同じフラグの切り替わりを測定したにもかかわらず、カウントされてサイクル数に43,001サイクル( 40,000,061サイクル-39,957,060 サイクル 。時間にして約0.1%強 )の差が出たのは、プログラムのバグで無く、「実機検証という物理的な制限がある環境」と「シミュレーションという理想環境」の間に生じる、極めて正常な仕様の差と判断します。(10秒は、マイコンの計算としては大きな値です。カウント数が大きなればこの差は、一層顕著となる傾向があります。)

コメント