picマイコンなんて触った事もなかった素人のkazurockが、苦労しながらもコソコソ勉強してやっと位相制御による、ACモーターのフィードバック制御に成功いたしました!!
はじめは、PICマイコンでLEDピカピカからはじまり、割り込み処理、A/D変換、LCDパネルの表示と徐々にステップアップし、それらの複合技のPID制御という大台までなんとかいきつきました。
前回はハードケースを作るというもの
本体のほうは一応ですが、前々回より若干プログラムの見直しをしてさらにスムーズなフィードバック制御によりACモーターが動作するようになってます。
完全にうまくいきました。ワインで乾杯です。
まずは動作映像をばご覧ください。
ミニ人工心肺ケースの仕上げ
とりあえず、前回や前々回からの続きという事でACモーターを納めるケースの仕上げからです。
今回はそれに制御基盤や調節ツマミ、LCDパネルを設置し色を塗りまーす。
これにニスで色付けしてみました。
LCDパネルはホットボンドで固定します。
じゃーん!!こんな感じに仕上がりました。
制御基盤は全て同一ボード常に配置、これがなかなか大変で結構疲れました。
ためしに動かしてみる、基盤をどうやってケース内に固定するか思案中です。
とりあえず動作確認はなんとかOK。
プログラムの見直しについて
前々回の記事にて、PID制御の制御量を何度となくカットアンドトライにより調整してきましたが、あまりうまくいかず結局制御範囲が0-255のところを40-140程度にまで落として設定してうまく行きましが・・・↓。
しかし、ACモーターの誘導電動機はトルクがかかると回転数が落ちるという特徴があり、本来255で100%位相なのに、MAX制御で140にすると54%程度位相出力の力しか出せないようじゃポンプとしての機能を果たす事ができないのです(トルクが足りない)。
ですから、再度制御量を調整してMAXを255、最小値を30程度としてPIDフィードバックが働くように再調整を施工しました。
PID制御のプログラム
今までの記事ではPID制御には触れていましたが、実際のプログラムの詳細については述べていなかったので、最終章の今回は考え方を記述します。
なんせ、私は1年前まではプログラム自体を書いた事のない素人だったので、わからない人の事がよくわかります。
PID制御の基本はここで勉強してください。
実際のプログラムは
本当に基本通りのプログラムになります。
調整の方法はまずはPIDのうちPだけを調整しました。
Pだけだと低回転時のモーター動作が波打つようになり、要は目標値を超えたり、下回ったりする動きになります。
任意の値をPの定数にしました。今回は3を入れています。Pだけの比例制御だけだと低域はまったく使い物になりませんね。
なぜこのようになるのか?というとACモーターの制御幅は短く比例的に制御量を増やしていくと突然モーターがMAXスピードまで回ったり、その逆にすぐにストップしたりするからです。
しかーし!!
この比例制御量に微分要素を取り入れるとすなわち、Dの入力でオーバーシュートなどを是正してくれます。
今回はこの値を15という値にする事で低回転時のモーター動作がかなり安定しました。
プログラムはC言語でMPLABXで開発しています。
もしプログラムを見て見たい方はお問い合わせよりご連絡くださると対応いたします。
プログラム興味あります。
教えていただけますか?
いいですよ。
ありがとうございます。
メールで教えていただければと思います。
よろしくお願いいたします
初めまして、自分もプログラムに興味があります。
教えていただけないでしょうか?
いいですよ。詳しくはお問合せよりメールしてください。
はじめまして
私もPICでPWM制御の実験をしていますが、初心者で、いろいろとつまづいています。
記事が大変参考になりました。
プログラムに興味がありますので、教示いただけませんか。
neo takizawa様
コメントありがとうございます。
お問い合わせからメールいただいたら、できる限りですがいくらかお教えできます。
PWMはパルスワイドモジュレーションといって私の場合の位相制御とは少し違います。
PWMなら、PIC16F88などで簡単にプログラムできますよ。
詳しくはメールいただければと思います。
素人考えですが、
ACモーターは位相制御だと(関東では)1秒間に100回しか制御できません。
これは見方によっては100hzのPWMですよね.
回転数検出のタコジェネレータ-の分解能が、1秒間に1000パルス以上あるなら
PIDは、FETを使って1khzくらいでPWMしたらどうでしょうか?
1khzでPWMしたら、PID制御の収束が早くなり安定するかもしれません。
初めまして。
PID制御の実験をしたくて探していたらこのサイトを見つけました。
よろしければプログラムを教えていただけないでしょうか。