ちょっとTea Time!? 周波数カウンターをつくってみよう! 2021.7.6

我が家の周波数標準もできたことなので、いよいよ周波数カウンターを作ってみましょう。

表示はLCDをつかえば簡単ですが、それでは面白くないので私的には初物の14セグメントのLEDをつかってみようかと思っています。
2桁表示のものを4個並べて8桁表示です。
また14セグメントなので、数字以外にも色々と表示できます。

表示には14セグメントのLEDをつかってみましょう。

機能は?

機能はすこし欲張ってみましょう。
 周波数カウンターとしての動作は下記の2つの動作ができるようにして、
低周波数でも測定分解能が落ちないようにしましょう。

 ダイレクトカウント・・・・一定時間(例えば1秒間)の信号をカウントを表示する。
               高周波数の測定に向きます。
 レシプロカル・・・・・・・・入力信号の周期の間に基準クロックをカウントし、その逆数を
                表示する。低周波数の測定に向きます。

その他は
 ・パルス幅の測定
 ・DUTY比の測定
など、盛り沢山にしましょう。まあ、計画は壮大に、実行はシンプルに・・・という結果にはなりそうですが。

回路図は?

まずは、全体の回路を書いてみましょう。色々と機能を詰め込もうとしたら、結構回路が複雑になってしまいました。
ICはPICを含めて10個ほど必要になります。それに、LEDのダイナミック点灯用にトランジスタが23個必要です。
数が問題ではなく、その実装面積が結構きついです。抵抗はできるだけチップ抵抗をつかったほうがよさそうです。


全体の回路図です。


左半分の回路図です。ちょうど周波数カウントの処理部になります。



右半分の回路図です。こちらは単純に14セグメントLEDをダイナミック点灯するための回路になります。

さて、いつになったら着手できるかな。
まあ、気長に進めましょう!

#まずはHDMI-LVDS関連のマニュアルも書いたことだし、今週末あたりにリリースかな〜

検討不足だったなあ〜 2021.7.13

14セグメントのLEDを使おうと思っていましたが、検討不足が露呈です。
8桁ダイナミック点灯なので1セグメントあたりパルスで40mA程度流そうと思っていましたが、
14セグメントになるとDP(小数点)含めて最大で600mA流れます。
最初はなにも考えずにチップトランジスタを使おうと思っていましたが、全然容量的に足りません。
勿論TO-92サイズのトランジスタでもだめです。TO-126あるいはTO-220のトランジスタが必要です。
それらを8個も搭載するとなると、結構な面積を必要とします。こりゃ、だめだな〜。

LCDにしちゃおうかな・・・・

LEDはやめて、LCDにしちゃおうかな〜。そうすれば、部品点数も大幅に減ります。
それにLEDだと40PinのPICが必要ですが、LCDなら28PINのPICでも十分です。基板の実装面積もかなり小さくなります。

まずはLCDをつかって28PinのPICを使った場合で回路図を引き直しです。

LCDに変更すると回路図がかなり小さくなりました。


ああ!回路図間違えている! 2021.7.27

しばらく放置していましたが、いざ作ろうとおもって回路図を見直したら、大きな間違い発見です.IC6の74148って8 to 1 セレクタと思っていましたが、
8 to 3 のエンコーダでした.こりゃ、だめだわ.
 といっても、8 to 1 のセレクタなんて手持ちにないから、仕方ないので3ステートバッファーを並べて8 to 3 セレクタを即席で作成です.
ついでに、回路図も少し見直して、簡略化しました.


回路図をすこし見直して簡略化しました.機能は同じになるはずです(ほんと?

組み立てに入りましょう!

素子(IC)の数もさほど多くないので、STDサイズの基板でも十分に実装できそうです.
適当に配置して、配線作業に入りましょう!


素子数も少ないのでSTDサイズのユニバーサルに組み込みました.

まずはダイレクト計測モードで 2021.7.29

必要なICを搭載して、あとは簡単に作れるダイレクト計測モードでのソフトを作成です。
ダイレクト計測は一定時間(例えば1s)の間にカウントした数を表示するだけなので、とくに難しいところはありません。
それに対してレシプロカル計測だと倍精度での割り算が必要になります。使っているC言語のコンパイラでは単精度の
割り算ルーチンしかないので、あらたに倍精度の演算サブルーチンを作る必要があります。


ダイレクト計測モードでの仮ソフト作成です。

(つづく・・・長期計画です(笑))