迷走の果て・Tiny Objects

迷走する日々の覚え書きです。自分で分かってることは省略してますので、念のため。

PSoCでレシプロカル式周波数カウンタ

私が作ったのではありません。
こちらPSoCの部屋カウンタの実験で詳しく記されています。
1KHz以下ではレシプロカル式・すなわち周期を測定し逆数を計算して周波数を求めています。このときの分解能は0.1Hzで、直接計測式でこの分解能を実現しようとするとゲートタイム10秒になってしまい実用的ではありません。
早速実験、とりあえずPSoC単体で試しました、入力アンプは付けていません。

psocfcounter080522_2手持ちのパルスジェネレータで300Hzを入力したところ。

psocfcounter080522_11.2KHzを入力したところ。

直接計測式とレシプロカル式が切り替わっています。
いやぁ、いいですね、これ。
スポンサーサイト

さて何メガまで測れるのか?

以前作ったオシレータを繋いでみた。
dfcounter080520_2このオシレータの上限は約30MHzなんだけどどうやら問題なくカウント出来ているようだ。
ちなみにLCD右上の数字が電池の電圧、右下が温度。

デュアル周波数カウンタの回路とプロジェクトファイル

恥ずかしながら公開します。
dfcounter080520_1前に公開した回路図では一部省略がありました。
9Vの電池を使うことを想定して、電池の電圧を表示できるようにしてあります。
さらに温度センサのLM35DZを使って温度を表示しています。
プロジェクトファイルは
http://briefcase.yahoo.co.jp/konyack2001
に置いてあります、PSoCというフォルダの
DualFcounter2946.lzh
です。かなりいい加減なコーディングです(汗)

続・1カウントの誤差について

dfcounter080516_1入力をCPUクロックに繋いでみた結果が、左の写真。
当然12,800,000Hzとなるはずだと思ってたんですが・・・。
何でやねん??1カウント多い。
配線ミスかプログラムのバグかと調べたあげく、ようやく前の記事の結論に達しました。
dfcounter080516_5だったら入力信号を反転してやればいいのでは、と思いつき配線を一部変更し、2つあるカウンタの1つにを反転した入力信号を入れてみました。
ちなみに74AC00は74HC132に、74AC393は74HC393に変更してあります。
配線も一部変更してます。
74ACシリーズは高速な分、グランドや電源ラインに注意が必要で、今回は撤退します^^;

dfcounter080516_3結果、入力信号を反転したカウンタ部はめでたく12,800,000Hzとなりました。

dfcounter080516_4などと喜んでいられません。
入力に何も繋がないのに信号反転したカウンタ部は1Hzという表示が・・・。
これは想定内の結果で、前回の記事で入力がHレベルのままなら当然こうなります。
で、思いついたのが2つのカウント結果を比べて小さい方を採用すればいいんじゃないか。

でもなぁ、今回の実験ではゲートパルスと入力信号は同期しているけど、実際の周波数測定では非同期があたり前田のクラッカー(古^^;)なんだし、そこまでする必要があるのかどうか。



周波数カウンタにおける1カウントの誤差について

ゲートパルス080516周波数カウンタのおおざっぱな構成は左図の通り、ゲートパルスが開いている間に入力信号をカウンタで数えて表示すると周波数カウンタになる。
ゲートパルスの幅が1秒ならその間に数えたパルス数が周波数になる。

さて真ん中の図のタイミングを考えてみる。
ゲートパルスの幅は1秒、入力の周期も1秒、すなわち周波数は1Hz。
ゲート出力は入力とゲートパルスのAND(論理積)なので、ゲート出力は図のようになりカウンタは2進む。
すなわち2Hzとカウントされてしまう。

下の図のタイミングでは1Hzとカウントされる。

図ではわかりやすくするために入力は1Hzとしたが、これが1KHzでも1MHzでも同じである。
要はゲートパルスと入力のタイミングによって1カウントの誤差が生ずることになる。


久々にPSoC周波数カウンタ・デュアル

dfcounter080514_1PSoCを使ったデュアル表示の周波数カウンタ。
ストロベリー・リナックスのPSoCマイコンボードに組み込んだ。
PSoCの内蔵オシレータは精度がよくないので、秋月電子の高精度クリスタルモジュール外部クロックとして使っている。ただ発振周波数が12.8MHzなので測定できるのは半分以下の約6MHzまでとなってしまう。
単純にカウンタ(プリスケーラ)を付けただけでは分解能が悪くなる、そこでカウンタの出力を読み込むことにした。
dfcounter080513_5そのためカウンタの前にゲートが必要になる、またカウンタのリセットもしなければならない。
ここでは74AC00と74AC393を使ってみた、100MHz近くまで動作する高速ICである。
こんな高速なICだとグランドと電源周りをよほどしっかりしておかないとノイズに悩まされることになる。
最初、動作が不安定だったのでグランドや電源ラインを見直して何とか安定動作するようになった。

dfcounter080514_2実験中。

 | HOME | 

文字サイズの変更

プロフィール

edy

最新記事一覧(サムネイル画像付き)

DABP(Dual Amplifer Band Pass)フィルタとGIC(Generated Immitance Converter)の解析 Aug 22, 2017
百均のUSB LED電球(2) Aug 13, 2017
百均のUSB LED電球 Aug 11, 2017
状態変数型バンドパスフィルタ(2) Aug 05, 2017
状態変数型バンドパスフィルタの解析、発振回路に応用するため。 Jul 30, 2017
CJMCU Beetleを試す Jul 29, 2017
Arduino 互換ボード SS MICROを試す Jul 22, 2017
店の電飾(3)無限鏡(infinity mirror) Jun 25, 2017
店の電飾(2)回路の変更とスケッチ Jun 25, 2017
店の電飾 Jun 18, 2017

全記事表示リンク

全ての記事を表示する

ブログリンク

リンク

このブログをリンクに追加する

月別アーカイブ

08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  12  11  10  09  07  05  04  03  04  03  01  12  11  10  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  04  02  01  12  10  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  05  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  10  09  08  07  06  05  04  03  02  01 

カテゴリ

プログラミング (0)
freescale (1)
AVR (3)
テルミン (16)
緊急警報放送 (3)
78K (1)
PSoC (295)
地上デジタル放送 (2)
電子工作 (410)
HX711 (2)
ACS712 (6)
数学 (6)
パソコン (12)
PLC (14)
未分類 (39)
ブログ関係 (20)
スカイプ (37)
ロボット (1)
LTSpice (8)
OCXO (0)
arduino (32)
maxima (1)
フランクリン発振回路 (3)
GPS (3)
DTMF (1)
Linux (1)
KOMAINO (7)

タグリスト

最近のコメント

最近のトラックバック

メールフォーム

名前:
メール:
件名:
本文:

検索フォーム

アクセス

RSSリンクの表示

フリーエリア

FC2Ad

まとめ

Template by たけやん