日々の記録

ほどよく書いてきます。

マイコンPI制御、おっとっと

2014年04月27日 02時35分17秒 | AVR

失敗は成功の元といいましょうか、一発目での成功はなかなかありませんね。
マイコンPI制御のいろいろをデータログとって見ると気がついたことが。目標値と現在地の差分、ヒーター出力が直線にのってるんじゃないかと。それってただのP制御じゃ・・・・

 

係数をあまりにも適当に決めたのが原因だったようだ。ちょっと考えて、係数を決めてみたらある程度ヒステリがでるので、積分項が動いているのだろうということがわかった。

 

 

今は積分項の時定数が大きすぎて収束が遅い→また変更。

ヒーターの上に布をかけたり、はずしたり、また布をかけて夜の間放置してみたり。とりあえず温度は一定値になっているようです。ちっとオーバーシュートおおきい。

制御初期の状態を見てみると・・・

先の比較とは違うが、温度とヒーター出力のグラフをとってみると、直線ではないので、ちゃんとI制御が入っていることがわかる。
赤い線は大体この辺に落ち着くだろうという温度。30度を目標にしたのだが、ArduinoのADCがずれているのかオペアンプがずれているのか、まあ、多少誤差はあるだろう。

温度がノイジーな箇所があるが、P制御が0か1かばたついたとき、制御に対しては差分の3倍の制御量を入れているので、PWMが3/255(=1%)変動するの原因だろうかと思ってPの制御が0になる範囲をある程度広げてもいいのかなって。

横軸入力で縦軸出力だとこんな感じで。

 

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 温度制御(マイコンによるPI... | トップ | 備忘録(シンタックスハイライ... »

1 コメント

コメント日が  古い順  |   新しい順
Unknown (いち)
2014-04-30 23:12:34
私の場合は、ヒーター発熱が大きかったので、
100Vの電熱線をSSRで制御させたんですけど、
そのためON/OFF制御となりました。
スイッチ動作のため、比例制御ができなかったので
考え方はPID制御と少し違うかもしれませんが
温度安定度が±0.5°程度でよかったので
何とかなりました。
ヒーター容量が大きいと熱容量も大きく、感知のタイムラグ(過渡時間)が長いので特性を取りました。
まずヒーターをONにして目標温度に達したところで、
センサーが温度ピークになるまでのオーバーシュート
温度と時間を計りました。
かなりのオーバーシュートと秒単位のタイムラグがあったので、
ONN/OFF制御をタイムラグの半分ほどの周期で行いました。
最初に電源が入ったときは、目標温度からオーバーシュート温度を引いた温度になるまではONのまま立ち上げ、目標温度に近づいてから秒単位のPWMでON/OFF比例制御をさせました。
返信する

コメントを投稿

AVR」カテゴリの最新記事