2015-10-23 22:52 | カテゴリ:PIC応用回路
当初の第一目標まで完成にこぎつけました。


このNゲージコントローラーは、VVVF音をなんとか再現できないか?という所からスタートした話でした。
これまでPICを使用したPWMのコントローラーを自作して、時々Nゲージを走行させる時に利用していました。
基本回路は、WEBにあった、12Vのライトの明るさをを制御する回路をそのまま利用させてもらいました。
PICのPWMを利用し、その出力をTRで一次増幅した後、FETをドライブする回路です。

コントローラの製作に当たって、基本的な方向性としてとして、

1、何より、カッコいい事。
2、VVVF音(なんちゃって)を再現できる事。
3、各種、関係する表示が出来る事。(カッコいい事に繋がりますが)
4、コストをかけなくて済む事。

をあげました。

1、に関しては、素人工作ですから、性能より外見!ですね。

まずは、自由な発想で、理想的な発想でデザインを考えました。
基本は、表示部にLEDを用い、マスコンや各種データ表示を行うものです。

DSC01191.jpg


この場合、多くのLEDを制御する為に、表示用にPICを1個、PWMとVVVF制御用に1個と計2個のPICが必要になります。
また、この2台のPICを通信(私の場合はRS232シリアル)で接続し、表示する情報を送信します。
結構、大変な工作になりそうです。
基本的にはLED表示を専用にするPICを増設するだけですので、このアイデアで考えていくことにしました。

2、はWEBで先輩諸氏の作品を拝見し、これはなんとか実現したいと思いました。

VVVF音を再生するには、予め周波数を設定し、その数値テーブルにしたがって、周波数を上下させつつ、必要に応じてその数値テーブルにそって、順次周波数を変更していくことが必要です。
周波数の決定や、どの程度周波数を上下するのか、そのタイミングで周波数のステップアップをするのか?
いろいろ検証していくことが必要になりそうです。

まずは、PICのPWMとVVVF音を発生させるスピーカーを動作させる回路を含めて、ブレッドボード上に製作しました。
これを利用して、PWMの動作や、課題のVVVF音の具合を確認しました。

DSC01199.jpg


いろいろなデータをEXCELで計算しつつ試して見ました。
ポイントは、実車の様に聴こえると言うことが大事なんですが、小さな模型のモーターを駆動するので、周波数が大きく変化する際に、供給される「電力」が変化すると、モーターの回転が変化し、列車の挙動がかわります。
したがって、周波数切り替え時には、周波数が変わっても単位時間当たりの電力が変化しないように、デューティー比を変える様にしました。

周波数やデューティー変化の様子は、手持ちのオシロスコープで確認しましたが、思ったとおりの動作をしているようです。

とりあえず一つの加減速パターンが出来たので、それを元にして、残りの回路の製作とそれに伴うソフトを組み上げることにしました。

3、は、「電飾大好き」な私としては、操作に応じて、LEDやメーターがピカピカする方が楽しいですよね。

当初の計画で、LEDのピカピカをどの様に実現するか、考えていました。
実際に、基板にLEDを取り付けて、どの様な情報をどの様に表示すれば「カッコイイ」かを考えて、検討。
実際に基板にLEDを差し込んで考えて見ましたが、問題が。
LEDの数が多く、配線も「ダイナミック点灯」しなければ40ピンPICのI/Oポートを使用しても厳しそうです。

それから、LEDで表示した場合、単なる点灯ではなく、当然ですが、表示内容を裏側から「バックライト風」に照明したいですよね。
それも考えると、素人工作ではちょっとしんどいかなぁ?と。


4、は、出来れば手持ちの部品やジャンク品で製作できればと、

そこで、他で何か利用できないかと、探してみると、数年前に購入して、しまいこんでいた、LCDパネルを思い出しました。
このLCDパネルは、基板内に、CPUを内蔵し、シリアル通信をはじめ、I/Oポート、ビジュアルオブジェクトを簡単に扱えるC言語を備え、専用無料開発環境でプログラミングできるのですが、以前は、C言語の経験がほとんど無く、数回トライして挫折していました。

DSC01268.jpg


今回、PICのC言語も勉強することだし、このLCDパネルにも挑戦してみることにしました。
上手く行けば、アニメーションを利用したビジュアルオブジェクトを使用して、カッコイイパネルが出来るはずです。

まずは、簡単な仕様でテストプログラムを書き込んで、LCDのプログラミングを勉強しました。
このパネルは相当細かい事まで、簡単なプログラミングで出来るようです。

DSC01227.jpg


しかし、グラフィカルオブジェクトに関する変更を行う度に、そのグラフィカルデータ(数十MBから数百MBの大容量!)をマイクロSDカードに出力し、それをLCDパネルに差し込むと言う、面倒な一連の動作が必要になるのです。
プログラムそのものは、シリアル通信で、直接書き込めるのですが。
実は、このグラフィカル表示に関しては、グラフィクスデータをドットや線、あるいは塗りつぶしで表示するのではなく、「パラパラ漫画」の要領で、多数の静止画を連続表示して、動画を表現する仕組みなのです。したがって、パラパラ漫画の元になる大量の画像データが必要になり、それをSDカードに記憶しているのです。
シリアル通信では、この大量のデータを転送する時間が長く必要になるため、やむを得ず、直接PCからSDカードに記録するようです。

ともあれ、操作には慣れてきました。

ここまで来ると、本番で利用するPIC基板に実際の回路を組み上げて、LCDパネルを接続し、通信部分のソフトとマスコン代わりのロータリースイッチの読み込みなどのプログラミングを組み上げる必要があります。
そこで、PIC基板を組み上げて、更なるプログラミングとバグ取りに進んでいきます。

DSC01316.jpg


詳細は既にこのブログでお話しましたので割愛しますが、PICのハードウェアスタックの制限で、タイマールーチンで暴走したり、C言語の記述ミスで、なかなかバグが取れなかったりと、紆余曲折しながら、ようやく完成しました。

最終形のコントローラでビデオを取りました。
どうぞご笑覧ください。(ビデオアリアが大きくなっています。音声も入れました)


【ジャンル】:趣味・実用 【テーマ】:鉄道模型
コメント(4)

管理者のみに表示する