Heating controllerプログラムの使い方
作成者 向井孝三
作成日 2023年8月22日
※加熱プログラムの備忘録としてのWebページです。
※使われる方は自己責任でお願います。
Pythonで作成したPID制御による加熱プログラム「Heating_controller.py」の使い方を説明する。
「Heating_controller.py」はこちらを右クリックしてダウンロードして下さい。
電子衝撃加熱法による加熱を行うため、フィラメント用にキクスイ製直流電源PMX18-5Aを、
熱電対測定用にADVANTEST製デジタルボルトメーターTR2114H+GPIBボード+GPIB-USB変換ケーブル(NI製GPIB-USB-HS)を使用した。
1 ソフトウェアのインストール
Windows 10 PCに必要なソフトウェアをインストールする。インストール作業は一度だけでいいです。
すでにインストールしている場合は、この項は飛ばして下さい。
NIのWebからドライバ類をインストールするが、インストール前に、Windows高速スタートアップを無効にする(詳しくはNIのwebを参照)。
VISA対応機器を使うので、NI-VISAを
NIのwebからインストールする。
GPIB機器を使うので、GPIBドライバーNI-488.2も
NIのwebからインストールする。
NI-488.2をインストールするとNI MAXアプリも同時にインストールされます。
GPIBデバイスを使用するときは、NI MAXアプリでPCにGPIBデバイスを登録する(登録するのは一度だけです。詳しくはNIのwebを参照)。
Pythonをwebからダウンロードしインストールする。
インストールする時に「Add python.exe to PATH」にチェックを入れること!
Pythonをインストールしたら、コマンドプロンプトやPowerShellなどを使って、Pythonの外部モジュールをインストールする。
PythonでVISA機器を制御するためのモジュールのインストールは、
pip install pyvisa
を実行する。
グラフを作成するためのモジュールのインストールは、
pip install matplotlib
を実行する。
Pythonの外部モジュールのインストールは上記のように「pip」コマンドを使って同様に行うことができる。
「Heating_controller.py」を適当なフォルダにコピーする。同じフォルダに「log」フォルダを作成する。
2 使い方
「Heating_controller.py」をダブルクリックで開く。
コマンドプロンプトとHeating_controller GUIアプリが起動する。
コマンドプロンプトは閉じなくてよい。
温度計測用デジボルと直流電源の電源を入れる。
「Find」ボタンをクリックする。
「Thermometer」タブをクリックして、温度計測用デジボルのVISAアドレスを選択する。
「DC power supply」タブをクリックして、直流電源のVISAアドレスを選択する。
*VISAアドレスが分からない場合、温度計測用デジボルと直流電源の電源を両方入れるのではなく、
片方の電源のみ入れて、「Find」ボタンを押すとVISAアドレスは一つしか出ないので電源が入っている方のVISAアドレスが分かります。
デフォルト値を変更する場合は、各値を入力する。
*「5 このプログラムでの昇温方法」も参考にして下さい。
「Current upper limit」:電流の最大値(A)を入力。
「Current lower limit」:電流の最小値(A)を入力。
「Final temperature」:目的の温度(K)。
「Start temperature」:Target temperatureの開始温度。開始時の実際の温度よりも30K程度低い値に設定する。
「Heating rate」:昇温速度(K/s)。
「Proportional」:PID制御のP係数。
「Integral」:PID制御のI係数。
「Derivative」:PID制御のD係数。
「Subject」:メモ。
「Final temperature」横の「Set」ボタンをクリックする。
「Start」ボタンをクリックすると昇温を始める。温度と直流電源の電力のグラフが表示される。同時に下の各値が表示される。
「Current temperature」:現在の温度(K)。グラフ内では赤線。
「Target temperature」:昇温速度で計算された温度(K)。グラフ内では黒線。
「Current」:直流電源の電流値(A)。
「Voltage」:直流電源の電圧値(V)。
「Power」:直流電源の電力(W)。
加熱時のデータは、ファイル名「年月日_時分秒.txt」でlogフォルダに保存される。
また、ファイル名はGUIアプリのタイトルバーに表示される。
「Current temperature」が「Final temperature」に到達したら「Stop」ボタンをクリックして加熱を止める。
*加熱途中で止めたい場合、「Stop」ボタンをクリックすれば止まります。
「Stop」ボタンをクリック後、直流電源の電流が0まで下がり、電源がリモートからローカルに切り替わる。
同時に、温度と電力のグラフは閉じる。
続けて昇温したいときは、GUIアプリを終了しなくても使えます。
GUIアプリを終了するときは、「Exit」ボタンをクリックする。
*終了後にコマンドプロンプトにメッセージが出ることがありますが、コマンドプロンプトは閉じて下さい。
3 保存ファイルの中身
保存ファイルには次のデータが保存されます。
ヘッダー部分。ここに書き込まれるのは、開始時の値です。
「Subject」:Subjectに入力した文字
「Thermometer」:温度計測用デジボルのVISAアドレス
「DC power supply」:直流電源のVISAアドレス
「Current upper limit」:電流の最大値(A)
「Current lower limit」:電流の最小値(A)
「Final temperature」:目的の温度(K)
「Start temperature」:Target temperatureの開始温度(K)
「Heating rate」:昇温速度(K/s)
「Proportional」:PID制御のP係数
「Integral」:PID制御のI係数
「Derivative」:PID制御のD係数
データ部分
「Time_」列:日時。月/日/年 時刻 で表示
「ElapsedTime_」列:経過時間(s)
「Temperature」列:デジボルで計測した温度(K)
「Target_temperature」列:Target temperatureの値(K)
「Current」列:直流電源の電流値(A)
「Voltage」列:直流電源の電圧値(V)
「DC_power」列:直流電源の電力値(W)
4 昇温・降温設定の変更方法
TPD (Temperature Programed Desorption, 昇温脱離法)用の昇温プログラムとして作成したものですが、
「Final temperature」に到達後、ここの入力値を変更し「Set」ボタンをクリックすると、
新たな「Final temperature」になるように昇温あるいは降温することができる。
昇温・降温速度も「Heating rate」の入力ボックスで変更できる。
注意! 「Heating rate」の入力ボックスに何も値がないとエラーが出るので、
書き換える時は旧い値を選択状態にし、新しい値を入力すること。
5 このプログラムでの昇温方法
(1)昇温を開始するとフィラメントには「Current lower limit」で設定した電流が最初から流れます。
この電流値は、試料温度が上がらない値に設定します。
(2)「Target temperature」が開始時の試料温度の10K以内になると電流をさらに流し始めます。
「Current lower limit」からの電流の増加分は、プログラム中の「addCurr」の値で決定します。
デフォルトでは0.5Aですが、必要に応じてこの値を書き換えて下さい。
また、電流増加を開始する温度はプログラム中の「T_addCurr」の値で決定します。
「Target temperature」が開始時の試料温度の「T_addCurr」K以内になると電流をさらに流し始めます。
デフォルトでは10Kですが、必要に応じてこの値を書き換えて下さい。
(3) 「Target temperature」が開始時の試料温度以上になるとPID制御に移行します。
PID制御
Derivation_0を現在の試料温度とTarget temperatureの差とします。
Derivation_0 = Target temperature - 現在の試料温度
一個前の測定時の差をDerivation_1とします。PIDの係数をKp, Ki, Kdとすると
電流値 = 最小電流値 + Kp * Derivation_0 + Ki * Integral + Kd * ((Derivation_0-Derivation_1)/ΔTime)
とした。ここで、
Integral = ΣDerivation_0 * ΔTime:Derivation_0 と ΔTimeの積の積算値
ΔTime:一個前の測定からの経過時間
6 その他
VISA対応機器は、使用するデバイスによってコマンドが異なります。
マニュアル等でコマンドを確認し、プログラムを書き換えて下さい。
GUIアプリを起動する度に入力ボックスに値を入力するのが煩わしい場合、プログラムを少し書き換えることで自動入力できます。
「#入力ボックスのデフォルト値」と書かれた行の次の行からデフォルト値の数字を記入して下さい。
保存先のフォルダは、「saveFolder = “log”」と書かれた””で挟まれた部分(デフォルトでは「log」)を保存先フォルダに書き換えることで変更可能です。