はじめに
とある回路を作るために、そこそこの精度を持ったヒータが必要になりました。ヒータは5W20Ωのセメント抵抗にしたので、その制御回路を作ります。コスト削減のためにアナログで作成しようと目論みました。
結論
はじめに結論を書いておきますが、オペアンプがコンパレータ的な動きしかしなくて、高精度な温度維持はできませんでした。だいたい3℃くらいぶれてしまいます。
回路図
回路ですが、単純で、温度センサからの出力と目標値をオペアンプで比較して、その出力をMOSFETのゲートに入力して制御する感じです。目標温度は50℃にしてあります。
注意点としては、MOSFETが最大12Wで発熱するのでヒートシンクをつける必要があります。6Vを生成してから、ツェナーダイオードで5Vを生成しているのは、別の回路で6Vを使用したかったためです。
理想の動作
はじめは温度が上がり続け、目標温度との差が小さくなると、ヒータに流れる電流が小さくなっていき、一定電流でヒータから逃げる熱と発生する熱がいい感じに釣り合って、一定温度を維持し続けるというのが理想でした。
実際の動作
ヒータに電流を流してから、温度が変化するまでに時間差がありすぎて、ON/OFFを断続的に繰り返す感じになってしまいました。
放熱して温度が下がり、目標値を下回る
↓
電流が流れ始める
↓
実際に温度が上がるまでに時間がかかるため、温度は下がり続けるので、MOSFETが全開になる
↓
やっと温度が上がり始める
↓
目標近くになったので、電流を小さくする(MOSFETを閉じ始める)
↓
なおも温度が上がり続けるため完全にOFFになる(目標値は完全に通り越している)
↓
やっと温度が下がり始める
↻
って感じでON/OFFが断続的に繰り返されます。
改善
改善策としては
・ヒータが早く温度上昇すれば良い
電力が大きくなりすぎるor加熱できる面積が小さくなるので、不可能です。
・ヒータがゆっくり温度上昇すれば良い
ゆっくりであればオーバシュートの度合いも小さくて済みます。しかしながら、初期の加熱に時間がかかってしまいます。
・遅延も考慮した制御系にすれば良い
PID制御を使うってことですが、アナログ回路で作ろうとするとそこそこ大変なうえに、コスト的なメリットが消えてしまうので諦めてマイコンを使うことになります。
・より細かな電流制御ができれば良い
ゲート電圧で電流を操作してますが、かなりピーキーな感じでオペアンプで扱いきれてないだけかもしれません。適切に制御できるようにしたら良くなるかもしれません。
・センサの反応が早ければ良い
セメント抵抗の抵抗値が温度によって変化することを使用すればヒータ自体をセンサとして使用できそうです。しかし、安定はしそうですが、精度が悪そう(外気温とかに左右されそう)なので却下です。
より細かな電流制御ができれば良い
ちょうどLM358が2回路入りで余っているのでこれを使用します。2つめのオペアンプの反転入力(=1つめのオペアンプの出力)と同じ電圧がMOSFETに加わるようになります。
結果としてはほとんど変わりませんでした。温度センサの出力値はこんな感じでした。4℃くらいのブレがあります。
ヒータがゆっくり温度上昇すれば良い
ヒータを50Ωのものに変更して、温度上昇を半分以下にしました。温度変化が2℃くらいのブレになりましたが、温度が一定になるようなことはありませんでした。さらに動作電圧を下げてみたりもしましたがダメでした。
おわりに
残念!いろいろ試せばできると思いましたが、理想的なものはできませんでした。1個40円なCH32V003J4M6を買ったので、これでPID制御しようと思います。そのほうが、MOSFETの発熱もすくないし、部品点数も減らせます。