温度コントローラ(PID制御)

 MAX31855 K型熱電対温度センサモジュール(高耐熱熱電対付)(ストロベリーリナックス)、大容量ソリッドステートリレー(SSR) 40A(秋月電子通商)、PIC32MX270F256B-50I/SP(秋月電子通商)を用いて、PID制御の温度コントローラを試作しました。温度コントローラの操作は、USB-CDC経由でパーソナル・コンピュータ(PC)から行います。なお、センサとPIC間のインターフェースはSPIです。


PIC32MX270F256B-50I/SP 回路

  回路図と実際の回路を以下に示します。回路図中右上のHEATERと書いた部分には家庭用スチームアイロンを用いています。また、温度を計測するためのアルメル・クロメル熱電対の先はスチームアイロンのスチーム穴に差し込んでいます。

 なお、K型熱電対温度センサモジュールの+端子とー端子に温度差ができないようにします。温度差ができると、両端子間に起電力が新たに生じますので、測定誤差につながります(室温補正が施されていても)。例えば、回路全体を1つのケースに入れない方が良いと思います。リレーやPICが熱源になるので、ケース内で空気の対流が起こり、+端子とー端子に温度差が生じる可能性があるからです。モジュールだけは、ケースの外に出すなどの考慮が必要と考えます。

ここをクリックすると拡大した回路図が現れます。


使用法

1.PIC32MX270F256B-50I/SP (HARMONY)の章の項目「MHC環境」に書かれているようにMHC環境を整えます。

2.PICに書き込むファームウェアはMX270_PWM_PID_CDC.zipです。このファームウェアは、Harmony3\usb_apps_device\apps\cdc_com_port_singleを手直しし、それに、MAX31855 K型熱電対温度センサモジュールからデータを受信するためのコード(SPI規格)、大容量ソリッドステートリレーをPWMで操作するためのコード、そしてPID制御のためのコードを付け加えたものです(app.cとpid.c)。MX270_PWM_PID_CDC.zipを解凍して出てくるMX270_PWM_PID_CDCフォルダーをHarmonyProjectsフォルダーの中に入れます。なお、このファームウェアのPID制御部分は、小坂井宏文氏のWebsiteの温度制御3 (PID動作)に紹介されているものを使用しました(少しだけ手直ししています)。

3.PIC基板に電源(5V)と熱電対を接続し、それをPCにUSBケーブルで接続します。そして、ファームウェアをPICに書き込みます(PIC基板がCDC機器になります)。

4.Windows10(21H2)では、CDC用標準デバイスドライバ(Usbser.sys)を使用するようです。つまり、PIC基板とPCをUSBケーブルで接続すると自動的にこのドライバーが組み込まれまれるようです(別途ドライバーを組み込む必要がない)。

5.PC用のアプリケーション・ソフトウェアはk_thermo_pid.zipです。これを解凍すると出てくるk_thermo_pid.exeをPC上で実行します。温度の時間変化を表示できます。以下の2つの図は、その例です。これらの図に示した測定では、比例帯を10℃、積分時間を20秒、微分時間を10秒に固定しており、目標温度を50℃、100℃、150℃、200℃と変えています。また、最大出力電圧(以下に説明する)を、50℃、100℃、150℃、200℃のとき、それぞれ3V、7V、11V、16Vとしています。測定温度は目標温度±1℃以内で安定しています。なお、このソフトウェアでは、iPentec Websiteの[C#] マルチメディアタイマーを利用する - マルチメディアタイマーコンポーネントの作成に紹介されているマルチメディア・タイマーを使用しています。

温度上昇時:

温度降下時:

6.PC用のアプリケーション・ソフトウェアのメニュー項目の説明です。

 PID設定:PIDの各数値を設定します。設定された値は、PICのNVM(Non Volatile Memory:フラッシュメモリ)に記憶させていますので、PIC回路の電源を切っても保持されています。

 表示温度範囲:グラフの縦軸の上限と下限を設定します。例えば、上図では上限を220℃とし下限を20℃としています。

 最大出力電圧設定:スチームアイロンに掛ける最大電圧(上に載せた「実際の回路」の写真のACソケットから出力される最大電圧)を設定します。比例帯だけを考えるとき、スチームアイロンの温度(測定温度)が目標温度になったときに、スチームアイロンに掛かる電圧が最大電圧の50%となることが理想とされています。小坂井宏文氏のファームウェアでは、0%ですので(操作量が負の時、出力電圧を強制的にゼロにしている)、温度上昇時は問題ないのですが、温度降下時に低温側にオーバーシュートしてしまいます。なお、最大出力電圧は、温度の時間変化を観察しながら試行錯誤で決めます。初めは、最大出力電圧を低めに設定すると良いでしょう。

 温度設定:スチームアイロンの目標温度を設定します。言い換えれば、スチームアイロンの温度を何℃にするかという設定です。小数点は入力できませんので、例えば10.00と打ち込むと1000を打ち込むことになりますので、十分気を付けてください。ソフトウェアを手直しして、設定可能最高温度を設定すると良いでしょう。

 測定開始:温度測定の開始と停止を行います。このメニュー項目をマウスでクリックするたびに、測定開始と測定停止が入れ替わります。

7.注意事項:出力電圧の分解能は1V

 スチームアイロンに掛かる電圧(上に載せた「実際の回路」の写真のACソケットから出力される電圧)の分解能は1Vです。PWMの値を変えて、スチームアイロンに掛かる電圧を変えています。電圧を更新する間隔(サイクル時間)は1秒と設定しています。一方、ソリッドステートリレー(SSR)はゼロクロス動作です。商用電源の周波数が50Hzの場合、1秒間に100回だけゼロ・ボルトになり、そこでしかリレーのON、OFFができません。したがって、PWMの値は100段階以上に設定しても意味がありません。つまり、スチームアイロンに掛ける電圧の分解能は、100V/100=1Vとなります。60Hzですと、もう少しだけ分解能は良くなります。


戻る