忍者ブログ
ようこそ!JQ2RVNのブログです。 PICを使っていろいろな物を作ろうと画策中です。
[1] [2] [3] [4] [5] [6] [7] [8]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

FM無線機のカタログなどで、よくクワドラチャ検波という言葉を見る。
パケット通信なんかで使っているFSKも、一種のFMなわけで
ならばこの方法が使えるのではないかと。。。

調べてみると、
90度位相をずらした信号を掛け合わせる
らしい・・・

なんともわかりずらい表現だなぁ~

大体、単に90度位相がずれたと書いてあるけれど、
何に対して90度なのか?何をずらすのか?がわからん。

ということで、FM検波用のICのデータシートを見てみた。
これがクワドラチャ検波なのか?と言われれば自信はない。
けど、うまくいったので使ってみようかと思います

やった方法は、入力信号をf(t)とし、中心周波数の周期をTcとすると
f( t ) * f( t - Tc/4 )を求めるということのようだ。

数学的な意味は・・・
f( t ) = sin ( ωt )とすると
f( t ) * f( t - Tc/4 ) = sin( ωt ) * sin ( ω(t - Tc/4 )) 

ここで三角関数の積和の公式を利用すると、
1/2 ( cos A+B ) - 1/2 (cos A-B)
つまり、周波数2倍の波と、周波数0の波(つまり直流)が出てくる。

ここでLPFで2倍の信号をカットすると、直流のみがでてくる。

さて、その直流の値は・・・
cos( A-B ) = cos ( ω*Tc/4 )

ここで、ω = 2πf , Tc = 1 / fcだから、
=> cos ( π / 2 * f / fc )

もし、f = fcならば、cos( π/2 ) = 0
f < fc ならば、cos( ) > 0     (第Ⅰ象限)
2fc > f > fc ならば cos( )<0  (第Ⅱ象限)
となる。

つまり、Bell202の場合だと中心周波数は1700Hz
スペース(1200Hz)が入力されているときは正。
マーク(2200Hz)が入力されているときは負。
となる。

MPLAB SIMで、シミュレートしてみた。
スペース1回→マーク1回→スペース2回→マーク2回の繰り返しです。
結果はdsPICworksで出しました。

45223bfc.jpg


簡単な移動平均フィルタで取り除いただけなので、高調波が出ています。
定常な状態なら、高調波は減衰しているのでゼロクロスできません。
遷移状態のとき、高調波はゼロクロスしてくる可能性はありますが、
チャタリング対策のときと同じように何回かチェックすればいいと思います

PR
dsPICでADCのコーディングをしてて、ドつぼにはまった。


dsPICは結果を保存するバッファが16ある。
自動的に複数のチャンネルをスキャンしたり、
一定時間ごとに何点かの値が取得できて便利なんだけど・・・
データの入り方でハマった。

今回は4つサンプルを採って、それをFIR & Decimationしようとしていた。
ここで何も考えず、InputSignal[i]=ReadADC12(i);としてしまった。
FIRDecimate()関数に渡す配列は、添え字が大きい方が古いデータとなる。
つまり、InputSign[0]が最新で、InputSign[3]が最古である。
しかし、ADCのバッファは、ADCBUF0が最古でADCBUF3が最新。

したがって、上のように配列に転送すると、新旧が逆転する。
これじゃ、正常にデータが出てくるわけがない!

結局Cで作っても良かったが、アセンブラを組んで新旧がそろうようにした。



次のハマり。
MPLAB SIMで、ADCの入力をシミュレートしていた時の話・・・
Excelでデータを作ったが、ここが曲者である。

DSPとの親和性を考え、ADCの数値は固定小数点で入るように設定した。
そして、単純にExcelでも固定小数点に変換して出力した。
しかし、Excelから出した値と、ADCのバッファに入っている値が違っている。

ということで、気がついた。
入力する値は、ADCモジュールそのものが得た値でなければならないことを。

ADCが12ビットの場合、次のような流れで処理される。

ADCモジュール →4ビット左シフト → +0x8000 → ADCBUFx

たとえば、モジュールから1が出力されたら、
0x0001 → 0x0010 → 0x8010 と変換される。

なので用意するデータは・・・
=INT(2048*x+2048)
とExcelで行っておくだけでよい。


忍者ブログ [PR]
カレンダー
02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
プロフィール
コールサイン:
JQ2RVN
性別:
男性
自己紹介:
PICの開発を勉強中です。
目標はPICTNCの高性能版を作ること。
まずは、本家を解析しています。
最新コメント
[04/23 Eolande]
[04/16 太田和巳(JF2UJG)]
[09/10 je7ifp]
[08/06 JQ2RVN]
[08/03 OVC]
最新トラックバック
バーコード
ブログ内検索
アクセス解析