60歳からの電子工作ノート

生涯学習として取り組んでいます。

ペルチェ制御用ボードの試作(PID制御のプログラム)

コントローラ(ペルチェ制御用ボード)モニタ用のパソコン側アプリとコントローラ側のプログラムです。

 


パソコン側の処理

測定値(PV)のモニタ、PIDパラメータの設定を行います。また収集したトレンドデータを保存し、履歴データとして読み出します。

画面

f:id:vABC:20220214151703p:plain

図1.  モニタ画面

f:id:vABC:20220214151901p:plain

図2. 履歴画面

 

f:id:vABC:20220214152028p:plain

図3.  パラメータ設定用ウィンドウ

 

f:id:vABC:20220214152231p:plain

図4. 履歴データファイル

操作

・モニタ画面の操作
「Serial Port」ボタンにより通信ポートをオープンします。
「Start」ボタンによりモニタコマンドを2秒毎に送信します。
「Para」ボタンによりパラメータ用の設定ウィンドウが開きます。
「Stop/Run」,「Auto/Manual」ボタンにより動作モードを変更します。
「MV Write」ボタンにより操作量(MV)を変更します。(RUN-Manualモードで有効です。)
「Save」ボタンにより収集したデータをファイルに保存します。(CSV形式)
「Clear」ボタンにより収集データを一度クリアします。(データの収集は現時刻から開始しメモリ上に保持します。)
History」ボタンにより「履歴画面」に移ります。

・パラメータ設定ウィドウの操作

「Write」ボタンにより、選択したパラメータ(SV等)の値をコントローラ側へ書き込みます。(パラメータはRAM上に書き込まれます。コントローラの電源OFFで0にクリアされます。)

・履歴画面の操作

「Open」ボタンにより保存済みのファイルを読み出します。

「Monitor」ボタンにより「モニタ画面」に移ります。

プログラム

画面はTabItemとしています。画面移動用のボタンでTabItem名を選択し、画面遷移を行います。

f:id:vABC:20220214154137p:plain

図5.  Tabを利用した画面遷移

GitHubへの登録(xaml,csと CSV)

https://github.com/vABCWork/WPF-PID

 

マイコン側の処理

制御演算は200[msec]毎に行い出力を更新します。

f:id:vABC:20220214155016p:plain

図6.  制御タイミングと処理


動作モード

STOP/RUN、Auto/Manualモードがあります。

STOPモードでは、出力(操作量 MV)は0%となります。

RUNモードでManualの場合、制御演算せずに通信等で設定した値が出力されます。

RUNモードでAutoの場合、P(比例帯)≠0でPID演算を行います。

P(比例帯)=0の場合はON/OFF制御となります。

f:id:vABC:20220214160347p:plain

図7.  動作モード

加熱制御と冷却制御

加熱制御は高い温度の目標値(SV)に近づくと、操作量(MV)は減少します。「逆動作」と呼ばれています。

f:id:vABC:20220214160617p:plain

図8.  加熱制御(逆動作)

冷却制御は低い温度の目標値(SV)に近づくと、操作量(MV)は減少します。「正動作」と呼ばれています。

f:id:vABC:20220214161526p:plain

図9.  冷却制御(正動作)

ON/OFF動作

 出力は測定値(PV)が目標値(SV)に到達するまでONで、目標値(SV)に到達するとOFFとなります。測定値が目標値の近辺で変動するとON/OFFが頻繁に発生するため、これを避けるためにヒステリシス(不感帯)を設けています。

・加熱制御(逆動作)の例

測定値(PV)=18℃、目標値(SV)=20℃、 ヒステリシス(Hys)=1℃の場合、

18℃から20℃に向かって、出力はON(100%出力) ---①

20℃に到達すると、出力はOFF(0%出力)。 ---②

出力OFFで温度低下。

20℃ですぐにONせずに、ヒステリシス分下がってから19℃で出力ON。 ---③ 

f:id:vABC:20220215084256p:plain

図 10.  ON-OFF動作(加熱制御)

・冷却制御(正動作)の例

測定値(PV)=10℃、目標値(SV)=8℃、 ヒステリシス(Hys)=1℃の場合、

10℃から、8℃に向かって、出力はON(100%出力) ---①

8℃に到達すると、出力はOFF(0%出力)。 ---②

出力OFFで温度上昇。
8℃ですぐにONせず、ヒステリシス分上がってから9℃で出力ON。 ---③ 

f:id:vABC:20220215093749p:plain

図11. ON-OFF動作(冷却制御)

f:id:vABC:20220215112026p:plain

図12  ON-OFF動作フロー

PID演算

 PIDの計算法には位置型と速度型があります。(資料1*1より)

位置型(Position type)は全値出力型(whole value output type)とも呼ばれ制御周期毎に全体の出力を計算します。例えばP動作の場合、MVn= Kp x en となります。

速度型(Velocity type)はインクリメンタル型(Incremental type)とも呼ばれ制御周期毎に変化分(差分)を計算します。例えばP動作は、Kp x (en - en1 )と計算します。

速度型で計算した後、出力を出す際に1制御周期前の出力(MVn1)を加算します。

MVn = Kp(en – en1 ) + MVn1

このコントローラでは位置型で演算しています。
このため、ManualモードからAutoモードに変更した場合、Manualモードで設定した操作量(MV)が、AutoモードでのPID演算に引き継がれません。例えばManualモードで80[%]の出力を出し、PVがSPの近くまで到達した状態で、Autoモードにすると、操作量(MV)はほぼ0[%]となります。 (P動作、Mr量=0の場合)。出力の「バンプレス切り替え」にはなりません。

f:id:vABC:20220215110642p:plain

図13. PID演算(位置型)

f:id:vABC:20220215112328p:plain

図14. PID演算フロー



全体フロー

f:id:vABC:20220215112453p:plain

図15. メインフロー


出力

 加熱側の出力(HEAT_MV)と冷却側の出力(COOL_MV)は、モータドライバIC (BD6211F)により行います。FIN=Low,RIN=Highで、電流はOUT2からOUT1へ流れペルチェモジュールを付けた容器は加熱されます。FIN=High,RIN=Lowで、電流はOUT1からOUT2へ流れ、容器は冷却されます。

f:id:vABC:20220215114233p:plain

図16 . 出力用モータドライバIC

操作量MV(0~100%)は資料2 *2の「22. マルチファンクションタイマパルスユニット2 (MTU2a)」「22.3.5 PWM モード」 により行います。1周期を200msecとし、周期内のON時間とOFF時間を変化させて、操作量MV(0~100%)とします。
MV=50%ならば、100msec ON, 100msec OFFとなります。

マルチファンクションタイマパルスユニット2 (MTU2a)のMTU3を冷却側出力用に、MTU4を加熱側出力用に使用しています。

f:id:vABC:20220215125856p:plain

図17. PWM出力に使用するMTU

・動作

カウント用クロックでTCNTの値がインクリメントされます。

TCNT=TGRBで出力をHigh。TCNT=TGRAで出力をLowとして、TCNTをクリアします。

f:id:vABC:20220215130621p:plain

図18. MTUの動作

f:id:vABC:20220215131004p:plain

図19. コンペアマッチによるPWM出力

f:id:vABC:20220215131205p:plain

図20. MTUのレジスタ設定

f:id:vABC:20220215131303p:plain

図21. PWM出力のフロー

コマンド

パソコンから送信されたコマンドにより、マイコンはコマンドに対応した処理を行い、レスポンスを返します。

f:id:vABC:20220215151732p:plain

図22. モニタコマンドとレスポンス

f:id:vABC:20220215154351p:plain

図23. パラメータ書き込みコマンドとレスポンス

f:id:vABC:20220215154539p:plain

図24. モード変更コマンドとレスポンス

f:id:vABC:20220215154658p:plain

図25. 操作量(MV)変更コマンドとレスポンス

ファイル一覧

f:id:vABC:20220215155502p:plain

図26. ファイル一覧

GitHubへの登録

https://github.com/vABCWork/pid

(登録ファイル: test1n.c, sci.c, sci.h, pid.c, pid.h, mtu.c, mtu.h)

 

*1:資料1「シュミレーションで学ぶ自動制御技術入門」 CQ 出版社

*2:資料2「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0110 Rev.1.10) 」