2015-09-18 14:55 | カテゴリ:PIC応用回路

VVVFの音を左右する周波数の変化に関して、いろいろ試していますが、おおよその方向が確認できました。
次は、この方式(ソフトでポートの出力をON/OFFする方法)で、SWのスキャンや、LCDディスプレイへのコマンドデータのRS232通信(シリアル通信)が、ちゃんと行えるかの確認が必要です。
ソフト方式は、単純なアルゴリズムなので、PICの動作から見ると、数ミリ秒毎に、割り込みが発生して、カウントをチェックし、必要に応じてポートをON/OFFしていますので、その間に落ち着いて(?)シリアル通信をする暇が有りません。
結果、シリアル通信の期間は割り込みを中断しなければなりません。
そうすると、どうしてもVVVFの音が一瞬中断してしまうのではないかと気になっています。

なにかこれを避ける方法は無いか?
後ほど、とりあえず実際に駆動させて確認してみることにします。

ソフトでポートをON/OFFする方法(ソフト式と呼びます)では、最初PICの内蔵タイマー0(ゼロ)でプログラミングしてみました。
このタイマーは、一番の基本のタイマーで、8ビットのカウントと、プリスケーラー(分周回路)も備わっています。

詳細は、割愛しますが、VVVFで利用したい周波数(だいたい400Hzから2000Hzくらい)で、デューティー比を考えると、分解能256ではちょっと不足するようです。
また、PICのクロック周波数は、20MHzで使用していますが、それも影響している様です。
そこで、PICに内蔵されているもう一つのタイマーのタイマー1を使用することにしました。
タイマー1では、制御は、16ビット(1024)の分解能で制御できます。

これを利用して、テストプログラムを組みました。
VVVFの周波数切り替えは、WEBをいろいろ参考にさせていただき、とりあえず、第一案のパラメータを決めました。
実はこの作業が非常に複雑極まりない作業でした。
希望の周波数の変化状況と、必要なデューティー比を求める計算、そこから、タイマー1に指定するパラメータ(係数)への変換、VVVFのステージが切り替わる際に、同じ電力で切り替わらないと、列車の挙動がスムースに移行しないので、その調整などなど、、
EXCELを組んで、あーでもない、こーでもない、と大変な作業でした。
しかも、実際には、VVVF周波数は音で確認しないことには決定できませんので、PICにプログラムを書き込んで、テストして、また修正して、の繰り返しでした。

そして、ようやくソフト方式のテストプログラムが出来上がり、実際に列車を走行させてテストしてみました。
制御信号は、PICの一般のポート(この場合はRB1)から出力され、初段増幅のトランジスターを経て、電力制御のFETをドライブしています。

ソフト方式で組んだ場合の画像がこれです。





VVVFのステップ毎の細かい調整は必要ですが、ソフト方式でVVVF音の発生と、それによるNゲージ鉄道模型の走行が「それなりに」出来ることが確認できました。


次は、PIC内蔵のPWM機能を使用して、ハード方式のPWMで制御するテストです。
基本のプログラムの流れは、先ほどのソフト方式と同じで、割り込みで処理する変わりに、PWM制御のパラメータを指定のレジスターに書き込む様に変更するだけです。
また、PWMの仕様の制限で、20MHzのクロックでは、最低周波数が、1200Hzまでしか下がらないので、クロックを10MHzに変更しました。
10MHzに下げても、シリアル通信の速度も56000bpsが可能なので、今のところ不都合は見当たりません。
回路的には、PWM0の出力ピン(RC2)から、トランジスター経由、FETになります。
ハードによるPWM方式のメリットは、パラメータを指定するだけで、あとは自動的にPWM信号が出せる点で、メインプログラムはかなり自由に組めます。


ハードPWMで組んだソフトの実際の動画は、これです。




走行させる列車の模型の種類によって、加速、減速の条件が異なりますので、車輌種による何らかのパラメータの調整が必要になると思います。
そちらの方式を採用するか決定して、その後パラメータの微調整に進みます。

方式が決まったら、基本のハード回路の基板を先に製作してもよいと思います。
その上で、デバッグ、パラメータの調整となります。

先はまだまだ長いです。






管理者のみに表示する