周波数カウンター



UP dated 2001.11.10/ Revised2005.1.3

●周波数カウンター

CQ誌2001年6月号p.104の周波数カウンター(TD7104P,PIC16F84)のプログラムです。

1〜250MHzの計測ができます。プリント基板の大きさは、40mm x 50mm。

IF周波数のオフセット機能付きで、自作トランシーバーの周波数表示が可能です。 写真は、作動確認用のDIP SWを取り付けている状態。

●プログラムソース

プログラム「FC3」は、一部不具合がありましたので修正し、プログラム名「FC4」としました。
Rev.2001.11.10 FC1→FC2の改訂//IFの偏差(USB/LSB) 3.00Khz=3000=#0b8ch→#0bb8h
Rev.2005.1.3 プログラムソースバグ修正。FC3.asm→修正後FC4.asm


マウス右クリックで「対象をファイルに保存」を選んで、ダウンロード。
 秋月の”AKI-PICプログラマーキット”でアセンブリー、焼き付けをします。
asmコードのアセンブルには、秋月のAKI-PICプログラマーCDに付属しているPa.exeが必要です。

 ◇ダウンロード FC4.asm & FC4.hex 自己解凍.EXE

●プリント基板パターン・データソース

プリント基板パターンTool.pcb は、PCBEソフト(CQ誌99年6月号、2000年6月号付録CD-ROM)を使っています。
CD-ROMをお持ちでない方の◇PCBEソフトダウンロードサイト

自己解凍後、PCBEソフトをインストールすると作成される フォルダ C:\Cad に移動します。
PCBEソフトの「ファイル」−「版下印刷」でプリントパターンを印刷します。プリンター設定は、インクジェット専用OHP用紙に高品位印刷で2枚印刷。サンハヤトの基板にOHP2枚重ねで、太陽光 2.5分露光しました。
 ◇基板パターンTool.EXEのダウンロード自己解凍.EXE(110kB)

●周波数カウントロジック

・ポートRA4とRA3を並列接続し、アイソレーション抵抗470Ωを介してパルスは入力されます。
ポートRA4は、特殊ポートになっていて、内部に1/256プリスケーラ(PSA) を前置する8bitカウンタモジュール(TMR0)があります。
すなわち最大256 x 256=65536 パルスまで測れます。
TMR0をクリアし、ソフト的にスタートさせると、PICのメインプログラムとは独立して入力パルスを黙々と数えます。
・ 最大65536を超えてオーバフローすると INTCON レジスターの2bit(TOIF)がセットされ、(PSA)と(TMR0)は、2順目のカウントに入ります。

・LEDは、1桁0.25msecの5桁ダイナミック表示としています。プログラムソースFC1.asmの中の変数をcn=160としていますので、表示1周期は、 0.25msec x 5桁 x 160= 200msecとなります。

・ 各桁を表示する度に(TOIF)を見に行き、セット(1)されていれば、65536からのオーバフローがあったわけですから、レジスタVFO(2)を 1つインクリメントし、(TOIF)をクリアして戻ります。

・200msec経過した時に、RA3を出力ポートに切替え、強制的に L レベルに保持しますので、アイソレーション抵抗470Ωから入ってくる信号(パルス)は、遮断されます。同時にTMR0の8bitデータをVFO(1)に移します。

・ プリスケーラ(PSA)の8bitデータもVFO(0)に移したいのですが、この特殊レジスタは外部から読み書きができません。そのため並列接続されているRA3を H → L→ H → L→ とトグルし、その度にVFO(0)をデクリメントし、(TMR0)の値とVFO(1)の値を比較します。(PSA)が255を超えてオーバフローして(TMR0)が1つ増えた時が、(TMR0)not=VFO(1) となるので、その時の VFO(0)の値が、PSA の初期値を示すことになります。
・すなわち
・ VFO(0)←PSA
・ VFO(1)←TMR0
・ VFO(2)←TOIFによりインクリメントした値
・ VFO(3)←VFO(2)のオーバフローによりインクリメントした値
となり、パルス数が、32bit データでVFO に取り込まれています。あとは、5倍して16進数を10進数に変換するだけです。

●プリアンプ、プリスケーラについて

  ・プリスケーラ東芝TD7104Pは、入力周波数;50MHz〜1.1GHz、 分周比は÷1、÷2、÷4、÷8 が選べます。 本機は、分周比を÷1(1-35MHz)、÷8(10-250MHz)に切り替えるプログラムとしています。

・入力周波数50MHz以下は、メーカ保証の範囲外ですが、下限1MHzまでは十分な感度をもっているようです。
・10MHz〜250MHzは、5mVくらいでカウントします。TD7104Pの入力端子に5cm位のリード線を付けて、ハンディートランシーバー144MHz(200mW出力)のANTを近づけるとカウントします。

・本機の下限周波数1MHzは、TD7104Pの制約によるものです。

・2SK241-2SC1906のプリアンプ(回路図は、次のWebページの本格的周波数カウンター参照)にすると、100Hz〜35MHzまで測れます。

●部品について

  ・ 小型リードタイプの5桁7セグメントカソードコモンLEDサンヨーSL4552は、秋葉ラジオセンター2Fの奥の山長で購入しました。
・サンヨーSL4552が入手できなければ、カソードコモンLED;東芝TLR336 x5個で代用できます。5連組みたて用基板も上の基板パターンTool.EXE にあります。TLR336を基板に取り付ける前に11本のジャンパー線(ACコードの撚線をほぐした細線1本を使う)を通しておきます。

・ プリスケーラ東芝TD7104Pは、サトー電気で入手可能。
・ R220Ω、4.7kΩは、小形(P1/6W)を使用。Q8のベース抵抗は47kではなく4.7kΩです。
・ 若干の手持ち部品があります。必要な方は、Emailを下さい。

●ファンクション説明

RB3=H(open)、RB5=H、RB0=Hで起動すると普通の周波数カウンターです。

IFオフセット表示は、RB5=H,RB0=HでIFキャリア周波数を表示している時に、RB3を4.7kΩで接地すると、LEDに 0FFと表示されEEPROMにIF周波数がsaveされます。

その後電源をきって、アッパヘテロダインであれば、Dsp=Lo-IF なのでRB5=L(4.7kΩで接地) ,RB0=L(4.7kΩで接地) として電源投入する。

●カスタマイズのアイデア

@ 2基を並べて、10桁表示周波数カウンター。1GHz〜1Hzの表示(プログラムの若干の変更が必要)

A 高精度TCXO 12.8MHz(1ppm)を使い、高精度化。(gate time 0.2secのルーチンの変更が必要)

B プリスケーラーにMB506(÷64)を使い、2.5GHzカウンター。(プログラムの若干の変更が必要)



◇回路図の表示

◇ホームページ インデックスへ戻る