前回までの記事 こちらPICマイコンによるACモーターのPID制御 ミニ人工心肺改の製作 その①でPID制御の考え方とハードウェアについて書いてきました。
今回はハードの各部のチェック(ちゃんと動くのか?)とソフトウェア(プログラムの部分)に的を絞っていきます。
とりあえずもう一度回路図を載せておきます。
今回チェックするのはレートジェネレーターの出力調節とフォトカプラの動作を確認します。
レートジェネレーターの電圧変換
まず、ACモーターの回転数に応じて電圧を出力するレートジェネレーターが0ー20V程度の幅があるのですが、それをPICマイコンでA/D変換します。
そもそもマイコンは5V程度のA/D変換を想定しているので電圧のレベル変換をします。
レベル変換は単純に抵抗で分圧してモーターがMAX回転して20Vを出力している時に分圧してマイコンに入力する電圧をマイコンが取り扱える最大値である5Vに合わせます。
写真のとおり、モーターがMAX回転している時に抵抗で分圧して可変抵抗でちょうど5Vになるように調節しました。
青色の線がモーターから出力されるレートジェネレーター
ちょうど5Vになるように可変抵抗を回して調節!! 完璧です。
フォトカプラの動作
次は交流波形のゼロクロス部分を検出してPICマイコンに入力する部分のチェックです。
ここは単純に実際にトランスに”緊張しますが”AC電源を入力して、FOD814Aの動きをみていきます。
ここでは8.33msecごとにおとずれる交流波形のゼロクロスを視覚的に見る為に秋月で買ったポータブルオシロスコープを用いました。
チェックではFOD814Aに降圧された9Vの交流波形を入力してしっかりゼロクロスを感知するか調べます。
一応ゼロクロスをフォトカプラで検出できる事を確認!!
でもゼロクロスの電圧が下がっている時間が2msecってなんか長いなような・・
参考にさせていただいているここのサイトではこのゼロクロスをフォトカプラが感知する反応時間はなんと400μsecなんだそうです。フォトカプラもまったく違うのものを使用していますが、ここまで違うのか?それとも簡易オシロスコープの性能が悪いのかわかりません。
一応、プログラムではこの反応時間も重要になります。
今回は実測した2msecを信じてフォトカプラが反応をはじめて1msec後をゼロクロスの中央とします。
後日談ですが、うまくいかずプルアップ抵抗が小さすぎという事が原因でこれを33Kに変更する事でしっかり動作するようになりました。
そんでその時のフォトカプラの反応時間もおおよそ500μsecと上記サイトで紹介されている値とも近似します。
一応、失敗ですが動画もどうぞ
テスト実験
ここまできたらとりあえずPICだけで動作するか確認してみます。
確認ポイントはLCDの動作と2系統のA/Dがうまく働くかみます。
動画でどうぞ
うまく動作しているのでこんどは実際に商用交流電源を使用して、フォトカプラが検知したゼロクロスの点で外部割り込みが働くか確認してみまーす。
動画でどうぞ
そうなんです。失敗しました。
手動でRB0の外部割り込みに5Vを入力するとなんとフツーに動きます。
でもフォトカプラにつなぐとうまく動作せず外部割り込み自体が働かないのです。
いろいろ考えたのですが、プログラム上で外部割り込みのフラグ処理を外部割り込みプログムの先頭でクリアして次の割り込みがはいるようにしていました。
なので8msecごとにつぎつぎにやってくる5Vの立ち上がりに入力されていく割り込み入力が割り込み処理が全て終わるまえにやってくる、もしくはチャタリング中につぎつぎに割り込み処理が繰り返され割り込み処理が行われないのでは?と考えています。
↓
原因はぜんぜん違いました・・・原因次の記事で!
次回は実際にそこのプログラムを改変してもう一度トライしてみます。
ちなみに次回でなんと完結します。乞うご期待↓
すっとばして見たい方は↓
2017年12月 ついにPICマイコンによる位相PID制御が完成!!