失敗は成功の元といいましょうか、一発目での成功はなかなかありませんね。
マイコンPI制御のいろいろをデータログとって見ると気がついたことが。目標値と現在地の差分、ヒーター出力が直線にのってるんじゃないかと。それってただのP制御じゃ・・・・
係数をあまりにも適当に決めたのが原因だったようだ。ちょっと考えて、係数を決めてみたらある程度ヒステリがでるので、積分項が動いているのだろうということがわかった。
今は積分項の時定数が大きすぎて収束が遅い→また変更。
ヒーターの上に布をかけたり、はずしたり、また布をかけて夜の間放置してみたり。とりあえず温度は一定値になっているようです。ちっとオーバーシュートおおきい。
制御初期の状態を見てみると・・・
先の比較とは違うが、温度とヒーター出力のグラフをとってみると、直線ではないので、ちゃんとI制御が入っていることがわかる。
赤い線は大体この辺に落ち着くだろうという温度。30度を目標にしたのだが、ArduinoのADCがずれているのかオペアンプがずれているのか、まあ、多少誤差はあるだろう。
温度がノイジーな箇所があるが、P制御が0か1かばたついたとき、制御に対しては差分の3倍の制御量を入れているので、PWMが3/255(=1%)変動するの原因だろうかと思ってPの制御が0になる範囲をある程度広げてもいいのかなって。
横軸入力で縦軸出力だとこんな感じで。