あるエンジニアの回想録

ブログ始めました!ネタとしては自分がもともと専門であった電気工学系が中心です。時々時事ネタもいれます。

ちょっとだけデジタル信号処理

[ リスト | 詳細 ]

記事検索
検索

全13ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 次のページ ]

前回は、FMCW の周波数が上昇する場合と下降している場合で FFT を掛けた結果が異なるので対象物の距離と速度が計算できるはず、と説明しました。数値というか桁が大きく離れてしまっているので、スクリプトで使った数値は結果のみを用いてこれが最初の FMCW の変調周波数と関係からどう算出するかを見てみることにします。

まず上昇の方ですが、周波数変調の傾きを 100 GHz / s として 1 ms の期間観測していたとすると、仮に静止していた場合は FFT の結果が 2 BIN(前回のグラフ緑線参照)ですから、1 ms の期間内で 2 BIN が検出されたということで、500 Hz が検出されたことになります。よって 100 GHz / s で 500 Hz の周波数差があったわけですから、500 Hz / 100 (GHz /s ) x 3e8(m/s) / 2(往復) = 0.75 m のところに対象物があったことになります。

では逆にレー
ダと対象物が接近してというか目の前(距離 = 0)だったらどうなのかというと、やはり 500 Hz が検出されていたことになりますので、受信信号の遅延はゼロですからこれはすべてドップラー効果によるものと見なせます。もし近付く方向であるならば(衝突していることになりますがそこはスルー。すれ違いでも同じことになる)送信周波数より高くなってしまいますが、ここでは遠ざかる方向のみ考えます(FFT 上の位相などを調べれば分かりますが細かくなるので先送りです)。ドップラー効果は往復で発生していますので、実際の遠ざかる速度はその半分の 250 Hz ということで、76.99999975 GHz = 77 GHz x (3e8 - vo)/ 3e8 となって。これを解くと、vo = 0.97 m /s となります。以上から上昇中に得られた 2 BIN が表す距離と速度の関係は、横軸を距離、縦軸を速度と取ると

v0 - 0.97 m /s = -(0.97 / 0.75) x r0
∴ v0 = - 0.013 x r0 + 0.97


同様に周波数が下降の時を調べてみると、この時は 6 BIN だったので対象物が静止していた場合の距離は 2.25 m、対象物が接していた場合の速度は、2.92 m / s となりますので、
v1 - 2.92 m /s = -(2.92 / 2.25) x r1
∴ v1 = - 1.13 x r1 + 2.92


ということで実際には v0 = v1、r0 = r1 ですから連立方程式が作られ、これを解くと r = 1.74 m、v = 0.95 m / s が得られ、この場合は遠ざかる方向に移動している、ということになります。

ちょっと数値換算に無理があるため、計算間違いをやっている可能性があります。ご興味のある方はチェックしてみて下さい。
だいたいの流れは合っていると思いますが、大事なのは実際の応用の中でどのくらいの桁と精度で動いているものなのかをすばやく見積もることで、これを注意していないと折角いい方法が思いついても実用的でなかったり、設計時に数値の入れ方が悪かったりするので、本当に何かに役に立てたい方は必ず数値を抑えるようにすることをお勧めします。

今回は自信のない説明になってしまいました。ご容赦。で、クリックをよろしく。

イメージ 1 ← にほんブログ村「科学」−「技術・工学」へ
 ↑ クリックをお願いします。
  

この記事に

開く コメント(0)

前々回は物体に対して照射する電波の周波数を変化させて、戻ってきた電波との周波数差がビート信号という形で現れることを利用して、物体の距離を検出する方法を解説しました。前回では仮に物体が 2 つあっても距離が違えば FFT による分析でいずれも検出できることを説明しました。
では、検出したい物体が動いていたらどうなるのでしょうか。
ドップラー効果というのを思い出して見ましょう。

wiki ではこちら。

ドップラー効果
https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%83%E3%83%97%E3%83%A9%E3%83%BC%E5%8A%B9%E6%9E%9C

この理論というか効果は FMCW レーダにも現れることが容易に想像できるかと思います。つまり距離に応じた周波数差が送受信信号に現れているのに加えて、さらに受信信号には物体とレーダとの間に相対速度を持っていた場合ドップラー効果による周波数差が加算されるということです。
どういうことかというと、前回までの例では距離の遠いところにある物体は戻ってくる時間差の関係で周波数差も大きく見えて距離が検出されました。ところがその物体がレーダに近付きながら移動している場合は、戻ってくる周波数が高くなるのでその時に発信している周波数に近付くことになり、物体との距離が近くにあるように検出されてしまいます。
これでは検出精度に欠くというか、場合に因っては事故につながってしまうので、物体が動いていることも検出しなくてはいけないです。
で、現実にどのくらいの周波数差が出るか数値を抑えておくことにします。

前に計算したように、ミリ波としては 77GHz ± 0.5 GHz の範囲とし 10ms ぐらいを照射するものとします。周波数変調係数は 100 GHz / 1 s になります。10 m 先の対象物にミリ波が当たって戻ってくる時間は往復で 20 / (3 x 10^8) = 66.7 ns ということになります。これが遅れ時間として受信波になるわけですから、その瞬間の送信周波数の差は 100 GHz x 66.7 ns = 6.67 KHz となります。
さてここでその対象物が時速 36 Km でレーダに向かって移動してきているものとします。光速との差は結構ありそうですが、先ほどの Wiki の記事を引用すると、

観測者(ここでは対象物)も音源(ここでは発信源)も同一直線上を動き、音源 S(source)から観測者 O(observer) に向かう向きを正とすると、
イメージ 1
となる。ここで、f':音源の出す音波の振動数、V:音速(ここでは光速)、vo:観測者の動く速度、vs:音源の動く速度 である。
話がややこしくなるのでレーダ自体は止まっていることにして、行きは vs = 0、戻りは vo = 0 と考えるとすると、対象物にミリ波レーダがあたる周波数は、f' = f x (V - vo)/ V となるわけですが、数値を入れて見ると、f' = 77 GHz x (3 x 10^8 + (36(Km/s)/3600)) /  x 10^8 (符号に気をつけて下さい。Wiki の説明は vo も vs も同じ方向であって、向かい合う方向とは定義していません)ということで、256 Hz ぐらいの周波数上昇になります。これが復路でもほぼ同じぐらいの周波数上昇が発生して合わせて 500Hz 以上の周波数上昇になり先ほど 10m 先の対象物は 6.67 KHz と見込に対して、ちょっと無視できない量になってしまいます。逆に言えばこれだけの周波数差を分離できれば、速度が検出できることになります。

今までの説明では照射周波数は時間と共に上昇していました。もしこれを時間と共に周波数が下降するようにしたらどうでしょうか。距離に関しては、送信周波数と受信周波数の差分なので周波数変調が上昇だろうと下降だろうと同じ値になりますが、速度に関してはドップラー効果による周波数の増分(近付いている場合)は、周波数変調が上昇ならばその差分を減らす方向に、周波数変調が下降ならばさの差分を増やす方向に現れます。このことを利用して対象物がいくらの距離にあって、相対速度がどのくらいあるかを知ることが出来ます。
周波数の変化だけについて描くとこんな感じになります。
イメージ 2
青色の線が送信周波数の推移を表していますが、これが対象物に当たって戻ってきたときは赤い一点鎖線のように遅れて来ます。この瞬間の受信信号周波数と送信信号周波数(周波数は瞬間には測定できませんが、ここではミリ波レーダの周波数が十分高いので「瞬間」という言葉を使っています)の差分を検出します。ところが対象物が動いているときはドップラー効果によりオレンジの線のように周波数がせり上がってしまい、実際には緑点線のような受信信号が返ってきます。これと送信信号の周波数比較を行うと、送信信号周波数の上昇時と下降時で差分周波数が異なってしまいます。
直感的に少なくとも距離に関しては、上昇時下降時に検出された差分周波数の平均値が真の距離を表すだろうということは分かると思います。速度に関しては変調周波数の上昇 / 下降の傾きと合わせて考えれば解けそうな予感がします。で、実際可能です。
今回はここの計算式は詳しくは触れません。何しろ周波数差が大きすぎて視覚的理解と数値的理解を同時に満たすような表現が出来なかったからです。

以下、だいぶ実態とは異なりますが確認のためのスクリプトと実行結果を載せておきますので、興味がある方は実行してみて下さい。何となく感じは分かると思います。

// FMCW single reflection
clear;

// initialize
i1=0;
i2=0;
df1=0;
phase=0;
ave_number=64;
size_t=10000; // データサイズ - 1
t=[0:1/size_t:1]; // レーダ照射期間 1 msec 間と仮定すると、1 step:0.1us
f=100; // 最小レーダ周波数 f / 0.1us = 10MHz
Kv=0.0005; // FM 変調量
modu_wave=zeros(1,size_t+1);
send_wave=zeros(1,size_t+1);
receive_wave=zeros(1,size_t+1);
receive_sig=zeros(1,size_t+1);
receive_wave1=zeros(1,size_t+1);
receive_sig1=zeros(1,size_t+1);
ave_out=zeros(1,size_t+1);
ave_out1=zeros(1,size_t+1);

// 周波数変調信号の作成 
for i=0:size_t/2;
    modu_wave(i+2)=modu_wave(i+1)+2/size_t;
end

for i=size_t/2+1:size_t;
    modu_wave(i+1)=modu_wave(i)-2/size_t;
end

// Objest parameter
delay_d1=128;// 対象物1の距離による遅れ時間 0.1us x delay_d1
a1=0.1; // 対象物1から返ってくる受信信号振幅
df=1/size_t*0.025;// 対象物1の速度によるドップラー効果周波数偏差比
f1=f*(1+df); // 対象物1から返ってくる受信信号周期

for i=0:size_t;

    i1=i1+i;
    df1=df1+df*2; // ドップラー効果が往復で発生している
    phase=phase+modu_wave(i+1)*Kv;
    send_wave(i+1)=sin(2*%pi*f*(t(i+1)+phase));// 送信信号の VCO の数式化
    receive_sig(i+1)=a1*sin(2*%pi*f*(t(i+1)+phase));// 受信信号の VCO の数式化
    receive_sig1(i+1)=a1*sin(2*%pi*f*(t(i+1)+phase+df1));// 速度を持つ物体の受信信号の VCO の数式化
end

receive_wave(1,delay_d1+1:size_t)=receive_sig(1,1:size_t-delay_d1);
receive_wave1(1,delay_d1+1:size_t)=receive_sig1(1,1:size_t-delay_d1);
out_wave=abs(send_wave+receive_wave);
out_wave1=abs(send_wave+receive_wave1);

for j=1:size_t-ave_number+1
    for k=j+1:j+ave_number
        ave_out(j)=ave_out(j)+out_wave(k);
    end
   
    for k=j+1:j+ave_number
        ave_out1(j)=ave_out1(j)+out_wave1(k);
    end

end

    ave_out=ave_out/ave_number
    ave_out1=ave_out1/ave_number
   
scf(1000);clf(1000)
subplot(6,1,2);
plot(t,send_wave)
mtlb_axis([0, 1, -1.0 ,1.0])
subplot(6,1,1);
plot(t,modu_wave)
mtlb_axis([0, 1, 0 ,2.0])
subplot(6,1,3);
plot(t,receive_wave,t,receive_wave1)
mtlb_axis([0, 1, -0.5 ,0.5])
subplot(6,1,4);
plot(t,send_wave+receive_wave,t,send_wave+receive_wave1);
mtlb_axis([0, 1, -1.0 ,1.0])
subplot(6,1,5);
plot(t,out_wave);
mtlb_axis([0, 1, -1.5 ,1.5])
subplot(6,1,6);
plot(t,ave_out)
mtlb_axis([0, 1, -0.1 ,1])

out_wave=out_wave-mean(out_wave) // DC cut
out_wave1=out_wave1-mean(out_wave1) // DC cut

scf(1004);clf(1004)
plot([0:2047],20*log10(abs(fft(out_wave(2800:4847)))),'r',[0:2047],20*log10(abs(fft(out_wave1(2800:4847)))),'g')
mtlb_axis([0,20,-10,60])
scf(1005);clf(1005)
plot([0:2047],20*log10(abs(fft(out_wave(5500:7547)))),'r',[0:2047],20*log10(abs(fft(out_wave1(5500:7547)))),'g')
mtlb_axis([0,20,-10,60])

イメージ 3
イメージ 4


イメージ 5 ← にほんブログ村「科学」−「技術・工学」へ
 ↑ クリックをお願いします。

  

この記事に

開く コメント(0)

このトピックを取り上げてから 1 年近く空いてしまいました。数値的な例を挙げての説明が難しくてなかなか手が進みません。
今回はミリ波を発信してから、距離の違う 2 つの物体から反射があったと想定してみます。

とはいっても今までの説明の中で結果を想像するのはさほど難しくなくて、2 種類のビート信号が現れるのでそれらを FFT で抽出できるか、ということになります。
今回も数値的な合わせ込みをしていません。だいたいこんな風に振る舞っているというマクロ的な理解をして下さい。

波形はこんな感じになります。
イメージ 1
スペクトラムはこうなります。 x = 6 と x = 16 のところにピークが現れています。ミックス信号を見るとどこにいるのかわからないようなレベルですが、分離は出来ています。
イメージ 2
スクリプトはこうなっています。

// FMCW single reflection
clear all;

// initialize
i1=0;
i2=0;
size_t=2000;
t=0:size_t;
f=50;
Time=size_t/f;
send_wave=zeros(1,size_t+1);
receive_wave1=zeros(1,size_t+1);
receive_wave2=zeros(1,size_t+1);

// Objest parameter
delay_d1=100;// 対象物1の距離による遅れ時間
a1=0.1; // 対象物1から返ってくる受信信号振幅

delay_d2=300;// 対象物2の距離による遅れ時間
a2=0.02; // 対象物2から返ってくる受信信号振幅

for i=0:size_t;

    i1=i1+i;
    send_wave(i+1)=sin(2*%pi/Time*(i+0.001*i1));// VCO の数式化

end

receive_wave1(1,delay_d1+1:size_t)=a1*send_wave(1,1:size_t-delay_d1);
receive_wave2(1,delay_d2+1:size_t)=a2*send_wave(1,1:size_t-delay_d2);
receive_wave=receive_wave1+receive_wave2

scf(1000);clf(1000)
//subplot(7,1,1);
//plot(t,t)
//mtlb_axis([0, 2000, 0 ,2000])
subplot(6,1,1);
plot(t,send_wave)
mtlb_axis([0, 2000, -1.0 ,1.0])
subplot(6,1,2);
plot(t,receive_wave1)
mtlb_axis([0, 2000, -1.0 ,1.0])
subplot(6,1,3);
plot(t,receive_wave2)
mtlb_axis([0, 2000, -1.0 ,1.0])
subplot(6,1,4);
plot(t,receive_wave)
mtlb_axis([0, 2000, -1.0 ,1.0])
subplot(6,1,5);
plot(t,send_wave+receive_wave);
subplot(6,1,6);
out_wave=abs(send_wave+receive_wave);
plot(t,out_wave);
mtlb_axis([0, 2000, -1.5 ,1.5])

out_wave=out_wave-mean(out_wave) // DC cut

scf(1004);clf(1004)
plot(20*log10(abs(fft(out_wave(1:2000)))))
mtlb_axis([0,50,-10,60])

次はちゃんと係数を合わせることになるでしょうか。さすがに桁の違う信号を扱うので処理に工夫が必要です。もう少々お待ち下さい。

イメージ 3 ← にほんブログ村「科学」−「技術・工学」へ
 ↑ クリックをお願いします。
  

この記事に

開く コメント(0)

前回は短い時間の固定周波数を発生させて、それが戻ってきた時間を調べることで距離を算出できそうと云うことだったのですが、実際は短い距離の場合は周波数を発生させている最中に信号が返ってきてしまうので、これでは使い物にならなそうということでした。
ではどうすれば良いのかというと、信号が返ってきたときの送信中の周波数が違っていればいいわけで、そこにわずかながらでも周波数差が存在すればビートという現象が起きますので、そのビートの周波数を検出できれば遅れ時間が分かると云うことです。

イメージとしては以下のような波形になります。
イメージ 1
分かりやすくするためにかなり極端な周波数設定になっていますが、送信波の周波数は時間と共にこの場合は上がっていきます。それに対して対象物からの反射波は信号レベルが下がって、かつ遅れて戻ってきます。
送信信号の一部と、受信信号がミキサーと呼ばれる回路で合成されると混合信号のように、周波数差によってビートが発生します。このビート成分は遅れ時間に依存し、このビート成分の周波数を分析するために検波(ここでは絶対値演算)します。
そしてこの検波信号を FFT に通せばビート信号周波数が分かり、遅れ時間が分かって距離として算出されます。
FFT した結果は以下のようです。FFT を通す前に DC カットを行っています。
周波数 6bin のところにピークが現れていますが、これが距離を表しています。
イメージ 2
実際に FFT を掛けるには、ADC を通さなくてはいけません。ところがこれらの周波数は 20 GHz 以上で 77 GHz のものもありますので、それらを正しく ADC で取り込むのは不可能ですし、出来たとしても結局情報としては不要なものなので、適当なアナログフィルタでカットしておきます。

数値としてどんな感じになるのかは把握しておきましょう。
法律的な制約から市中で連続的に電波を出せる時間は決まっているようです。ここでは 10 ms ぐらい出しているものとします。また周波数推移の幅も制限を受けているようなので、ここでは 77GHz ± 0.5 GHz の範囲で使うものとします。
± 0.5 GHz を 10 ms の時間で変化させるわけですから、100 GHz / 1 s ということになります。
仮に対象物が 10 m 先にあったとします。送信波が対象物に当たって返ってる距離は往復で 20 m となり、空気中の電波の伝搬速度は 3 x 10^8 m / s ですから、戻ってくるまでの時間は 20 / (3 x 10^8) = 66.7 ns ということになります。
この時間遅れてくるので、受信波とその瞬間の送信周波数の差は 100 GHz x 66.7 ns = 6.67 KHz となります。周波数は連続して変化していますので、ある程度の期間観測をすればこのビートの周波数が見ててくる、ということです。
10 ms の区間で 66.7 KHz を検出しようというわけですから、観測区間内で約 6 bin の周波数が FFT の結果として得られることになります。
先ほどアナログフィルタで ADC をする前に高い周波数成分をカットしておく、と書きましたが見ての通り桁が違います。エイリアシングを起こさない程度のフィルタで良いので、簡単な CR フィルタでも十分でしょう。
車載用だとこの位の距離は検出したいところですので、数値としては当たらずとも遠からずというところでしょうか。
航空機レーダなどだともっと距離のあるところを検出しようとするので、周波数や振り幅などは変わってくると思います。

最後に計算スクリプトを載せておきます。

// FMCW single reflection
clear all;

// initialize
i1=0;
i2=0;
size_t=2000;
t=0:size_t;
f=50;
Time=size_t/f;
send_wave=zeros(1,size_t+1);
receive_wave=zeros(1,size_t+1);

// Objest parameter
delay_d1=100;// 距離による遅れ時間
a1=0.1; // 対象物から返ってくる受信信号振幅

for i=0:size_t;

    i1=i1+i;
    send_wave(i+1)=sin(2*%pi/Time*(i+0.001*i1));// VCO の数式化

end

receive_wave(1,delay_d1+1:size_t)=a1*send_wave(1,1:size_t-delay_d1);

scf(1000);clf(1000)
subplot(5,1,1);
plot(t,t)
mtlb_axis([0, 2000, 0 ,2000])
subplot(5,1,2);
plot(t,send_wave)
mtlb_axis([0, 2000, -1.0 ,1.0])
subplot(5,1,3);
plot(t,receive_wave)
mtlb_axis([0, 2000, -1.0 ,1.0])
subplot(5,1,4);
plot(t,send_wave+receive_wave);
subplot(5,1,5);
out_wave=abs(send_wave+receive_wave);
plot(t,out_wave);
mtlb_axis([0, 2000, -1.5 ,1.5])

out_wave=out_wave-mean(out_wave) // DC cut

scf(1004);clf(1004)
plot(20*log10(abs(fft(out_wave(1:2000)))))
mtlb_axis([0,50,-10,60])

イメージ 3 ← にほんブログ村「科学」−「技術・工学」へ
 ↑ クリックをお願いします。

  

この記事に

開く コメント(0)

前回、ミリ波レーダの前振りをして今回は FMCW という現実的な方法を説明しようと思っていましたが、前回の最後にちょっと触れた短い時間電波を照射してそれが反射して戻ってくるまでの時間を測定するという方法を「もしこれでやろうとするとどうなるか」を少し深掘りしてみようと思います。こういう妄想は頭のトレーニングになると信じていて、要は課題達成、問題解決のための引き出しを増やすことになるのではないかと思っています。

前回軽く計算したとおり、電波を何かに照射して戻ってくる時間を測定した場合、戻ってきたときには発信電波は終わっていないといけないので(受信アンテナ=送信アンテナの場合。違っても回り込まれたら同じ)、たとえば 10m を測定しようとしたら 67ns となってエネルギー的に短そう、かといって長い距離だけを測定しようとすると反射電力が小さいので(後で触れます)これも難しそうということでした。
その辺りの事情は置いておき、対象物の反射率が高くて、またアンテナの指向性も強いとしてそれなりの S / N で電波が戻ってくると云う前提とします。

そうならば、アナログ的には送信波、受信波を BPF などの強い共振回路を通して信号波の存在を確認して、それらの時間差を測定すればいいわけです。ただ、強い共振回路だとノイズに対しても勝手な共振信号を作ってしまうので、さじ加減が難しそうです。

デジタルでやる場合はどうでしょうか。デジタルフィルタで BPF を作ったらアナログ共振回路と同じことが起きて、ちょっとしたノイズをきっかけに共振周波数が続いてしまいそうです。そこで DFT というか、当該周波数の正弦波と余弦波を重畳してそのベクトル和を積分することで信号の存在が確認する方法が考えられます。

scilab スクリプトで確認してみます。

clear
rand('seed',0) // 乱数のもと

N=10000; // ポイント数
randomdata=((rand(1,N,'uniform'))-0.5) // 乱数発生

noise_m=0.1 // ノイズレベル
attenation=0.2 // 受信信号レベル

n=[1:N]
t(n)=(n-1)/N
t=t'

frequency=200 // 発振周波数
frequency1=200 // 評価周波数
sig_size=1000 // 発振周波数の長さ
t_delay=1600 // 戻ってくるまでの時間
sig_start=1001 // 送信信号のスタート時刻
sig_end=sig_start+sig_size-1 // 送信信号の終了時刻
rec_start=sig_start+t_delay // 受信信号のスタート時刻
rec_end=rec_start+sig_size-1 // 受信信号の終了時刻

s_sin=sin(2*%pi*frequency1*t) // 重畳正弦波
s_cos=cos(2*%pi*frequency1*t) // 重畳余弦波

sig(n)=0
sig(sig_start:sig_end)=sin(2*%pi*frequency .*t(1:sig_size)) // 送信信号生成
rec(n)=0
rec(rec_start:rec_end)=sin(2*%pi*frequency .*t(1:sig_size)) // 受信信号生成

rec_act=sig+attenation*rec+noise_m*randomdata' // トータル信号

mix1=s_sin.*rec_act // 正弦波重畳
mix2=s_cos.*rec_act // 余弦波重畳
s_power=abs(rec_act) // 受信信号レベル

// clf(1);scf(1);plot(t,mix1,t,mix2,t,s_power)

s_filter(1:N)=0

for i=1:N-sig_size
    s_filter(i)=(sum(mix1(i:i+sig_size-1))^2+sum(mix2(i:i+sig_size-1))^2)^0.5 // 信号照射時間単位での総レベル
   
    if s_power(i+1) < s_power(i) // レベル信号のピーク検出
        s_power(i+1)=s_power(i)*0.99
    end
    
end

delay=200
d_filter(1:N)=0

d_filter(delay+1:N)=s_filter(1:N-delay) // 距離検出のための遅延信号

pulse(1:N)=0
p_window(1:N)=0

for j=1:N
    if d_filter(j)>s_filter(j) // コンパレータ
         pulse(j)=1
    end
    if s_power(j)>0.1 // ウィンド生成コンパレータ
        p_window(j)=1
    end
end

s_filter(N-sig_size:N)=0
s_power(N-sig_size:N)=0

sig_axis0=[0,1,0,1.5]
sig_axis1=[0,1,-1.5,1.5]
sig_axis2=[0,1,0,0.5]

clf(100);scf(100);
subplot(4,1,1);plot(t,rec_act)
mtlb_axis(sig_axis1)
title('Received signal','fontsize',4)
xlabel('Time','fontsize',2)
ylabel('Level','fontsize',3)

subplot(4,1,2);plot(t,s_power,t,p_window)
mtlb_axis(sig_axis0)
title('Burst signal','fontsize',4)
xlabel('Time','fontsize',2)
ylabel('Level','fontsize',3)
legend('Burst signal','Signal window')

subplot(4,1,3);plot(t,s_filter/sig_size,t,d_filter/sig_size)
mtlb_axis(sig_axis2)
title('Filtered signal','fontsize',4)
xlabel('Time','fontsize',2)
ylabel('Level','fontsize',3)
legend('Filtered signal','Deleyed signal')

subplot(4,1,4);plot(t,pulse,t,pulse.*p_window)
mtlb_axis(sig_axis0)
title('Position pulse','fontsize',4)
xlabel('Time','fontsize',2)
ylabel('Level','fontsize',3)
legend('Peak position','Position pulse')

そこかしこにコメントを入れておきましたが、照射時間単位で受信信号と正弦波余弦波それぞれを重畳してからその総和を取って、三角波のようなものを作り、そのピーク位置を検出するためそれを遅延したものとを比較して、ピーク位置が立ち上がりになるようなパルスを作ります。
で、その立ち上がり時間差が照射〜反射〜受信の時間を表す、というものです。
遅延と比較することでピーク検出できるからくりは、こちらをご覧下さい。

ピーク検出をしたいけど、微分器は難しい。
http://blogs.yahoo.co.jp/susanoo2001_hero/7543384.html

この方式は同じレベルが続くとノイズで余分なパルスが出まくるので、受信信号の絶対値を取ってピーク検出を行い、送信波、受信波が存在している領域をウィンドとして取得しておき、ノイスを除去します。

結果はこんな風になりました。
イメージ 1
一番下の緑の線の立ち上がり時間差を観測すれば距離を算出することが出来ます。

いかがでしょうか。上手くいきそうでしょうか。出来ないとすれば何が障害となるのでしょうか。

やはり S / N が気になりますね。それと周波数をどうするかが難しいです。ミリ波を使ったらどうなるかというと、その周波数をサンプリングする A / D コンバータが必要ですが、ちょっと技術的にどうか。かといって周波数を下げていくとアンテナは大きくなるし、指向性が悪くなります。一般にミリ波帯域だと光に周波数が近づいているので、直進性を良くすることが容易と云われています。

ただサンプリング周波数の話は解決手段があって、受信信号全体に一旦周波数の違う信号を足してビートを起こさせて、そのビートから送信タイミング、受信タイミングを検出する方法があります。いわゆるヘテロダインという方法です。
仮にそれでサンプリングの問題は解決したとしても大変そうですかね。
ところで今述べたヘテロダインという方法は FMCW 方式で出てきますので、今回はその前振りも兼ねています。(後付け)
  

この記事に

開く コメント(0)

全13ページ

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[ 次のページ ]


.
柳屋画蔵
柳屋画蔵
男性 / AB型
人気度
Yahoo!ブログヘルプ - ブログ人気度について
検索 検索
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
 今日全体
訪問者71147050
ブログリンク01
コメント0137
トラックバック03

スマートフォンで見る

モバイル版Yahoo!ブログにアクセス!

スマートフォン版Yahoo!ブログにアクセス!

世界難民の日特集

[PR]お得情報

暑中見舞いを送って当てよう!
綾鷹にごりほのか
10万名様プレゼントキャンペーン
期間限定商品が半額で食べられる!
7月末まで安楽亭にてフェア開催中。
更にポイントも!<トクプレbyGMO>
Tポイントが\ドンドンたまる/1枚!
最大10,000ポイント進呈
Yahoo! JAPANカード<年会費永年無料>
プレモノインフォレターを購読して
最新キャンペーン情報をもらおう!
(※ログインして設定画面に進む)

その他のキャンペーン


みんなの更新記事