PICとデジタル回路

3. マイコン(PIC IC)部分について
PLLのコントロールや、LCDディスプレイの表示、周波数選択のエンコーダーパルス処理、送受信の切り替え信号などはすべてPICマイコンが担当しています。数あるPICのうち、もっともポピュラーなPIC16F84Aを使用しています。
PICを使った事がある方なら、プログラム開発の過程が想像つくと思いますが、PICの製造メーカー(MicroChips社)のWebから、コンパイラ(MPLAB)やデバッガ(MPLABに内臓)が無料でダウンロードできます。これを、WindowsのPCにインストールして使用するのですが、もう一つPICにデータを書き込む「ライター」が必要です。


ここでは、秋月電子のキット「AKI-PICプログラマ」を購入し組み立てました。コンパイラで生成したHEXコードをこのライターにRS232Cで送り、PICに書き込みます。PICのプログラムエリアはEE-PROMになっていて、ライターで繰り返し「消去&書き込み」を行うことが出来ます。

さて、MicrochipsのWebからはコンパイラだけでなく、多くのサンプルコードを入手することができます。汎用的に使用するようなルーチン、例えばバイナリをアスキーにしたり、BCDコードに変換したりといった部分は、サンプルコードを参考にしています。




     <PICライター AKI−PICプログラマ>

Mk-92のプログラムリストはこちら

プログラムの流れとして、ポート設定やLCDのイニシャライズをした後、オープニングメッセージを2秒間表示。次に、50.600MHzの受信状態となります。その後、後述する、ロータリーエンコーダのパルス入力で割り込みをかけ、周波数をup/downさせたり、PTTの入力を随所で見て、送信−受信を切り替えています。この送受を切り替えるときにはPLLの分周データをシリーパラ変換用のHC164にロードし直し、LCD表示を直し、リレーを切り替えています。

3-1 PLL IC インターフェース
16F84にはI/O用のピンが13本(PA0-4,PB0-7)がありますが、これをすべてPLLICの分周比制御ピン(N0-13)につないでしまうと、LCDはど他の制御ができないことになります。苦肉の策で、PICからはシリアルで分周比データを出力し、これをシリパラ変換用のロジックIC「74HC164」に入れて、パラレルに直してPLLに入れています。当初、PICを別のものにするか、16F84Aを2つにするか?悩んだのですが、ライターが特殊なPICに対応していなかったり、仮に2つ84Aを使用したところで、クロック回路やリセット回路で部品が増え部品点数的に変わらないことから、この回路におちつきました。HC164も安価な汎用ICです。

3-2 ロータリーエンコーダーインターフェース
周波数を変化させるため、ロータリーエンコーダー村田製作所製 「RES-20-500」を使用しています。ロータリーエンコーダーは、A及びB相の2つの出力があり、つまみを左に回すとA相がB相より進んだタイミングで出力、逆に右に回せばB相がA相に対して進んだタイミングでパルス列が出てきます。また、回した角度量とパルス数が比例するように作られていていてます。このA及びBのパルスをPICで読むことで、周波数のUP/DOWNを判断しています。
ところで、この機種のエンコーダー出力の波形整形のため、コンパレーターμPC277Cに一度通してからPICにパルスを加えています。

3-3 LCDディスプレー
LCDディスプレーは秋月電子で入手可能なSUNLIKE社の液晶モジュール「SB1602B」を使用しています。16文字X2行の構成で、本機の写真にもあるように、周波数表示と送信中か受信中かの表示をしています。このモジュールを制御するプログラムは、CQ出版社から出版されている「PICマイコン活用ハンドブック」内で、同じモジュールを使用しているページのコードをかなり参考にしました。

<デジタル部分を作っていて感じたこと>
メーカー製リグには、この「マイコン+PLL(DDS)」という機能があたりまえです。本来は上記に加えて、データのバックアップや周波数メモリ、スキャンといったものが標準で
つくのでしょうが、6mAM機ということもあり、こうした部分は省いています。 こんな簡単な回路+プログラムでも、実際に組み立ててみると、「難しい」というよりは時間ばかりかかってしまい「根気との勝負!」といった印象を受けました。


JF2SDR Dec.2007