« TFT LCDによるアナログメーター 2 | メイン | アンテナアナライザーの製作(センサー回路) »

2015年5月30日 (土)

TFT LCDによるアナログメーター 3

<カテゴリー:PICマイコン

Aameter2_2

PC上で動作するコードジェネレーターのバグと、C言語のポインターの使い方でかなり苦労しましたが、左のような、アンテナアナライザーの表示画面ができました。 

なぜLCD上の疑似アナログメーターの表示にこだわるかと言えば、それは、マルチファンクション画面が得られるからです。 画面はこれで完成ではなく、アナログメーター部分を消して、周波数対SWRのグラフを描かせる事により、LCD表示のアナログメーターも生きてくる訳です。 しかし、ここまでの表示で、const用に使えるROMエリアを含めて85%くらい使っており、これ以上のグラフィックを仕込むとエラーになります。 SWRのグラフ表示は、実際にハードと結合した時の様子を見ながら考える事にします。

通常、プログラムの効率化の為、共通の関数を条件判断しながら、使い回ししますが、これをやると、条件判定の為、動作が少しだけ遅くなります。今回のプログラムでも、メーター指示や、数値の表示の中で、IF文が多くなると、目に見えてメーターの動きはおそくなりました。

対策としては、条件判定を必要最小限に抑える代わりに、関数をいくつも設けることにしました。ROMの容量アップになりますが、プログラム用の容量より、グラフィック用のROM容量がはるかに大きく、全体的にはあまり影響はありません。

残り15%のROM容量でどこまで出来るかは、これからの作業になりますが、ROM容量128Kバイトのマイコンは64pinのQFPですので、出来ることなら、この44pinの64Kに収めたいところです。 また、クロックも現在20MHzですが、これを32MHzまで上げる事にします。

このLCDの表示状態で、SWRやZ,R,Xをリアルタイムにデジタル表示すると、アナログメーターの指針の動作速度は、どんどん遅くなっていきますが、 その上で、周波数カウンターを動かすと、周波数カウンターの基本ゲート時間が10ミリ秒必要であり、メーターの指針の動きはもっと遅いものになりそうです。 改善策としては、周波数カウンターは、外付けPICマイコンで処理し、カウントした結果だけをもらうという案になりそうです。

また、RやXを表示させるためには、10000倍した整数計算では、その精度が不十分で、32bit浮動小数点による計算はマストですから、これもLCD表示マイコンから切り離した方がよさそうです。

これら、周波数カウンターやR、Xのベクトル計算も、LCD上でのグラフィック表示がなければ、8bitマイコンでも十分処理可能なものです。

これからハードの設計を始めますが、基本設計はほとんど出来ていますので、蛇の目基板を使い、いかにして手作りするかが、本当の課題です。 完成はいつの事やら。

アンテナアナライザーの製作(センサー回路) に続く。

2015年6月30日追記

ハードウエーアーが基板状態ですがほぼ完成し、LCDアナログメーターの改善を行う事が出来る時期になりました。 当初、メーターの振れ分解能は1度きざみでしたが、動きが粗く、とてもアナログメーターの動きをまねる事ができませんでしたので、LCDの1ピクセル単位の変化となる、0.25度きざみでドライブする事にしました。 しかし、0.25度きざみでそのまま駆動すると、ゼロから無限大までの移動時間は10秒を超えてしまいます。 動きはスムースですが、実用的では有りません。

Aa50meter3_2

そこで、目標の角度と、現在位置の差を計算し、T/Gに対して数度しか離れていない場合、0.25度きざみで送り、その倍の差が有る場合、0.5度きざみで送り、同様に差が倍になるごとに送る角度も2倍にし、最大で2度きざみで送るようにしました。 この細工により、T/G角度近くになると、指針の動きにブレーキがかかりますので、本物のメーターの動きに、より近くなりました。

結果は非常に良好で、7MHzのアンテナをつないで、実際にSWR最少周波数を探す操作をすると、かなりスムースに指針が追従し、なんなく共振点に周波数を合わせる事が出来るようになりました。 本物のアナログメーターには及びませんが、さほど違和感なしに操作できます。 これから完成度を上げていきますが、ROM容量が、目いっぱいの状態ですので、マイコンを変更するまでは、とりあえず、お預けとなりそうです。

左のLCD画像は最新の表示画像で、50Ωのダミー抵抗を装着した時の表示です。

アンテナアナライザーの製作(センサー回路) に続く。

INDEXに戻る