■ 周波数カウンタを構成するのに必要なハード資源は??
◇必要なハード資源を洗い出して肉付けを考えよう・・
PICマイコン本体だけで周波数カウンタを構成するのに必要なハード資源が全て賄えるかといえば、
なかなか微妙なところであると言える。 PICマイコンの定番 PIC16F84には、RA0〜4、RB0〜7 計13本の入出力ポートと
プリスケーラ付き外部クロック対応タイマーモジュール、それに外部割り込みの機能が備わっているが、
全ての機能が同時に使用できる訳ではなく、設定範囲も結構制限だらけだったりする (^^;
足りないモノは増設しないといけない・・・ ということで、早速足りないモノの検討に入ることにしよう。
・ ・ ・ ・
- I/Oポート
- 既に検討する前から足りないことが明白だったりするので、真っ先に増設しないといけない項目だ。 一般的には
8ビット程度の Dラッチでパラレルのまま増設するか、またはシフトレジスタを外付けして PICから送ったシリアルデータを
パラレル変換して出力するパターンなどがある。 多くの出力ポートが必要ならパラレル増設する方が有利だが、
今回は表示部へのラインが計14本で済むのと、外部割り込みを使いたいときは RB0を空けておく必要があって
8ビットまとめてポートを確保できないという理由のため、シフトレジスタを外付けする方向で行きたいと思う。
タイマーとカウンタ
- 周波数カウンタの機能を実現するためには、カウントするための仕組みが二系統必要になる。 入力信号の波を
カウントする目的の他に、カウントしている基準時間を作るためのカウンタがもう一つ必要だが、残念ながら
PICには一系統しか内蔵されていない。 カウント中に他の処理を一切止めても良い(表示も消す)なら、CPUの
命令実行ステップ数を制御して基準時間とする方法もあるが、これはさすがにイマイチでしょう。 また、
入力信号を直接割り込みラインにつないでカウントする方法もあるが、こちらは多分数百KHzあたりで
処理能力が苦しくなると思われるので、マジメに検討するのはやめておこう。 ということで、
基準時間生成用の分周回路も必要かな・・・
その他
- この他には、入力信号を PICに入力できるようインターフェースするためのアンプや、基準時間のみ入力信号を
通過させるためのゲート回路、モード設定スイッチなどが必要になってくる。 特にアンプやゲート回路は
マジメに作ると結構大きな回路になりそうなので、適当に手を抜きながら考えてみたいと思う。
◇結局回路の方はこんな感じに・・
- I/Oポート
- 蛍光表示管のセグメント制御用ラインを増設により賄うことにし、RB6をクロック、RB7をデータラインとして
シフトレジスタ 74HC164に接続した。 シリパラ変換された出力 8本を a〜fに接続、1本足りない dpはシフトする前の
RB7を充てることにする。 カラム制御ライン G0〜G4はそのまま RB1〜5に接続しているが、これで PORT-Bだけで
表示関係が完結できる計算になる。
モード切替等のスイッチ類はそのまま RA0〜3の 4本を充てることにし、プルアップした上でコネクタに接続している。 使用
するのは現状「レンジ切替」「表示シフト」の二種類のみとし、それぞれ RA0〜1に接続することとした。
タイマーとカウンタ
- PIC内蔵のタイマーモジュールを外部クロックの設定にし、入力信号のカウントに充てることにした。 内蔵タイマーは
8ピット長だが、カウントがオーバーフローする毎に割り込みがかかるので、これを使って上位バイトへの桁上がりを
処理することになる。 最高カウント周波数は、このままでは約 4MHz程度までだが、内蔵のプリスケーラーで分周してから
カウントさせることで、さらに高い周波数までカウントさせることが可能になる。 が、このプリスケーラーは
2のn乗にしか分周できないので、ゲートタイムを調整する等で帳尻を合わせることが必要なので注意しよう。
今回は、プリスケーラーなしで約 4MHzまでのモード、1/16の設定で約 16MHzまでカウントできる二種類のモードを用意することにした。
クロック信号の源発振周波数は 16MHzとした。 それをバッファリングした後 12ステージバイナリカウンタ
74HC4040で 1024分周して 15625Hzを作り、RB0/INT端子に加えている。 PIC内部ではさらに 125分周して
125Hzを作り、そこから 125分周で 1秒間、20分周で 0.16秒間のゲートタイムを作り出している。
ゲート回路
- 前述のカウント用入力信号は RA4に加えられているが、実はこのポートを出力に設定するとそれだけで
ゲート回路ができてしまうという便利な機能が備わっていたりする。 RA4だけがオープンドレインのポートになっており、
1を出力すると信号に影響を与えず、0を出力すると信号を GNDレベルに固定することができるのである。 実際には
入力信号を GNDにショートすることになってしまうので、適当な値の抵抗を通して接続することになる。
入力アンプ
- C-MOSのインバータ 74HCU04を抵抗で負帰還をかけてアナログアンプとして使い、その後にシュミットトリガーを配置して
波形整形回路として使っている。 実はこの前段に FETによるアンプを入れたかったのだが、16MHzまで増幅できる
アンプはそこそこマジメに作らないといけないので、何だかんだと後回しになってしまっている (^^;;
ま、このままでも少し感度が悪くて入力インピーダンスが低いだけで、実用上はさほど問題はないはずだが・・・
◇制御部基板のイメージは・・・
表示部にくらべて大きな部品がないため、スッキリとまとまっているという印象かな。 決してPICマイコンの
外付け部品が少ないという訳ではないのだが、主要パーツは ICがメインなので、実際横に並べてみてもそれほどには感じないのが幸いだ。
制御部の方は、今回もロジック ICの GNDは銅箔テープを使用し、GNDを除く主要部分の配線には UEWを使用してまとめてみた。
■ 資料はこちら
基板拡大イメージ
裏面
回路図