● 2位置制御での実験

 温度センサーで検知した温度により、サーボモーターを次のように制御します。
  • 60℃未満なら、回転角度0°(一番下の位置、高さ 10mm)
  • 60℃以上なら、回転角度90°(一番上の位置、高さ 35mm)
 サーボモーターを動作させた後、次の計測・制御まで 10秒待ちます。約 11秒周期の制御になっています。
 ラズパイ2で動作させるプログラムは、温度計測、サーボモーターの制御をそれぞれ Python で作成し、PHP で作成したメインのプログラムから shell_exec で実行して値を受け取っています。温度と時刻は、外部の Webサーバーに計測の都度送ります。これで、ラズパイ2 に接続できない場所からでも、実験状況を確認することができます。
 60℃設定に対し、途中から 1.5~2℃くらい高いところになっています。ヒーター周囲の温度上昇が原因と考えられますが、11秒周期で、上と下しか状態がないので、ズレは発生しやすいはずです。

 ● 4位置制御での実験

 2位置だと、加熱する物体への供給熱量が2段階しかなく、粗い制御しかできないので、サーボモーターの回転角度を、0°, 30°, 60°, 90°の4段階に動かして制御することにしました。なお、ヒーター周囲の温度上昇からか、一番上がった状態でも 60℃まで下がるのが大変になったので、設定温度を 65℃に変更しています。
  • 65℃未満なら、回転角度マイナス30°(現在 0°以外の場合、1段階下げる)
  • 65℃以上なら、回転角度プラス30°(現在 90°以外の場合、1段階上げる)
  • 60℃以上で、前回より1℃以上高かった場合は、回転角度プラス30°(現在 90°以外の場合、1段階下げる)
 3つめの制御は、オーバーシュートで65℃を超えてしまうのを防止するためでしたが、2位置制御の実験結果からも、下げれば即座に温度低下するので、必要なかったようです。
 温度のズレはなくなりました。凸凹が多くなったのは、部屋への出入りが増えて風があることが主原因ですが、サーボモーターでステンレス板を急速に動かすことで、周囲の空気を乱していることも影響している感じです。加熱する物体が薄いステンレス板で熱容量が小さいため、温度が容易に変化します。

 ● まとめ

 ヒーターに加える電圧を ON-OFF する通常の温度コントロールでは、 ON-OFF するタイミングと実際に温度が上昇 / 降下するタイミングがズレます。そのため、温度が安定するのに時間がかかったり、初期に上がりすぎる現象(オーバーシュート)が発生します。今回のような方法だと、上下したらすぐに温度が変化するので、メリットがある場合もあると思います。
 他にも、高温の温泉を一定の温度にするとき、直通とトヨ(冷却通路)経由で流す割合を、サーボモーターで流路を傾けて変化させれば、腐食でトラブルが発生するバルブなどを使わなくて済み、具合が良いのではないかと思います。
 今回のような制御を、一般の制御機器を使ってやると、けっこう大変でコストもかかりそうですが、ラズパイ2では割と簡単だし、何より、一般的ではない制御パターンでも、プログラムで自在にできるのが大きなメリットです。

  • 1
  • 2