FC2ブログ
2018-06-23 13:46 | カテゴリ:PIC応用回路

昨年に、Nゲージコントローラで、BEMFを利用して低速定速走行を目指し、一定の成果を得られました。

その時は、モーターの逆起電力をAD変換して、モーターの回転速度を推定し、それと指定された速度との差を求めてモーターへのPWMとPFMのフィードバックをかけて制御する方法をとりました。
一定の性能は確認できたのですが、最大の問題点は、BEMFの逆起電力のAD計測で、ノイズなどの影響で、とても高精度の計測がむつかしく、従ってモーター制御も精度良くはできませんでした。

そこで、ちょっと考えていたのが、BEMFを一つではなく、2パルス計測し、その間の時間を計測して速度を推定してはどうかというアイデアです。
モーターに電力パルスを1つ与えます。すると、ローターが少し回転し、コアが2個分磁石を通過すれば、BEMFが2個生成されるはずです。
その時間間隔を計測すれば、モーターの回転数を直接計測できます。
更に、進めれば、ギア比がわかれば、車両の進む距離もわかるはずです。(車輪がスリップしなければ)

なにか面白そうです。

基礎的なデータを知るためにちょっとトライしてみたいと思います。

(NG301-01)
NG301-1.jpg



ちょっと壮大な計画なので、いきなりプログラムを組みだしても「期待通りに動作しない」のは、見え見えなので、ちょっと遠回りですが、各々の段階を踏んで動作確認しつつ進めたいと思います。

まずは、久しぶりにPICのMPLABXのXC8に戻ってきましたので、基本確認から。
PICは、16F1716。
これはこれまでNゲージコントローラに使用していたものです。
動作確認と、ハードに組み込んである、小型LCD表示器を使用する為のドライバーの動作確認で、PICの操作に慣れます。

例によって、MCC(コード・コンフィギュレータ)を利用して、各ポートのI/O設定や、LCD用のi2cインターフェス、AD変換、PWMなどを設定しました。

PICの起動と、LCDへの表示など、前回に製作した各種の関数をそのまま移植しましたので、今のところ順調です。
LEDの点滅とLCDへの表示などの基本部分の動作が確認できました。

(NG301-2)
NG301-2.jpg

(NG301-3)
NG301-3.jpg



次に、AD変換、PWMの動作を確認します。
AD変換した値(0-1023)をPWM3のDutyとしてセットし、そのPWMを確認するところまでをチェックします。
AD変換の値は、LCDに表示して確認できます。
また、PWMの出力もNゲージ制御の出力にオシロを接続して、波形の観測をします。


VRつまみを廻して、AD変換の値がLCDに表示され、それにつれて、PWMの波形もDutyが変わりました。
いい感じです。

(NG301-4)
NG301-4.jpg

(NG301-5)
NG301-5.jpg


次のステップは、割り込み処理とタイマー設定の確認です。
今回は、TMR0とPINに信号が入った際に割り込みがかかるように設定します。TMR2はPWM3のカウントとして使用しますので、プログラムからはTMR2を直接制御することはありません。
mainプログラムのLOOPで、AD変換を読み取り、それをLCDに表示して、PWMが起動したら、その信号をPINに入力してピン割り込みを発生させます。
TMR0は、指定した時間間隔で割り込みを発生させます。
その様子を確認するために、mainのループ毎に赤LEDを点滅させ、TMR0の割り込みごとに黄色のLEDを、またPWM発生により、ピン割り込みが発生するごとに緑LEDを点滅させるようにテストプログラムを組みました。
実際には、超高速で処理させるので、目視できるように、夫々500回とか割り込みをカウントしたらLEDを点滅させるようにしてあります。


さて、電源ON!

mainのループとTMR0の割り込みはちゃんと動作しました。
確認用のLED(赤、緑、黄)がちゃんと点灯しています。

(NG301-6)
NG301-6.jpg



しかし、PWM発生によるPIN割り込みが「うんともすんとも」言いません。

これは、またまたハマってしまったようです。
先ほどのテストでPWM3は起動できていると思うので、PIN割り込みが機能していないということになります。

困った!
出だしが不調です。

(追記)
懐メロのCDを聞きながら作業していました。
「♪~ 明日という字は、明るい日と書くのね、あなたと私の明日は明るい日ね~♪」
上手く問題が解決して、明るい日になればいいのですが(笑)

「アン真理子」の「悲しみは駆け足でやってくる」より。
こんな古い曲、ご存じないでしょうね?
Youtubeにあるかなぁ??


関連記事

管理者のみに表示する