PID制御を学習する方法は?


26

主に温度のPID(比例-積分-微分)制御を学びたい。

できれば簡単なプロジェクトを通して学びたいと思います。

学習に数週間かかるものをお勧めしてもらえますか?

編集:水タンクの温度を制御したい。加熱は抵抗器によって行われます。


私は誰かが学ぶことができる基本的なプロジェクトを得ようとしました、数学も面白いと思います。人々は自分の人生をそれに捧げます。
Kortuk

何の温度を制御したいですか?
J.ポルファー

3
熱を除去することはできないので、小さな電流を流した場合でもシステムがまだ冷却されていることを確認する必要があります。あなたが実験をするときに、ファンやアイスを追加するかもしれません。満タンのときは上昇し、オフのときは下降するようにします。この場合、フィードバックが調整されます。
レックスローガン

1
それは、必要な水タンクの温度によって決まります。80Cが必要な場合は環境温度で十分であり、25Cが必要な場合は問題が発生します。適切に調整されたPIDは、低速の一時的な損失に対処できるはずです。
Kortuk

回答:


27

温度の制御(メディアによって異なります)はそれほど難しくありません。私が始めたとき、それが私の最初のプロジェクトでした。あなたがすでに知っていることを繰り返してください。

システム(ヒーターまたはクーラーユニット)を制御する方法と、システム(サーミスターなどの温度センサー)からフィードバックを取得する方法が既にあると思います。閉ループ制御の一種であるPIDループを実装するには、両方が必要です。その後、本当に必要なことは、制御コマンドを送信し、フィードバックを読み、そのフィードバックに基づいて意思決定を行うためのソフトウェアを少し書くことです。

私は博士号なしでPIDを読むことから始めます。科学実験で温度を最初に調整しなければならなかったときに使用した記事です。いくつかのわかりやすい写真と、「植物」の制御方法を説明する素敵なサンプルコード(30行だけで調整できる基本的なループ)を提供します。この場合は、 。

PID-Proportional-Integral-Differential-controlの要点は、システムの瞬時、過去、および予測の将来のパフォーマンスを(それぞれ)使用して、指定された設定ポイントに到達するために特定の時点でシステムを制御する方法を決定することです。多くの場合、アルゴリズムのゲインファクターを調整して、必要なパフォーマンスを得る必要があります-温度の上昇の速さ、オーバーシュートを避けたい程度など。または、必要な場所に到達するための統合コントロールも!


PhDなしでPIDへのリンクがどこに行ったか覚えていませんでした。その名前を忘れていたので、ずっと前に読んだものを思い出せませんでした。+1先生。
Kortuk

3
PhDのないPIDは素晴らしい記事です!しかし、まあ、私の8ビットマイクロコントローラーは、その浮動小数点演算が好きではありませんでした。
abdullahkahraman 12

ただ素晴らしい!PHDなしのPIDは完璧です。私はPHDを持っていますが、私は制御理論から離れるように最善を尽くしました:)また、ミニラインフォロワーが大好きです。

@Bistromath「ありがとう」を答えとして追加しないでください。十分な評判を得たら、役に立つと思う質問と回答投票することができます。
m。アリン

10

はい。サーミスタと抵抗器を入手してください。かなり大きな電流(> 100mA)を引き込むことができる抵抗を選択します。

それらの間にサーマルペーストを使用し、テープで一緒にテープで留めます。ADCを介してサーミスタ回路をマイクロコントローラに接続します。トランジスタを使用して抵抗を制御し、これをPWMで制御します。

ダイヤルで温度を制御できるPIDを開発し、温度をオーバーシュートして鳴らすPIDの作成を練習します。それを過度に減衰させ、温度に達するまで永遠にかかり、それを臨界的に減衰させ、最大速度で温度に到達しようとします。

詳細が役立つかどうかを教えてください。

これが完了したら、熱伝導率を下げ、温度の伝播を遅らせるステージを追加して、うまく制御できるようにします。

これは、LEDとフォトトランジスタでも可能です。


これらは、PIDループの動作方法を理解するための良い提案です。
J.ポルファー



1

すでに良い反応に私の2セントの価値を追加するだけです。

温度エラー検出が制限され(オペアンプのゲインが出力を飽和させる)、温度を制御するために利用可能な電力が固定されている場合、温度制御にPIDを実際に使用すると、多くの場合非線形動作をします。

オンオフコントローラーを検討してください。システムには、熱が加えられて温度の変化が検出された時点からの待ち時間があります。PIDループがないため、このレイテンシは不安定なループ発振を引き起こし、ヒステリシスがある場合、ノイズのあるパワーサイクル(オン-オフ-オン)が発生しますが、非常に高いゲイン(コンパレータなど)により小さな残留温度誤差が生じます。レイテンシは、サイクル時間とオーバーシュートに影響します。

タンクランプなどの外乱があり、著しい熱を追加する可能性がある場合、ヒーターレギュレーターは、ランプの熱から温度上昇が検出されるとすぐに応答する必要があります。ランプスイッチがPIDループの一部ではない場合、効果を「予測」することはできません(微分フィードバックゲイン)。明らかに、ランプの発熱が大きすぎると、温度を調整できず、設定値を超えます。

PID制御を使用する熱制御では、ランプスイッチの状態と出力制御を入力して、二次熱源としての光パワーを調整する必要がある場合があります。

絶対制御エラー、オーバーシュート率、応答時間の要件を定義することは、PIDループを最適化するために必要な設計入力です。同様に重要なのは、システムの外乱を定義し、入力および出力のためにそれらを制御システムに含めることです。例えば。ランプの熱出力とセンサーと場所の選択。

余談。

給湯器を使用した最初の経験は、学生時代の70年代の水床時代で、サーミスタ、制御回路、ヒーターへのゼロクロストライアックスイッチを使用して独自の温度コントローラーを設計しました。私はコンパレータ制御から始めて、ベッドでのジャンプからの異常な反応を見つけました。そこで、センサーにフィルターなしのノイズを使用して比例制御を追加し、ZCSトライアックがしきい値付近でオンになったときに比例した「ミッシングサイクル」を与えました。0.1°C以内で温度を調整できました。応答はよりソフトでしたが、結果は同じでした。

最大のエラーは、センサーの位置と水圧のわずかな変化にありました。(当時私は小さかったので、185ポンドしかありませんでしたが、2000ポンドの水床では水圧の10%未満の変化はわずかでした)

センサーとウォーターベッド間の熱抵抗により、センサーに対する水圧に応じて小さなオフセット誤差が生じました。水槽のシナリオでは、センサーの誤差は、タンクのサイズと、センサーとヒーターまたはセンサーと水の最も遠い表面との間の距離、またはセンサーとヒーター間の水流または気泡の速度によって影響を受ける可能性があります。

私の場合、私がベッドに飛び込むたびに、熱抵抗は追加圧力からわずかに低下し、温度が10分の1度下がるまで、または追加の重量と圧力からの見かけの温度上昇に一致するまで、電源ライトが1〜2分間暗くなりますサーモスタットに対するウォーターベッド。

(レッスンは学びました。disturbancesの原因と制御システムエラーへの影響を無視しないでください)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.