りんごは人工授粉をしてやらないといけないが、葯から花粉を取り出すのに25℃一定で一日おいてやる必要がある。
4月下旬だと愛知はもう暖かいが、地元長野北部はまだ寒いのでヒーターが必要。今までは白熱電球なんかで暖めていたようだが、せっかくならと温度調節機能があったほうがいいだろうと。
回路図載せても、結局はマイコンのプログラムがキモなので意味がないかもしれないが・・・
P0は温度のモニター箇所、P1はヒーター出力の状態モニター。
温度センサーはLM35DZを使います。25℃で250mV出力なので、マイコンのADCでも十分に拾えそうだが、なんとなく10倍にしてみた。こっちのほうがP制御の分解能が高そうだから。
ところが、実験しようとおもったら、室温が25℃にきわどい所でしたので目標値を35℃にして実験してみた。データロガーはArduinoマイコンボードで作った。ひたすらデータをPCに送り続けるようにしてデータロギング。
まあ、悪くはないでしょう。今回の系ではオーバーシュートは1℃未満の様子。ヒーターの出力はチラチラ変動があるようです。
20分弱の所、ヒーターに息を吹きかけてみました。ちょっと温度が下がって、出力が増大しています。ヒーターの出力変動は室内の微妙な風などの影響かもしれません。
次に気になるのは長時間放置での様子。上記のデータ、寝ている間も記録を続けました。朝方にかけてやや気温が低下傾向ですが、その分ヒーター出力が増大し、ヒーター部分の温度はある程度安定しているようです。ちょっと温度下がっているけど、目的が花粉の開葯なので問題ないでしょう。
実家に帰れば気温15℃程度、保温目標値25℃程度でしょうから、こんな制御でよさそうです。
プログラムのコードは色付けるのが面倒くさいので画面キャプチャ。
ヒーターはON/OFFじゃなくて、PWMで高精度に制御したんですね。
発熱からセンサー感知までのタイムラグによるハンチングを起こさないようにするのが面倒じゃ無かったですか?
最終的には係数調整で、精度とハンチングのバランス調整をしたんじゃないでしょうか。
私も以前にSSRでヒーターをON/OFF制御させたことがあります。
ハンチングしないように目標値と温度の差から演算
して、ON/OFFのタイミングを秒単位で行いました。
1日程ヒーターを動作させる用途だったので、タイマーも付けました。
カーテンが遮光じゃないので、毎朝目を覚ましております。
ヒーターは最終的に2HzくらいのPWMにする予定でいますが、現状の150HzのPWMでもぜんぜん問題ないので、いまのままでいいかなと思ってます。
不思議なことに時定数はエイヤのままで結構うまくいきました。
マイコンのADCポートが余っているので、可変抵抗経由でPIの値をセットできるようにしてもいいかもしれません。
ヒーターのみの場合、オーバーシュートしたときに冷ます能力がないので、単純なPID制御じゃない何かもっといい制御がありそうです。