LED表示 高精度周波数カウンタキット (Model Num. TG-15070001)

  • 8ケタ LED 表示
  • 分解能 1Hz
  • 調整箇所ゼロで高精度な測定が可能
  • 測定範囲:10Hz ~ 30MHz
  • 少ない部品で組立が簡単
  • 3通りの7セグLED実装方法
  • オプションの10分周プリスケーラキットで測定範囲を拡大
freq-counter_with_led








 税込価格 \6,300
             ご購入はこちらから
製作資料を見る: 製作マニュアル  回路図

特長:

8ケタ 白色7セグ LED 表示
最高分解能 1 Hz
TCXOモジュール採用による実力±1ppm の高精度測定が可能
測定範囲:10Hz ~ 30MHz
部品点数が少なく調整箇所ゼロ、組立が簡単です
3通りの7セグ LED 実装方法
オプションの10分周プリスケーラキットで測定範囲を99.99999MHz まで拡大

キットの概要

TGeS LAB では 、部品点数が少なく調整箇所はゼロ、しかも高級測定器並みの測定精度が得られる 7セグLED を用いた周波数カウンタキットを開発しました。
本キットでは、測定信号を増幅するプリアンプ部にロジックインバータ IC を採用し、負帰還をかけることによってアナログアンプとして動作させており、これによりアナログアンプ部の無調整化と部品点数の削減を実現しています。
測定精度を決定するクロック発振部には、TCXO を採用して温度依存性を低減し、無調整で実力±1ppm (保証値ではありません) の測定精度を実現しています。
なお、表面実装部品である TCXO はハンダづけ済モジュールとしてキットに添付してあります。

本キットの7セグ LED をケースに実装する場合、下図のように3通りの実装方法が選べます。(詳細は、製作マニュアルをご覧ください)

freq-counter1
freq-counter2
freq-counter3
 

仕様:

周波数測定範囲:10Hz ~ 30MHz
  :10MHz ~ 99.99999MHz (オプションの10分周プリスケーラキットTG-15110003 を使用時)
ゲートタイム :1秒 / 0.1秒
周波数分解能 :1Hz (プリスケーラ無、ゲートタイム 1Sec 時)
  :10Hz (プリスケーラ無、ゲートタイム 0.1Sec 時)
  :10Hz (オプションのプリスケーラ TG-15110003 使用、ゲートタイム 1Sec 時)
  :100Hz (オプションのプリスケーラ TG-15110003 使用、ゲートタイム 0.1Sec 時)
測定精度 :± 3ppm (実力± 1ppm 但し保証値では無い) さらに±1 カウントの誤差が加算されます
電源電圧・電流:DC12V±0.5V 70mA max

技術解説

   マイコン (MCU)
マイコン(MCU)には、PICマイコン 28pin 4kワード ROM の PIC16F883 を使用しています。
pic16f883








   PIC16F883
   周波数基準クロック
周波数基準を生成するクロックジェネレータにはセイコーエプソン製の TG-5021CE を使用しています。
サイズは 3.2 x 2.5 mm の表面実装タイプ(SMD)で非常に小さなものですが 、電源電圧 2.8V で 10MHz の 周波数基準を矩形波で出力します。

tg-5021cg








TCXO セイコーエプソン TG-5021CG
TG-5021CE は TCXO と呼ばれる温度補償された発振器なので、その周波数変動は、-30℃~+80℃の範囲で ±2ppm MAX (公称値)、温度に対して安定な周波数を出力します。
TGeS LAB で200個のサンプルを確認したところ、周囲温度 +8℃~+30℃の範囲では、変動幅 ±1ppm 以内に収まっていました。
また周波数の精度も優秀で 21℃ のとき 200個の平均が +0.5ppm でした。 つまり 10MHz の基準発振周波数が 5Hz だけ上にズレているということです。
graph

基準発振周波数のズレがそのまま測定周波数のズレにつながりますので、このクロックジェネレータを使用すれば、高級計測器並みの計測精度を得ることが出来ます。
本キットでは、表面実装タイプ (SMD) である TG-5021CE などを予めハンダづけした TCXO モジュールとしてキットに附属してありますので、面倒な SMD のハンダづけは不要です。

module-tcxo








  TCXO モジュール
   入力プリアンプ部
入力のプリアンプ部にはロジックゲートICである 74HCU04 を使用しています。

74hcu04








  Hex Inverters 74HCU04
74HCU04 は C-MOS インバータが 6 個内蔵されており、通常はハイ、ローの 2 値を出力するロジックIC ですが、 これに負帰還をかけることによってハイゲインのアナログアンプとして使用しています。

logic-gate-74hcu04通常はハイ、ローの2値を出力する


negative-feedback負帰還をかけるとアナログアンプになる


ただ、74HCU04 をアナログアンプとして使用する場合、いくつかの問題点があります。
その1つが周波数高域での入力インピーダンスの低下と、あと一つが無入力時(入力オープン時)にノイズが発生し、それにより無入力にも関わらずランダムな周波数を表示してしまう問題です。

    周波数高域での入力インピーダンスの低下問題について
74HCU04 は C-MOSロジックなので入力インピーダンスは非常に高いと思われがちですが、実際にはそれほどでもなく、周波数の上昇と共に低下し、しかもかなりキャパシティブになります。
その理由は、C-MOSロジックの入力容量に起因します。 74HCU04 のデータシートには typ 9pF (東芝製)、typ 3.5pF (Nexperia製) などと比較的小さな値が記載されていますが、 これは入力がロジックレベルのハイかローに固定したときの静的な値です。

下図 に Nexperia 製のデータシートから転載した入力レベル対ゲート入力容量 Ci のグラフを示します。

graph

ゲートの入力レベルにより Ci が変化し、入力レベルが丁度 電源電圧Vcc の1/2の時 (つまりC-MOSゲートのしきい値)、 Ciが最大となります。
この値は結構大きくてVcc 5V の時は、Ci = 35pF にもなります。 35pF とは、10MHz で 455Ω のリアクタンスであり、さらに周波数の上昇とともに段々ゼロに近づきます。
そこで本キットではその対策として周波数高域でも最低 1kΩ のインピーダンスが確保できるように 74HCU04 の負帰還 アンプ入力に 1kΩ の抵抗(R19) をシリーズに挿入してあります。

input-impedance
下図に実際に測定してみた 74HCU04 (東芝製) を負帰還アンプとして使用した時の周波数対入力インピーダンス特性を示します。

graph
100kHz 程度までは、入力インピーダンスは 約 160kΩ 程度を維持していますが、それ以上の周波数では急激に インピーダンスが低下します。
しかし、R19 があるため、10MHz 以上でも 1kΩ は確保されています。
100kHz を超えると急激に低下する理由は、周波数が高くなると単位時間当たりのしきい値付近を横切る時間の割合が 大きくなるためと推定されます。

またこのインピーダンス低下対策の抵抗 R19 は、静電気や過大入力などから 74HCU04 を保護する役目も担っています。
周波数カウンターの入力端子に外部から静電気 (ESD) や過大入力が印可された場合、抵抗 R19 とダイオード D00 および D01 によりクランプされて74HCU04 の入力ピン (#1pin) を保護します。
esd





    *無入力時にランダムな周波数を表示してしまう問題について
74HCU04 に負帰還をかけたアンプは周波数低域では非常にハイゲインで、感度はすこぶる良いのですが、高感度ゆえに無入力(入力端子オープン)ではノイズによりランダムな信号を出力し、PICマイコンがこれをカウントしてしまい、無入力にも関わらず 30kHz 付近の変な周波数が表示されます。
この現象は、測定しようとする信号を入力するとノイズはキャンセルされて正常な値が表示されるので実用上は問題無いのですが、信号が無いときにパラパラと変な値が表示されるのは、どうも目障りです。

no-hysteresis無信号時 30kHz 付近のランダムな周波数が表示されてしまう

TGeS LAB では、この対策として 74HCU04 の2段目以降のインバータにヒステリシスを持たせることにより解決しました。
インバータゲートにヒステリシスを持たせる
通常、インバータゲートのしきい値は 74HCU04 などの C-MOS の場合、電源電圧 Vcc の丁度半分、 1/2Vcc がしきい値になります。
つまり、入力レベルが 1/2Vcc より高ければ出力はロー、低ければハイです。

logic-gate-74hcu04
従って、もしノイズっぽい信号が入力された場合、 1/2Vcc 付近にあるノイズの影響で出力が反転し、本来の信号のタイミング 以外のところで出力がハイ・ローにバタバタ切替わってしまうことになります。

no-hysteresis
このノイズの影響を避ける方法としてゲートのしきい値にヒステリシスを持たせます。
ヒステリシスとは、出力がローからハイに変わるときの入力しきい値(ViH)とハイからローに変わるときの入力しきい値(ViL)に違いを持たせることです。
インバータゲートにヒステリシスを持たせるには、インバータを 2 段シリーズに接続して 2 段目の出力を 1 段目の入力に抵抗を介して戻します。
インバータ2段なので反転の反転、つまり正帰還をかけるということです。

positive_feedback
このように正帰還をかけるとゲートはヒステリシス特性を持つようになります。
ゲートがヒステリシス特性を持つと 1/2Vcc 付近にノイズがあったとしてもその影響はキャンセルされ、出力がバタバタ切替わることが なくなります。

with_hysteresis
ViH と ViL の差、つまりヒステリシスの幅が大きいほどノイズの影響を抑えることが出来ます。ヒステリシスの幅の算出方法はこちら

しかし、インバータゲートにヒステリシスを持たせるとゲートの伝達遅延の影響が大きくなるため周波数特性が悪化して高域での感度が 低下するという新たな問題が発生します。
そこで TGeS LAB では、ヒステリシスは周波数の低域のみ動作させ、高域ではヒステリシスを持たないようにすることにより、無入力時のランダムな周波数を表示してしまう問題とヒステリシスによる高域での感度低下の問題の両方を解決しました。

図 は、ヒステリシスに周波数特性を持たせる回路です。
ヒステリシスの幅は、R21 と R22 の比率で決まりますが、高域では R21 にパラに接続されたコンデンサ (C09) の影響でヒステリシスの幅が小さくなり、10MHz ではほとんどヒステリシスを持たなくなります。

c09_effect
下図 は、C09 が有る場合と無い場合の入力プリアンプ部の感度特性です。

graph
このように C09 のおかげで高域の感度が大きく改善していることが判ります。
計測に必要な入力レベルは、1MHz までは 20mVrms 以下、10MHz でも 100mVrms 以下を実現しており、非常に高感度です。

一方、無入力時に発生するノイズの周波数は、低域成分が主なので周波数低域に設けたヒステリシス特性によりノイズの影響がキャンセルされ、 周波数カウンターの入力端子がオープンの場合でもランダムな周波数を表示してしまうことは無く、表示は 0.000 kHz (または 0.001 kHz) と なります。

hysteresis_effect

ヒステリシスの無いとき



ヒステリシスを持たせると表示はゼロで安定する
   PICマイコン (MCU) のプログラムの概要
計測する信号は、RA4 ポートから入力して TIMER0 でカウントします。
TIMER0 は 8 ビットプリスケーラと合わせて 16 ビットのカウンタです。
ゲートは、RA4 ポートと並列接続しているRA3 ポートを使用して開閉を行います。
RA3 ポートを入力ポートにするとゲート開、RA3 ポートを出力ポートにすることによってゲート閉となります。

TIMER0 のカウントは、TIMER0 のオーバーフロー割込みでオーバーフローの回数をカウントし、ゲート閉後に残ったTIMER0 とプリスケーラの値を合算して総カウント数、即ち測定周波数を求めます。
なお、TIMER0 はプリスケーラの値が読めないのでゲートを閉じた後、RA3ポートからパルスをRA4ポートへ入力して、何パルス入力すると TIMER0に繰上りが発生するかによって間接的にプリスケーラ値を読み出しています。

ゲートタイムの生成は、一般的なコンペア割込みを使用しています。
16ビットの TIMER1 を内部クロック (10MHz基準クロック)で駆動し、20mSec 毎にコンペア割込みを発生させます。
コンペア割込み 50 回でゲートタイム1秒 (20mSec X 50 = 1Sec)となり、割込みルーチン内でゲート閉としています。
コンペア割込み 5 回ならゲートタイム 0.1 秒となります。

ただ、割込みを使用すると割込みルーチンへ飛ぶ時にデータなどがスタックに積まれるステップが必ず入りますので、そのステップ分だけゲートを閉じるのが遅くなります。
そこでゲート閉の遅延分だけゲートを開くタイミングも遅くすることによってゲートタイムが正確に1秒となるようにしています。

実際には、自分自身の10MHz基準クロック(TCXOモジュールの出力)を計測しながらプログラム上で _delay()関数を挿入してキッチリ10.000.000MHz となるようにゲート開の遅延量を決定しています。

なお、表示のデシマルポイント(ドット)は、MHz と kHz を表します。またゼロサプレス(先頭のゼロを非表示にする機能)で表示されます。

10.000.000hz

TCXOモジュールの #3pin と基板の入力 IN を
接続し、キッチリ 10.000.000 Hz と表示される
ようにプログラム上でゲートを開くタイミングを _delay()関数で調整している
なお、コンパイラXC8 Ver2.3 の場合、割込みルーチンへ飛ぶのには、およそ70ステップ分の遅延があるようですが、ステップ数はコンパイラのバージョンによって変わる可能性がありますので、コンパイラのバージョンが変わった場合、本キットのような割込み方式のプログラムでは確認が必要です。