恒温槽 - 温度を一定に保つアルゴリズム - 2
前記事で断熱容器内の温度変化を簡単な(雑な?)モデルでシミュレートしたところ意外と現実の温度変化と同じようなものが得られることがわかりましたので、今度は断熱容器内の温度を一定に保つためにはどうしたらいいかを考えます。
なお温度制御に一般的に用いられるのは“PID制御”と言われるもので、ここで考えている方法はそれとはアプローチが違います。PID制御についてはいろいろ資料があるのですが一つ紹介しておきます。
「アズビル - やさしい自動制御のお話 - 第四章 PID制御について」
========
「恒温槽 - 温度を一定に保つアルゴリズム - 1」に書いたように断熱容器内の温度は
加熱していないとき
T(t) = (T0 - Te ) exp( - kt ) + Te T0:最初の温度、Te:室温、t:経過時間、k:定数
加熱しているとき
T(t) = (T0 - Tm ) exp( - kt ) + Tm T0:最初の温度、Tm:到達温度、t:経過時間、k:定数
として計算しました。
これらの式の前提として断熱容器の中の温度変化は
dT/dt = -k(T-Te)
で表されるはずだということがあります。ここでkは断熱容器の熱抵抗(の逆数、つまり熱伝導率)できまる定数です。kは断熱容器を加熱した後放置したときの断熱容器内の温度変化から求めることができます。
また加熱しているときは
dT/dt = -k(T-Te) + cP
となるはずです。Pはヒータの出力、cは断熱容器の熱容量で決まる定数です。
この式を変形すると
dT/dt = -k(T -Te -cP/k) = -k(T - (Te+cP/k))
となります。加熱したときの式と比べると
Tm = Te + cP/k
あるいは
Tm - Te = cP/k
であることがわかります。ここでkとPはわかっていますし、Tmは断熱容器をヒータで加熱したときの温度変化から推定することができますからcも算出することができます。
ここまでくると今度はヒータの出力Pから最高到達温度Tmを予測できるようになります。
あるいは最高到達温度Tmを設定するために必要なヒータ出力Pが計算できるようになります。
-----------
温度を一定にするための大方針(つまり現実の細々したことを無視した方針)を考えます。目標温度をTt、断熱容器内温度をTとします。
T=Ttのとき
この場合はdT/dtを0にすればいいわけですから
-k(T-Te) + cP = 0
P=k(T-Te)/c
となり、ヒータ出力を室温Teの変化にあわせk(T-Te)/cに保てば温度はそのまま保たれるはずです(現実には現在のヒータ出力がk(T-Te)/cになっていることを確かめる必要があり、もしそうなっていなかったらどう対応するかを考えなければなりませんが)
T>TtまたはT<Ttのとき
これは温度制御がうまくいっていないとき(たとえばkやcが正しい値ではなかったとかヒータ抵抗値の温度係数が大きくてヒータの出力が正しく算出できていないとき)や外乱があったとき(例えばあやまって室温測定用のセンサーに触ってしまったとか測定対象が発熱しているとき)におきます。もちろんこの記事に書いたモデルが現実とは違っていたときも起こります。
Tm=Ttと設定する方法はあんまりよくなさそうです。現在の温度がTmつまりTtに達するのは原理的には無限大時間後ですから。
おそらく
Tm = T + (Tt-T)*n
というような設定にすべきでしょう。ここで n についてはこんなことになります。
nがちいさいとき
ヒータの最大出力が大きくなくてもだいじょうぶです。
目的温度に到達するのに時間がかかります。
すぐに温度変動を回復できないのですが安定した動作が期待できます。
nが大きいとき
最大出力が大きめのヒータが必要になります。
目的温度に到達する時間は早くなります。
もし温度制御の過渡的な現象で温度変化が発生していたら状況はさらに悪化しそうです。
目標温度と現在温度の差によってnの大きさを変えるというのもありかもしれません。
温度が大きいときnを大きくする
目標温度への到達時間が短くする。
使い始めは温度差が大きいのでそういうとき有効そうです。
温度が大きいときnを小さくする
ヒータの負担が小さくなる。
温度差が大きすぎると何もしなくてもこの状態になるでしょうが。
温度を一定に保つだけなら意外と出力が小さいヒータでもだいじょうぶです。
----
いろいろ書きましたがこんなんでうまくいくのかよくわかりません。
次のステップはとにかく実際に作ってみてどの程度の温度変化が残るか調べることでしょうか。
-------
現在使用中の機材でのシミュレーションです。
前半部は0.4Wのヒータで加熱(最大到達温度は室温+10.1℃)、
中間部はヒータを停止し冷却、
後半部は目標温度=室温+4.7℃=25.0℃に相当する0.21Wで加熱しています。
後半部はn=1で25.0℃を目標に加熱しているわけですが、n=1だと25.0℃近くまでもって行くのには相当な時間がかかることがわかります。
ヒータは電源電圧を2倍以上に上げ最大到達温度=室温+60℃をめざす予定です。
(「データシートを読んで考えたPIC/PWMの使い方 - 恒温槽のヒータを作る」に続く)
---------
関連
「記事一覧(測定、電子工作、天文計算)」
趣味の実験
趣味の気象観測
趣味の電子工作
PIC
「正確な温度を求めて (1)」
「氷点 - 摂氏0度の作り方」
「ミニ恒温槽の作成に向けて - 1」
「ミニ恒温槽の作成に向けて - 魔法瓶の活用」
「温度を一定に保つ方法 - ミニ恒温槽の作成に向けて(3)」
「サーミスタによる温度測定の精度」
「サーミスタ温度計の精度を調べる - 1」
「PICで作るお手軽サーミスタ温度計」
「PICで作るお手軽サーミスタ温度計 (2) - ソース付き」
「サーミスタの自己発熱・熱放散係数を測ってみた」
「(アルミ管入り)サーミスタの自己発熱・熱放散係数を測ってみた」
「(水中の)サーミスタの自己発熱・熱放散係数を測ってみた」
「サーミスタで正確な温度を測るコツ - 基準抵抗(R0)、B定数、熱拡散係数、...」
「続・サーミスタで正確な温度を測るコツ - 基準抵抗(R0)、B定数、熱拡散係数、...」
「(趣味の)白金抵抗温度計の製作 - 準備編」
「16bitADコンバータMCP3425とPICで作る白金抵抗温度計 - 1」
「(趣味の)白金薄膜抵抗温度計の作り方 - 誤差について」
「温度センサー3種の精度比較(摂氏0度~40度編)」
参考
「アズビル - やさしい自動制御のお話 - 第四章 PID制御について」
« リブロに売っている、ジュンク堂で買った - アラビア語は難しいけれど、日本語もむずかしいのかも | トップページ | アナログ乗算器の直線性をチェックしたらDMMもちょっとへんかも »
「趣味の実験」カテゴリの記事
- 100Ω抵抗器の端子間で発生した火花放電(沿面放電)(2018.07.18)
- Amazonで買った「400000V高電圧発生モジュール」の出力極性(2018.07.15)
- 高電圧モジュールの放電開始電圧 - 針状電極間の放電(2018.07.11)
- 高電圧モジュールの放電開始電圧 - 円筒電極と針状電極(2018.07.09)
- 放電開始電圧をパッシェンの法則から知る(2018.07.07)
この記事へのコメントは終了しました。
« リブロに売っている、ジュンク堂で買った - アラビア語は難しいけれど、日本語もむずかしいのかも | トップページ | アナログ乗算器の直線性をチェックしたらDMMもちょっとへんかも »
コメント