國外大神自制6GHZ FMCW Radar開源項目: https://github.com/Ttl/fmcw3
引言
之前我做過一個簡單的調頻連續波(FMCW)雷達,能夠探測到100米范圍內人體大小的物體。雖然它確實能用,但由于預算有限,還有很大的改進空間。
FMCW雷達工作原理
如果您讀過我之前的文章,應該知道FMCW雷達的工作原理,但為了完整起見,下面給出一個簡短的解釋:調頻連續波 (FMCW) 雷達的工作原理是發射一個頻率隨時間線性變化的啁啾。該啁啾隨后通過天線輻射出去,被目標反射,并被接收天線接收。在接收端,延遲的接收信號和發射啁啾的未延遲副本被混頻(相乘)。混頻器的輸出是兩個正弦波,其頻率分別為和波和差波。接收信號的頻率幾乎相同,和波的頻率約為原始信號的兩倍,已被濾除,而差波的頻率在 kHz 到幾 MHz 之間。差頻取決于接收反射信號的延遲,從而可以確定反射信號的延遲。電磁波以光速傳播,因此可以將延遲精確轉換為距離。當有多個目標時,輸出信號是不同頻率的總和,并且可以通過傅里葉變換有效地恢復到目標的距離。
先前版本的問題
之前版本最大的問題是電源噪聲導致接收信號中出現雜散,ADC 采樣時鐘未鎖定到 PLL 參考時鐘,而且微控制器速度太慢。
為了省錢,我選擇使用兩個降壓轉換器為所有數字和模擬組件供電。即使我將轉換器的開關頻率設置為高于中頻頻率,但在較低頻率下也會出現一些雜散。增加電容并將電感換成屏蔽性能更好的電感可以緩解這個問題,但并不能完全解決問題。正確的解決方法是在降壓轉換器后添加線性穩壓器來消除開關噪聲。
ADC 和 PLL 使用獨立時鐘的問題導致 ADC 的采樣間隔在兩次掃描之間發生變化。最大偏移量僅為±半個樣本,在僅進行距離測量時,這不是什么大問題。然而,當嘗試測量心跳和呼吸頻率時,變化的采樣間隔帶來的額外相位噪聲會導致測量中出現一些噪聲。電源噪聲也會降低相位噪聲性能。解決這個問題的方法很簡單:ADC 和 PLL 使用相同的時鐘。
我使用的微控制器與最便宜的 8 位微控制器相比功能強大,但其性能嚴重不足,無法進行任何數字信號處理。所有的處理能力和內部存儲器都用于通過 USB 將樣本從 ADC 快速傳輸到 PC。ADC 的采樣速度為 10 MHz,由于 DSP 資源不足,每個樣本都需要傳輸到 PC。即使是掃描之間沒有任何有用數據的樣本,也要傳輸到 PC 后丟棄。如果資源充足,就可以進行數字濾波,降低采樣速度,只傳輸有用的樣本。
微控制器實際上沒有足夠的處理能力來執行任何復雜的濾波。例如,一個 100 抽頭的 FIR 濾波器需要對每個樣本進行 100 次乘法和 100 次加法。即使乘法可以在一個時鐘周期內完成,最大采樣率也太低,難以使用。微控制器還應具備足夠的處理能力來傳輸ADC樣本并執行通信和其他邏輯操作。FPGA更適合DSP,因為這些操作可以并行完成。
最后一個改進是添加第二個接收天線。當有多個接收天線時,可以確定接收信號的到達方向。如果返回信號以一定角度到達,則會在不同的時間被不同的天線接收。不同的到達時間會導致中頻信號發生相移,從而可以用來確定方向。
鏈路預算
由于我沒有更換發射器,因此使用相同的喇叭天線時,最大范圍性能應該與上一個版本基本相同。當使用較小的貼片天線作為接收天線時,由于貼片天線的增益和效率較低,范圍會減小。可以使用雷達公式計算探測目標的最大范圍:
其中 Pt為發射功率,G為天線增益,λ為波長,σ為目標的雷達散射截面,Pmin為最小可檢測信號功率。大多數值都很容易確定,但最小可檢測功率的確定卻比較棘手。顯然,可檢測到的最小功率取決于接收機的噪聲水平。接收機輸入端的噪聲是射頻熱噪聲,可以用 kTBF計算,其中 k為玻爾茲曼常數,T為噪聲溫度,B為噪聲帶寬,F為接收機噪聲系數。
確定正確的噪聲帶寬至關重要,但很容易出錯。噪聲帶寬明顯小于掃描帶寬,因為中頻濾波器會濾除大部分射頻噪聲。中頻濾波器帶寬決定了進入ADC的噪聲功率,但這并不是要使用的噪聲帶寬,因為部分噪聲在進行FFT后可以被清晰地濾除。對中頻信號進行FFT時,總射頻噪聲會被平均分配到每個FFT單元。一個FFT單元的帶寬等于接收機的噪聲帶寬,也是計算中應該使用的帶寬。一個FFT單元的帶寬僅取決于FFT的長度。對于FMCW雷達,FFT長度等于一次掃描的長度ts,而一個FFT單元的帶寬等于1/ts。
掃描長度為 1 ms,噪聲系數為 6 dB,接收機輸入端的射頻本底噪聲為 -138 dBm。要使信號可檢測到,其強度應比噪聲高出一定程度。以 20 dB 為所需信噪比,可檢測到的最小信號為 -118 dBm。
將上述值代入雷達方程,可計算得出雷達探測人體大小、橫截面積為 1 平方米的目標的最大探測距離為 320 米。目標大小確實有很大影響,例如,橫截面積為 0.01 平方米的鳥類大小的目標只能在 102 米以下探測到。表中的發射功率略顯保守,因為包含了天線、電纜和 PCB 的損耗。
這對于雷達觀測空中來說是正確的,但當雷達天線以低角度觀測時,雜波問題會降低信噪比。當天線角度較低且雷達位于平坦地面時,基本上每個距離都會有來自地面的回波。來自樹木、建筑物等其他物體的回波也可能與目標信號重疊,從而降低信噪比。
接收器設計
先前的距離計算假設接收器具有足夠的動態范圍來檢測射頻噪底,線性度也足夠好。應特別注意接收器的動態范圍,因為來自天線附近目標的反射功率將遠大于噪底,并且接收器應該能夠同時解析兩個回波。
接收器的噪聲系數應盡可能低,這可以通過選擇具有低噪聲系數和高增益的低噪聲放大器來實現。低噪聲放大器 (LNA) 的增益越高,后續級的噪聲貢獻就越小。高增益的一個缺點是,由于高增益低噪聲放大器 (LNA) 的輸出功率較高,導致 LNA 輸出級、混頻器或中頻放大器更早開始飽和,因此輸入壓縮點會降低。如果輸入壓縮點過低,接收器可能僅因發射天線和接收天線之間的泄漏功率而飽和。在飽和狀態下,接收器不再線性工作,并且會產生許多諧波,這些諧波會被檢測為虛假目標。避免接收機飽和非常重要,這是使用發射機和接收機共用的單天線時的主要問題之一。低輸入壓縮點的雷達具有較高的最小檢測距離,低于該距離時目標的回波會使接收機飽和(檢測盲區?)。選擇低噪聲放大器 (LNA) 增益最終是在噪聲和輸入壓縮點之間做出的權衡。
驅動 ADC 的低頻放大器的噪聲系數和 ADC 的本底噪聲也很重要。運算放大器通常無法使用噪聲系數進行分析,因為端口未匹配到?50 歐姆。正確的方法是將射頻噪聲轉換為 V/sqrt(Hz)。然而,將運算放大器的輸入噪聲電壓密度與 50 歐姆電阻的噪聲電壓密度進行比較,可以得到足夠接近的數值,方便手工計算。通常情況下,由于用于設置增益的電阻,運算放大器的噪聲系數相當高。10 到 20 dB 的噪聲系數通常是一個不錯的估計值。
ADC 存在量化噪聲和輸入噪聲,導致動態范圍有限。 ADC 的數據手冊列出了信噪比 (SNR),其計算方法如下:測量最大振幅正弦波(RF發單音),進行 FFT 變換,然后將信號功率除以所有其他 FFT 區間的噪聲功率。動態范圍可以通過過采樣和濾波來增加。FFT 變換后的本底噪聲明顯優于數據手冊中列出的 SNR,因為不同頻率的噪聲可以被分離。
帶有 FFT 處理增益的 ADC 的動態范圍可以通過以下公式計算:
其中,SNR 是數據表中列出的 ADC 的信噪比 (SNR),fs是采樣頻率,ts是掃描長度。我使用的 LTC2292 ADC 的信噪比為 71.3 dB,采樣頻率為 40 MHz。這使得 ADC 的動態范圍在 1 ms 掃描時為 117 dB。
為確保 ADC 不會限制系統性能,ADC 之后的射頻噪底應高于 ADC 噪底。LNA 輸入端的輸入參考射頻噪聲功率為 kTBF=kTF/ts。
該功率由 LNA 和混頻器(Glna Gmixer)放大。混頻器后的 RMS 輸出電壓可計算為 V=sqrt(Zload*P),其中 Zload是混頻器的輸出阻抗(我使用的混頻器為 200 Ω)。該電壓由中頻放大器(GIF)放大。接下來,將 RMS 電壓乘以 2*sqrt(2)轉換為峰峰值,然后參考 ADC 的最大電壓范圍。最后,取 20log10即可得到以 dBF 為單位的本底噪聲(相對于 ADC 最大輸入信號)。將所有這些代入一個公式中,即可得出:
將上述值代入公式,可得出本底噪聲為-102 dBFs。這比ADC本底噪聲高出15 dB,并且接收器性能不受ADC限制。
FPGA數字信號處理
ADC 采樣率固定為 40 MHz,但這遠遠超出了實際需求。中頻濾波器帶寬僅為 2 MHz,因此從 2 MHz 到 40 MHz 左右,只有噪聲需要濾除。如此高的采樣率是為了避免過采樣導致的混疊和信噪比 (SNR) 升高。需要降低采樣率以使數據量易于管理。如果不進行抽取,數據速率將達到 120 MBps,這超過了 USB 2.0 的數據速率,并且很難存儲在任何地方。將采樣率降至 2 MHz 并將位分辨率提高到 16 位,則可以實現更易于管理的 8 MBps 數據速率。當掃描之間的樣本被丟棄時,數據速率會進一步降低,降低幅度為掃描長度與掃描間隔時間的比率。
可以通過降低 ADC 采樣率或丟棄部分 ADC 樣本來降低數據速率,但這些方法無法通過過采樣獲得信噪比增益。可以對樣本進行平均,但這相當于使用系數為常數 1 的 FIR 濾波器進行濾波,頻譜效果不佳,并且會導致混疊。正確的方法是使用 FIR 濾波器濾除可能產生混疊的頻率,然后進行抽取(丟棄樣本)。這種方法可以提高過采樣帶來的信噪比 (SNR),并避免高頻混疊。(即想拿到過采樣的信噪比增益,又防止數據量過大以及混疊問題?)
與模擬濾波相比,數字濾波的一大優勢在于它可以根據需要實現高精度,無噪聲,并且不需要任何額外的硬件。上圖是框圖中第一個 120 抽頭 FIR 濾波器的頻率響應。使用模擬元件實現這種高階濾波器是不可行的,但數字實現則不然。通過結合抽取和濾波,可以比單純的實現方式更高效地實現。高階濾波器的優勢在于過渡帶可以非常小,從而減少頻譜浪費。
雙通道 120 抽頭 FIR 濾波器在 20 抽取時需要 10 個 DSP 切片。其他濾波器實現為一個具有可重構系數的濾波器,僅需要 2 個 DSP 切片。所有濾波器總共需要 12 個 DSP 切片,而我正在使用的 FPGA 上有 45 個可用的 DSP 切片。通過增加時鐘速度,所需的 DSP 切片數量可以進一步減少,但沒有必要這樣做,因為仍然有足夠的空間。
波束成形
由于與目標之間的距離存在微小的角度差異,兩根天線接收同一目標的反射時,接收信號的相移會略有不同。天線之間的路徑長度差為?dsinθ,其中 d為天線之間的距離,θ為目標的角度。接收信號的相移為 dsinθ/λ,其中?λ為射頻波長。
如果將天線輸出直接相加,則正前方目標的相移相位相同,而位于 dsinθ/λ=-1 角度的目標的相移相位相反,相互抵消。介于這兩個極端之間的角度會受到不同程度的干擾。
波束形成可以通過在信號相加之前對其進行相移來實現。當相移 ?設置為 ?=-dsinθ時,天線方向圖的峰值將偏移角度?θ。要生成用于生成圖像的多個波束,簡單的方法是重復對不同相移的信號進行求和。使用傅里葉變換可以更高效地合成多個波束。對于雷達信號,我們首先要對每個 ADC 信號進行 FFT 以移動到頻域。對應于不同距離的每個 FFT 區間都具有回波信號的幅度和相位。接下來,所有經過傅里葉變換的信號被放置在陣列中,并在天線維度上進行第二次 FFT。這相當于對具有不同相移的信號進行求和。在進行 FFT 之前對陣列進行零填充是必要的,以獲得一定的輸出分辨率。否則,我們只能得到與天線數量相同的波束。
上圖是雙天線陣列的陣列因子。這是假設天線方向圖為全向的波束方向圖。實際陣列的方向圖可以通過將陣列因子乘以單天線的輻射方向圖來計算。
使用八根天線,角度分辨率會更高,當然,天線數量越多,角度分辨率就越高。八個接收通道會大幅增加成本和功耗,但可以將八根天線通過開關連接到兩個接收通道。這樣,所有天線就可以在四次獨立掃描中進行采樣。
由于只有兩根天線時陣列波束寬度非常差,因此很難在圖中看到角度信息。可以通過將測量值乘以一個平移到峰值位置的窗口函數來改善角度可視化。如果距離單元中只有一個目標,則效果很好,但如果有多個目標,那么峰值位于它們之間,窗口函數會使它看起來像只有一個目標。尤其是在墻壁和其他非常寬的目標上,窗口函數會將它們縮小為一個目標,這會帶來問題。
設計PCB
PCB 采用 OSH Park 四層工藝設計,我之前的項目曾多次使用過這種工藝。這是唯一一種比 FR-4 更便宜、材料更優的 PCB 制造工藝。材料是 FR408,與 FR-4 類似,但損耗更低,相對介電常數控制更嚴格。
與之前的版本相比,PCB 尺寸更大。尤其是 FPGA,占用了大量空間。電源也更加復雜,因為 FPGA 需要多個電壓源,而且現在板上還有多個線性穩壓器來消除開關噪聲。當然,第二個接收通道也占用了大量空間。
不過,有些部分比以前簡單多了。之前的中頻濾波器有多個運算放大器,并且具有可變增益。現在只有一個放大級,因為我實際計算過不需要多個放大級。可變增益也被移除,取而代之的是最大化 ADC 的動態范圍,這樣就有足夠的動態范圍來避免需要可變增益。
我在PCB上放置了一個SD卡座,以便在沒有PC的情況下使用,但我還沒有實際編程FPGA來使用它。另外還有兩個連接到FPGA IO引腳的接頭。我還沒有確定它們的用途,但我想到了一些例子,例如連接慣性測量單元進行SAR運動校正、連接控制信號以便在沒有PC的情況下使用以及控制外部天線開關。
焊接
盡管我盡量簡化 PCB,但最終還是有大約 350 個元件,而且很多元件的封裝都很難焊接。
我從更復雜的頂層開始。之前的一些項目里,我習慣先焊接底層,但當底層沒有元件時,在頂層涂抹焊膏會更容易。涂抹焊膏需要使用 OSH 的模板。這次我買了一個更便宜的聚酰亞胺模板,而不是更貴的不銹鋼模板,不得不說,不銹鋼模板的效果要好得多。
右下角的空QFN封裝用于第二級中頻放大器。我為了以防萬一加了它,但最終沒用上。
像我之前的所有項目一樣,我使用回流焊爐自己焊接 PCB。
元件太多,難免會有一些焊接不準確。其中一個元件焊接不正確,可能是因為焊膏涂抹不均勻。我用熱風手動修復了這個元件。
天線
我有以前制作的喇叭天線,但只有兩個,而且由于尺寸較大,不太適合用作接收天線。由于天線尺寸較大,它們需要彼此遠離放置。當接收天線之間的距離超過λ/2時,接收信號的相移在某些角度會超過180度。由此產生的中頻信號與某個較小角度的信號相同,從而導致混疊。
貼片天線
為了避免角度混疊,我制作了新的貼片天線,它們之間的間距為λ/2。由于預算限制,PCB材料是普通的FR-4。它在射頻頻率下損耗較大,導致天線效率低下。FR-4的相對介電常數控制得不是很好,并且會因制造商和生產批次的不同而變化。相對介電常數的變化會導致天線工作頻率的變化。遺憾的是,任何更好的材料都價格昂貴得多。在中國,FR-4 PCB的價格不到10歐元,而采用更好的材料制作的相同PCB則至少要花費100歐元。
該天線由五根貼片天線組成,它們排成一線,中心天線通過電路板下方的通孔由SMA連接器供電。與單元件貼片天線相比,五元件陣列在陣列方向上的輻射要小得多,而在另一個方向上,波束寬度與單元件貼片天線非常相似。該天線的安裝方式應使其在水平方向上具有較寬的波束寬度,以實現良好的角度覆蓋;在垂直方向上具有較窄的波束寬度,以最大限度地減少地面回波。(串狀饋線減小高度FOV)
我還制作了一個由貼片元件供電的喇叭天線。與之前的波導供電喇叭天線相比,它的工作帶寬要小得多,效率也較低。優點是結構更簡單,并且由于其底部平坦,天線的安裝也更容易。
天線的測量S參數看起來不錯,只是工作頻率略有下降。設計頻率為5 GHz ISM頻段(5.725 - 5.875 GHz),但實際制造的天線的工作頻率比實際低約150 MHz。頻率偏移的原因是模擬和制造天線時基板材料的相對介電常數不同。我之前在FR-4上制作了一個貼片天線,測量結果為4.20,并以此來模擬新天線。然而,根據測量結果,新天線上的FR-4相對介電常數約為4.58。
測量
本底噪聲
我之前計算過,射頻噪底應該在 -102 dBF 左右。通過在發射器和接收器上連接衰減器可以輕松測量噪底。ADC 噪底比較難測量,因為我無法禁用或斷開接收器。我可以拆焊一些元件或添加短路,但我不會這么做。
上圖是測量的接收機功率譜,單位為 dBF(相對于最大 ADC 輸入電壓)。計算值為 -102 dBF,第一個通道的測量值為 -99 dBF,第二個通道的測量值為 -100 dBF。考慮到元件的增益可能存在幾個 dB 的差異,測量值與計算值非常吻合。
在低頻/低距離下,可以看到一些信號。最低的 bin 是直流信號,可能是由中頻放大器、ADC 直流偏移和 FFT 引起的。在稍高的頻率下,可以看到一些真正的目標,可能是來自天花板和墻壁。如果我在雷達上揮揮手,我可以看到目標在移動。電路板上的微帶線似乎輻射足夠強,雷達無需天線就能探測到一些附近的目標。我的自制矢量網絡分析儀 (VNA) 也出現了類似的問題。與矢量網絡分析儀不同,FMCW 雷達的隔離度并不那么重要,因為它只會在非常近的距離內探測到目標。
公園
上圖是我在雷達前騎自行車繞圈的時域圖。由于沒有顯示目標的角度,所以圓圈部分在圖中不可見。
park_patch
由于增加了角度維度,現在可視化數據需要視頻。上圖是與上圖繪制的相同測量結果的視頻。這次沒有移除固定目標,避雷針和樹木都顯示為固定目標。如果沒有角度信息,固定目標只會使繪圖變得雜亂,但現在即使沒有任何額外的后期處理,視頻看起來也非常清晰。
從視頻中可以看出,我的視頻開始和結束位置都在雷達左側(正向交叉距離)。一開始在雷達前方行走會遮擋背景目標,并且由于強烈的反射,中頻也會出現一些削波。
角度分辨率不太好,但這是預料之中的,因為只有兩個接收天線。用于可視化目標角度的窗口化會導致背景中的寬闊灌木叢由于接收到的反射的微小變化而劇烈振蕩。由于不同角度的回波幾乎相等,微小的噪聲會使峰值翻轉到不同的位置。
在視頻中,可以清楚地看到中心周圍的反射幅度遠大于邊緣處的反射幅度。這主要是因為發射喇叭天線的波束寬度較窄。接收天線在高角度下的增益也會降低,從而進一步降低接收反射幅度。
圖片中的燈柱在視頻中也清晰可見,而且不像灌木叢那樣移動。當我在相同的距離范圍內靠近它們時,位置似乎會跳動。問題是,當我與它們處于相同的距離時,角度窗口仍然假設只有一個目標,并將目標中心置于燈柱和我之間的某個位置。
park_patch_mti
上面的視頻與之前相同,但從當前掃描中減去了之前的掃描,以移除固定目標。減去固定目標會進一步凸顯角度可視化中的一些問題。
高架橋
我家附近有一座漂亮的橋,橫跨一條繁忙的道路,所以我決定測試一下雷達對車輛的探測能力。汽車的雷達截面相當大,應該能探測到很遠的地方。
上面的時間-范圍圖是用單喇叭天線記錄的,因此沒有角度信息。雜波的消除方法是從當前掃描中減去前一次掃描,只留下移動物體(MTI對消,常見的靜態雜波去除辦法還有均值相消、SVD分解等)。如果不進行雜波消除,目標太多,很難看清任何東西。
之前由于沒有遠處的目標,所以范圍被截斷了,但這次我繪制的是全范圍。本次捕獲過程中啟用了二倍抽取濾波器以限制數據速率,并將范圍限制在 300 MHz 掃描頻率下的 250 米。如果不進行二倍抽取,范圍應該是 500 米,但由于橋梁的視線小于這個距離,因此捕獲這個范圍沒有多大意義。200 米處的信噪比仍然很好,因此應該能夠看得更遠。在遠距離,信噪比的下降是由于抽取濾波器的濾波頻率也略低于奈奎斯特頻率,以避免混疊。
從圖中可以看出,在抓拍過程中,有五輛汽車遠離雷達,還有一輛汽車和一名自行車迎面駛來。只需將行駛距離除以行駛時間,即可從圖中計算出汽車速度。當然有更好的測速方法,但我懶得去實現。測算出的速度大約在 60 到 70 公里/小時之間。限速是 80 公里/小時,所以看起來所有車輛的速度都略低于限速,不過我想這也很合理,因為我身后正好有紅綠燈。
結論
最新版本的改進修復了之前版本中的問題,雷達的性能看起來非常出色。兩個接收通道可以確定目標的角度,但僅使用兩個接收天線時,角度分辨率并不理想。角度分辨率受物理限制,要獲得更高的分辨率需要更多天線。多天線切換接收機在我的待辦事項清單上。