LCD表示器/or LED9桁表示器のFCへの適用 

UP dated 2012.12.23

● LCD表示器 または9桁LED表示器と組合せの
 高性能PIC16F84A周波数カウンターの工作例


PIC16F84Aでの周波数カウント検出部(下)と ◇!K8) 8文字x2行 LCD表示器(上)を SER、ACK、GNDの3本の通信線で接続すると 左写真のようなカウンターとなります。15.3MHz表示。


PICプログラムは、(その1)工作例FC.asmを若干モデファイしFC1.asmとし、周辺部品を最適化し、最大性能を引き出したものです。PIC単味で最大80MHzをカウントし、内蔵のプリスケーラTD7104Fを 1/8分周にすると、640MHzまでカウントします。

AFモードでは、低域性能が保証されていないTD7104Fをスリープモードとし、内蔵のバイパスAmp 2SK30A側を生かし、下限100Hzのカウント性能を引き出しています。

PICプログラムは、クロック10MHz版と 12.8MHz版の2種があります。


・下の写真は、TD7104Fを 分周1/1として PIC単味がどこまでカウントできるか、試したものです。
カウントに取りこぼしはありますが、113MHzまでカウントしています。
・下右は、カウンター検出部のクローズアップです。基板左上のVRで 前置きAmp 2SC1906のベース電流を最適に調整して、表示された上限周波数です。TD7104Fは、基板裏側に表面実装してあります。 


・下の写真は、タカチのケースYM-80(W80×H30×D50mm)に組み込んだ周波数カウンターです。
ゲート時間(0.2sec, 1sec)の切り替え、外部UHFプリスケ接続時のx64倍モードの切替えは、DIP-SWを側面に出しています(中央写真)。

・一番右は、230,436,856Hzを計測中です。

・高性能カウンター検出部PIC16F84Aプログラム済みのものをご入用の方は、以下ページをご覧ください。
◇(OPTION-4/ -5)PICの頒布基板付

● 周波数カウンター回路図

・通常のゲート時間は、0.2sec としていますが、RA2を B+5Vにプルアップすると ゲート時間=1secとなります。
・100Hz〜640MHzをカバーします。
□ AF; 100Hz〜 20MHz;;2SK30A+2SC1906 Amp経由 PICに入力。
□ HF; 1MHz 〜 80MHz;;TD7104F(1/1)+2SC1906 Amp経由 PICに入力。
□ VHF;20MHz〜640MHz;;TD7104F(1/8)+2SC1906 Amp経由 PICに入力。

● UHFプリスケーラとの組み合わせ周波数カウンター

・下図のように、RB4-RB5間に 1kΩ を取付けると、RB0-RB2の IFオフセット機能は失われ、PIC内部でのカウント倍数が、RB0(x32), RB1(x64), RB2(x128)に固定されます。
このプログラムは、mVFc.asm → mVFC1.asm で追加しました。
外部にUHF、SHF高速プリスケーラ 1/64分周(uPB1507、MB506)、1/8分周(HMC434、HMC363S8G)、1/16分周等を外付けすると10GHzまでを直読することができます。


左の写真は、PIC内での倍率を固定x128として、カウンターに87.001MHzを入力し、◇ FLED9桁表示器で上位9桁を表示させました。

下図一番下の接続(外部に 8x2=16分周UHFプリスケーラを接続したもの)を模擬したものです。
11.136GHzを表示しています。

・RB0,RB1,RB2が同時に Openであれば、最上図のように、AF,HF,VHFに切り替えることが可能です。


● プログラムソース

プログラムソースは、マウス右クリックで「対象をファイルに保存」を選んで、ダウンロード。
クロック周波数 10MHzと 12.8MHzの2種類あります。
 ◇ダウンロードPIC16F84A mvFC1.asm & Hex (10MHz用)

 ◇ダウンロードPIC16F84A mv28FC.asm & Hex (12.8MHz用)

asmコードは、MPLABでアセンブルできます。ユーザにてプログラムの書き換えが必要な方は、asm内のコメントを参考に変更してください。

● PIC16F84カウンターの高性能化のポイント

1)カウント上限周波数

・まず最初に PICのカウント上限周波数の性能は、どのようなものなのか?という点で考えてみた。 RA4ポートには、プリスケーラ(PSA; N=1〜256)を前置きして、カウントモジュールTMR0がぶら下がっている。 データシートによれば、TMR0のカウント性能は、PICのプログラム実行のシングルサイクル(外部クロックの1/4の周波数。クロックが10MHzの場合は、2.5MHz)近傍までのカウントが可能である。信号の立ち上がり、立ち下がりのTrasit時間(≒40nsec)は遅れるので、計算上は2.0MHz程度。PSAが超高速プリスケであったと仮定すると、上限周波数は、2MHzx256=500MHzとなる。
・一方、PSA(プリスケーラ)の上限周波数については、データシートには何も書かれていない。 高速ECLが組み込まれているとは思われないので、高速汎用ICの74AC74相当のプリスケであろうと想像する。 74AC74は、300MHzのクロックまで動作するが、D-FFを2分周回路に使うときは、CKがQ出力に伝わるまでに時間遅れ5nsec+Transitで9nsec程度必要なので、110MHz+/-α が上限となる。 PICがPSA=256分周にセットされたときの性能は、PSAに制限され、110MHz程度であろうと思われる。

・小生HPで紹介している他のページのPIC16F84Aカウンターは、RA4とRA3は直結し、入力アイソレート抵抗は470Ωを使っている。
・RA4とRA3を直結しているのは、ゲート時間カウントしたあと、RA3を H/Lとトグルし、RA4内部のPSA(256分周)の数値をソフト的に読み出すためであるが、この 二つのポートがぶら下がっているのが、周波数の上限を40MHz程度におさえてしまっている。


・PICのポートは、左図のように、出力/入力ポートに切り替えられるようになっている。別の言い方をすると各ポートには、入力用としての CMOS-FETのゲートと 出力用のN-FETのドレインがぶら下がっており、またゲート保護のダイオードは、Vcc側用、GND側用の2個が接続されている。このPICポートの寄生容量(浮遊容量)は、どのくらいになるのか?
 実際に測ってはいないが、通常CMOS-FETのゲートの接合容量は3pF、ドレインも同様に3pF、ダイオードは 2x0.5pF位、それに加え浮遊容量は、3pF位はあるので 合計すると10pF程度にはなるのではないか。


・RA4とRA3を直結しているので 10pF+10pF=20pF が、470Ωの後ろの入力ピン、RA4に並列に接地されていることになる。20pFというのは、40MHzでの容量性リアクタンスを計算すると Xc=1/(2PI*f*C)=200Ω となる。またR=470Ω、C=20pFの LPFを構成しているわけで ゲインが1/2 となる遮断周波数 fcは、fc=√3/(2PI*RC)=29.3MHz 。

・さてここで PIC RA4ポートのシュミットトリガのしきい値も IC 74AC14と同等であると仮定し、2.5V +/-0.25Vとする。これを跨ぐように、2SC1906でドライブすることが必要になる。

  2SC1906が十分にドライブされ、完全にコレクターOffとなると、Xc=200Ω(@40MHz時)でGND接地されているPIC-RA4からみて、470Ω+1kΩの先が B+5Vに接続されているので、RA4は、+2.5V→2.79Vに変化する。
 これは、Δ0.25Vを超えているので、かろうじてRA4をドライブできている。ところが、周波数が高くなり80MHzとなるとXc=100Ωとなるので RA4は、+2.5V→2.65Vにしか変化しないので、しきい値を跨ぐことができず、カウントしない。

・以上の検討より、本高性能カウンターでは、以下の改善をおこなった。

(その1) RA4 とRA3を直結せずに、この間に PINダイオードを 2個並列に、それぞれ逆の極性で接続した。これにより、RA3の寄生容量10pFは、PINダイオード接合容量2個=1pFと直列になることにより、RA3の寄生容量10pFの影響がほとんどないようにした.

(その2) RA4の入力アイソレート抵抗を従来の470Ωから PICの最大定格流れ出し電流が許容できる範囲で 100Ωにまで減らし、RC LPFの遮断周波数をできるだけ高くした。かつ68pFを並列にし、100MHz近辺まで、信号があまり減衰しないようにした。

・以上の改善により、PSA(プリスケーラ)の上限周波数をフルに利用できるようになり、実際に信号を与えてみると、113MHzのカウント表示を確認した(上述写真参照)。 

2)TD7104Fの低周波数域アンプ特性不良

・元来TD7104Fは、50MHz以上の周波数域での使用を前提にしているプリスケーラICであり、これに1MHz以下の周波数の増幅を期待するところに無理がある。また、TD7104FのPin8(Bias)は、Lレベルにすると スリープモードとなる機能がある。 この機能により、AFバンドを選択したときは、TD7104Fを停止させ、別途2SK30Aのアンプ経由の信号を 2SC1906に加えるようにした。 これで100Hzの信号も安定してカウントできるようになった。

3)カウント精度

カウント精度は、PICクロックの精度によって一義的に決まってしまう。 標準は汎用の 10MHzCXOをクロックに使っているが、周波数を測定したところ 10MHzで 誤差100Hz程度であった。アマチュアの使用目的であればこれで十分であろう。
更に精度を高いものを 望まれる方は、TCXOを使うことになる。 高精度10MHzTCXOは、入手が容易ではないが、12.8MHzであれば、今は販売されていないが、2年ほど前まで秋月で販売されていたKTXO−18S(3ppmの誤差)が、入手できれば、これで高精度カウンターとなるので、12.8MHz用プログラムも開発・追加した。この秋月CXOは、TCXO(温度自動補正発振器)なのかどうかということは、Web上での議論がわかれてるところだが、実際に所持していた2つのCXOの信号を 同時に受信機で聞いたところ、耳で数Hzのうなり音(ビート)を確認できたので、二つのCXOの誤差は、1ppm程度しかないことになる。 たまたま所持していた二つの誤差が、1ppm程度であることは、やはり精度の高い CXOである。
秋月の12.8MHzCXOが 入手できなくても 12.8MHz TCXOは比較的入手性は良いようである。 


"ひとつ前に戻る"には、ブラウザの「戻る」で戻ってください。
◇ホームページ インデックスへ戻る