« 熱電対によるヒーター制御:温度測定と設定部の実装完成 | トップページ | 熱電対によるヒーター制御:まずまずのPID制御。ソースの公開 »

2011年11月25日 (金)

熱電対によるヒーター制御:比例(P)制御だけで十分か

電源とAC制御部の制作(11/16/2011)
 熱電対を使ったヒーターの温度制御は、SSR(ソリッドステートリレー)によるAC制御部とマイコンの電源を、ケースの都合で温度表示・設定部と別にすることにしていた。ところがあらためて調べてみると手持ちのケースの中に、電源部などが入る適当な大きさのものが見つからない。

 結局、何か買ってこなければならなくなった。何だ、それなら最初から両方が入るケースを買えばよかったのだ。やっぱり思いつきで工作はするものではない。ケースが2つになってしまう。効率が悪い。

 久しぶりに秋葉原に出て、千石で適当なケースを探す。温度表示・設定部のテイシン(TB-65B)と同じメーカーのTB-73(60×90×29 ¥220)にした。こちらの方が新しいシリーズらしく、固定したままケースをはずすことができるように改良されている(前のはケースを開けるのに、固定板をとりはずす必要がある)。

S_pb184378 ただ、前に較べるとちょっと背が低い(高さ29mm)。SSRに手持ちのヒートシンクをつけたので入るかどうか心配だ。ヒーターは300Wくらいだが、連続通電はまずしない。ヒートシンク無し(2Aまで)でも大丈夫だとは思うが、念のためつけてある。これで連続400Wくらいまで大丈夫なはずだ。しかし、ヒートシンクの高さは出先なので、その高さがわからない。

 秋月で、手持ちのものよりもう少し小さい(と思う)シンクを念のため買った。家に帰って確かめる。おお、うまいぞピッタリか、いや、このヒートシンク(高さ18mm)でもSSRのキットをそのまま基板の上に載せると入らない。うーむ、どうすれば良いか。そうか、キットの配線をベース基板に移せばそれだけ低くなり、このケースに入りそうだ。

 いや待てよ。トライアックだけベース基板に移せば、キットの基板配線をそのまま使える。リード線でトライアックを主基板に移す。ちまちました作業だが、少しでも合理的な工作が出来ると嬉しいものである。はたからみれば、何のことで一喜一憂しているのだといぶかれるだろうが、自分の知恵で課題が解決するというのが快感なのだ。

S_pb184382 ソフト開発の方は、だいぶ前にon/off制御のステートメントを入れ、テストが済んでいる。単に1秒ごとに、温度が設定より高くなればoff、下がればonになるという滅法簡単なロジックをいれただけだ。もちろん、あとで、PWMなどで比例制御をやるつもりだが、これはあくまでもテスト用である(これでうまくいけばという下心もある)。

 工作を続行する。マイコンの5V電源は、このあいだLAN電源制御コントローラーで壊れたACアダプターを分解してセットする。あのあとパンクしたコンデンサーを取り替え、割れたケースを接着して使えるようにしていた。資源の徹底活用である。

 ここの自慢は、このアダプター基板の固定だ。外側のモールドを、サーキュラーソーで4ミリ程度に輪切りにし、これを基板に接着した。ちょうどモールドには基板を固定する爪がついており、これを生かしたのでちょうどピッタリ固定される(最終的にはホットボンドで固定)。

 いやいや好調である。「俺は天才ではなかろうか」などとうそぶきながら、機嫌よく工作を進める(単にケチなだけだが)。ACコード(何でAC用はどれもこんなに太いのか)のハンダ付けが少々面倒だったが、キットを組み合わせるだけである。大した手間もかからずAC制御と電源の配線は終了した。

 むしろ外回りのAC線の引き回しが厄介だった。ACをいきなりon/off制御をするのは、何となく怖いので、最初は調光器を経由してやろうと考えている。これから予定している比例制御(P制御)の感触をつかむためもある。 

 しかし、そのままつなぐとマイコン電源アダプターに調光器で落とされた電圧がかかってしまいまずい。はじめは、ハンダ付けか何かで制御部と、電源部のAC入力を仮にわけようと考えていたが、AC制御部の出力のピン差込端子(車の電装用と思われる)に、ピン差込端子を経由してアウトレット(ACコンセント)を用意すれば、調光器をヒーターだけにかけられることに気づいた。こうしておけば、仮配線はしないですむ。早速、余ったピン差込端子を使ってこしらえる。

S_pb224399 ピン差込端子は、もしかするとAC配線用ではないかもしれない。しかし振動の激しい車で何十アンペアという大電流に耐えられる端子である。全く大丈夫と判断している。もちろん自己責任である。アクリル曲げ器を動かしたまま、家を留守にすることはあり得ないし。

 熱電対がニクロム線に触れぬようガラス繊維チューブを切って細いキャップを作り、接合点に被せ、アクリル曲げ器のニクロム線のコイルの中に差し込む。バラックも良いところだが、とりあえずヒーターの温度制御の実験環境はととのった。

on/off制御では温度差が激しすぎる(11/18/2011)
 いよいよ、AC電源を入れたテストである。始めは怖いので、ヒーターではなくスタンドの白熱灯を負荷にする。勇気を出して電源部のACコードを差し込む。緊張の一瞬だ。よし、温度測定・設定部の7セグLEDが点いた。正常に5Vは供給された。しかし電灯は点かない

 う、温度設定はONのはず(設定温度が現在温度より高い)なのにおかしい。慌てて電源を切る。スタンドを確かめる。はっはっは、スタンドのスイッチが入っていなかった。スイッチを入れて再度通電。おめでとうございます。スタンドのクリプトン電球が点灯した。S_pb224396

 設定温度を下げれば電球は消える。リレーではないので全く音はしない。たいした回路でもないが、すべての部品がちゃんと機能して、思い通りに動いてくれているのを見ることは無性に嬉しい。子供のようにロータリーエンコーダーをぐりぐり回し、点けたり消したりして暫く遊ぶ。

 さあ、次は本番のヒーター制御のテストである。温度推移を記録するため、UARTを復活させ、ケースから出してISPケーブルをつけ測定に入る。ふむ、ISPピンを外に出しておかないと不便だな。また穴あけをしなければ。10秒ごとに温度をUARTに出力させてグラフを作る。

Photo 結果はグラフを見てもらった方が早い。最初のグラフの山は、調光器を入れて設定温度を100℃にしたときのカーブである。調光器のセットは、以前連続で150℃近辺になるよう調整した電圧である(テスター見るとRMS40Vくらい)。オーバーシュートもほとんどなく、温度の差は20℃内外で、on/off制御でも、まあまあの性能である。

 一方、次の大きなカーブは、調光器なしに直接100Vをon/offした結果である。生の100Vでは250Wのニクロム線でも(例のCT電力センサーで測った)、温度は一気に上がり、100℃に設定しても、温度の慣性が高い(というより熱電対と発熱源が離れすぎているのだろう)ので、電源がoffになってからも200℃近くまで上昇し、そのあとも激しく温度変化を繰り返すことがわかる。

 調光器で加減すれば、20℃内外の温度差で落ち着くが、設定温度を変える度に、調光器で調整する必要がある。まあ、アクリル曲げ器くらいなら問題ないだろうけれど、これでは自動制御とは言えないだろう。完成度が低すぎる。もう少し手を入れてやる必要がある。

 温度が測れるので、色々試してみた。調光器による温度設定は、加減すれば一定の温度にとどまり、うまくやれば安定した温度が得られることがわかった。負荷をかければもちろん駄目だが、アクリルの曲げるところを当てるくらいでは余り影響がないだろう。もうひとつのグラフは、この安定した温度が得られる様子を示している。温度が安定する度に調光器のボリュームを上げて温度を段階的に上げている。

Photo_2

 さあ、これに負けない制御にしなければならない。なるべく単純なロジックで最大の効果が出るしかけを作りたい。あれこれ考えをめぐらす。紙にメモをとりながら可能性を探る。電子工作の醍醐味のひとつである。

しゃれた二次曲線の比例制御ではうまくいかない(11/21/2011)
 とはいえ、on/off制御の次にやるべきは、やはり定番の比例制御である。設定温度との差に応じてヒーターにかける電力を上下させる。今度の温度制御は、アクセル(ヒーター)だけで、ブレーキ(強制冷却など)のようなマイナス方向の制御はしないので、精密な制御はもともと無理でするつもりもない。

 電力の制御は、秋月のSSRキットである。本来は、on/off用だが、このSSRはゼロクロス制御機能を持ったフォトトライアックを使っているので、電源周波数(50Hz)分50段階の電力制御が可能だ(正確には半サイクルごとの100段階まで、長周期にすればいくらでも多段階にできる)。

 お手本は、前記事に紹介した、このハンダごての温度コントローラーの記事である。全く同じキットを使われている。音、LEDなどの光と違ってヒーターという非常に時定数の大きい制御対象なので、この程度のゆるいスイッチングでも全く問題はない。

 ただ、問題は通常のマイコンのPWMにこんな低い周波数でPWMが出来るものがないことだ。しかし、マイコンの便利なところは、このあたりを気楽にタイマーの割り込みで作ってしまえるところだ。

 タイマーで、50Hzのタイミング、20msの割り込みを発生させ、割り込みの都度、制御係数を見て、適当なパルス幅を決めてやれば、1秒間隔(1Hz)の自作PWMが完成する。カウントは50で繰り返す。対象の周波数との同期をとる必要はない。少し遅れるがフォトトライアックの部分で同期する。

 比例制御の実行部分は、これで整った。次は、制御仕様の部分である。ウェブには色々な方法が紹介されているが、とりあえず、比例制御の部分を設定温度の1/2から始めることにする。それまでは全力(100%)でヒーターを加熱する。比例部分は、単なる直線では面白くないので、2次曲線で比例するように趣向をこらしてみた。時定数の大きい熱制御なので、最初は激しく、後半は慣性が効いて来るので小さく加熱というくらいのつもりである。

 難しいコーディングでもない。ただ、2次曲線で比例制御するために2乗の計算を整数でやるのは、ちょっと大変だった。16ビットではなく、32ビットの変数が必要である。桁あふれをしないよう、割り算で有効数字がなくなってしまわないよう、気を遣う。久しぶりに方程式を立てて制御係数が0から50になるようにする。

 手作り1秒PWMはオシロでうまく動くことを確認した。さあ、いよいよテストである。温度設定を100度にしてスイッチON。おお、順調に比例制御が出来ているようだ。UARTに刻々と比例制御の係数が出力され、温度の1/2から、PWMが効いてパルスが細くなっていく。

 ただ、最初の突っ込みは比例制御の範囲ではないので、猛烈な立ち上がりとなる。ヒーターと熱電対の間が離れているので、遅れが大きい。目標温度を感知した時は、既にこのパイプを倍の温度近くまで加熱する熱量を出した後だ(調光器を通さず、250Wの全電力がかかる)。比例制御は最初からやるべきか。

10

 おやあ、150℃の設定で140℃にしかならない。100℃でも10℃近い偏差が出て目標温度に達しない。二次曲線なので、目標温度付近の比例制御値は0に近く、この程度の加熱では、100℃以上の高温にならない。

 そうか、積分制御(I制御)というのは、こういうときのためなのか。段々わかってきたぞ。PID制御というのは徹底した実務的な制御なのだ。色々な系の状況を吸収して、合わないときは所定の目標値に強引に合わせるというのが、I制御なのだ。こうやって制御を実際に動かしてみると良く理解できる。

 感心していても、解決策は生まれない。PID制御まで行かないで、もう少し簡便な方法で制御ができるはずだ。やはり基本に戻って、普通の一次比例制御(直線制御)でやってみよう。

単純な比例制御と倍周波数のPWMで予想以上の成果(11/24/2011)
 直線制御にするついでに、制御段階をさらに細かくしてみることにする。交流なのでゼロクロスするところは1サイクルに2回ある。50段階ではなく、100段階のPWMが可能だ。

 割り込みの間隔を1/2にし、比例値を0~50でなく、0~100にする。今度の比例分を出すのは、さっき苦労して計算した2乗など必要ない。32ビット変数もいらないくらいだ。あっけなくロジックも出来た。

 勇躍、テストに入る。目標温度を150℃に決めてヒーターONする。よーし、今度は、比例制御を目標の1/2ではなく最初から比例するようにしたので、立ち上がりがおだやかになった。オーバーシュートも50℃以内におさまっている。良いぞ。

 比例制御を最初からやっているので高温の時は遅くなるかもしれないが、この程度のパイプを熱するだけなら全く問題ない。しかし、150℃の目標温度に近づかない。うーむ、一次比例でも駄目なのか。やっぱり積分制御が必要なのかなあ。

 どうしようかとオシロのPWM波形を見ていたとき、閃いた。目標温度に近づかないのは、失われていく熱に対して、供給する熱が少ないからである。この量を増やしてやれば良い。PWMの間隔を50Hzでなく倍にしてみてはどうだろうか。

P

 理論的には、比例制御の勾配を倍にし、1/2のところから比例制御するのと同じだが、まあ、だめもとでPWMの間隔を半分にしてみる。ビンゴ!であった。150℃はもちろん、100℃、50℃でも±10℃の間でピッタリ納まった。立ち上がりこそ、最初が全力で立ち上がるのでオーバーシュートが100℃以上になるが、それ以外はもう文句のつけようのない制御である。いやあ、比例制御だけで十分か。

S_pb224393

 このアクリル曲げ器のニクロム線(250W)とアルミパイプなどの機器の熱容量にだけに通用する制御だけれど、比例制御だけで、こんなに安定して温度が制御できるとは思っていなかった。30℃や40℃の設定でも結構OKである。余裕が出来たので、CT電流センサーの出力をオシロに入れ、SSRの制御波形を観測してみた。50Hzの波形が見事に、立ち上がりからスタートしているのがわかる。AC制御・電源部のケースも完成した。電源がONのときは赤LEDが点灯してパイロットランプ代わりになっている。

S_pb224392

 お約束の回路図とソースコードを公開することにする。電源部とSSRは既製品とキットの活用である。ソースコードは今後、(I)(D)制御を加える予定なので、あくまでも途中経過のコードであることをおことわりしておく(エラー表示も未実装)。また当然のことであるが、回路図、ソースコードとも全くの無保証であるのでそのつもりでご利用頂きたい。

S_pb244405

以下に例によってAVRStudioのフォルダーでかためたソースコード一式を置きます。回路図ファイル(bsch3V)も入っています。ソースコードは、参考のために、あえて試行錯誤の後をコメントアウトで残してあります。

「ThrmCpl861.zip」をダウンロード

Thermocouple_3

 

|

« 熱電対によるヒーター制御:温度測定と設定部の実装完成 | トップページ | 熱電対によるヒーター制御:まずまずのPID制御。ソースの公開 »

AVR」カテゴリの記事

電子工作」カテゴリの記事

コメント

ヒーター制御は、温度が目標温度より上がってしまうと、制御できなくなるので、その辺の工夫が難しいですね。PID制御は我流でやっています。参考情報が少ないです。

コツと云うなら、センサーをなるべく発熱源に近づけることでしょうか。離れていると遅れ時間が長くなりすぎ、PID制御でもハンチング(振動)がなかなかとれない。ここも奥が深いです。

私のような200℃近いところと、すんさんの恒温槽のような温度帯とでは、制御のやり方は大きく変わると思いますが、ご健闘を祈ります。

投稿: がた老 | 2011年12月 3日 (土) 14時13分

ヒーター制御動きだしましたね。
うちのミニミニ恒温BOXで参考にさせてもらう予定です。
比例制御だけでもよさそうな感じですか。
PIDは係数を決めるのが大変らしいので試行錯誤ですね。
うちのは、PI制御でやるつもりです。

投稿: すん | 2011年12月 2日 (金) 14時52分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1089557/43134463

この記事へのトラックバック一覧です: 熱電対によるヒーター制御:比例(P)制御だけで十分か:

« 熱電対によるヒーター制御:温度測定と設定部の実装完成 | トップページ | 熱電対によるヒーター制御:まずまずのPID制御。ソースの公開 »