[實戰]巴特沃斯濾波器全流程解析:從數學原理到硬件實現

巴特沃斯濾波器全流程解析:從數學原理到硬件實現

文章目錄

    • 巴特沃斯濾波器全流程解析:從數學原理到硬件實現
      • 1. 數學原理
      • 2. 工程實現
        • 梯形網絡結構
      • 3. Python理論仿真
      • 4. 硬件仿真與PCB考慮
      • 5. 完整設計工具
      • 6. 輸出結果示例
      • 7. 設計注意事項

巴特沃斯濾波器是特別常見常用的濾波,你了解它嗎?想了解的話,請往下看:


1. 數學原理

巴特沃斯濾波器是一種最大平坦幅度響應的IIR濾波器,在通帶內具有最平坦的幅度響應。其數學特性由傳遞函數定義:

幅度平方函數
∣H(jω)∣2=11+(ωωc)2n|H(j\omega)|^2 = \frac{1}{1 + \left(\frac{\omega}{\omega_c}\right)^{2n}} H()2=1+(ωc?ω?)2n1?

其中:

  • nnn = 濾波器階數
  • ωc\omega_cωc? = 截止頻率(3dB點)

極點分布
極點在s平面單位圓上等間距分布:
sk=ωc(sin?((2k?1)π2n)+jcos?((2k?1)π2n))s_k = \omega_c \left( \sin\left(\frac{(2k-1)\pi}{2n}\right) + j\cos\left(\frac{(2k-1)\pi}{2n}\right) \right) sk?=ωc?(sin(2n(2k?1)π?)+jcos(2n(2k?1)π?))

傳遞函數
H(s)=K∏k=1n(s?sk)H(s) = \frac{K}{\prod_{k=1}^{n} (s - s_k)} H(s)=k=1n?(s?sk?)K?

2. 工程實現

梯形網絡結構

巴特沃斯濾波器通常用LC梯形網絡實現,有兩種基本結構:

  1. 串聯電感-并聯電容結構(適用于奇數階)
  2. 并聯電容-串聯電感結構(適用于偶數階)

元件值計算

  1. 計算歸一化元件值 gkg_kgk?
    g = [2 * sin((2*k-1)*pi/(2*n)) for k in range(1, n+1)]
    
  2. 實際元件值計算:
    • 電感:Lk=Rgk2πfcL_k = \frac{R g_k}{2\pi f_c}Lk?=2πfc?Rgk??
    • 電容:Ck=gk2πfcRC_k = \frac{g_k}{2\pi f_c R}Ck?=2πfc?Rgk??

3. Python理論仿真

import numpy as np
import matplotlib.pyplot as plt
from scipy import signaldef butterworth_response(n, fc, R=50):# 計算歸一化元件值g = [2 * np.sin((2*k-1)*np.pi/(2*n)) for k in range(1, n+1)]# 構建傳遞函數b, a = signal.butter(n, 2*np.pi*fc, 'low', analog=True)w, h = signal.freqs(b, a, worN=np.logspace(1, 8, 1000))# 繪圖plt.figure(figsize=(12, 6))plt.semilogx(w/(2*np.pi), 20*np.log10(np.abs(h)))plt.title(f'{n}階巴特沃斯濾波器頻率響應 (fc={fc}Hz)')plt.xlabel('頻率 (Hz)')plt.ylabel('幅度 (dB)')plt.grid(True, which="both", ls="-")plt.show()return g# 示例:5階濾波器,截止頻率1MHz
g_values = butterworth_response(5, 1e6)
print(f"歸一化元件值: {g_values}")

仿真結果

歸一化元件值: [np.float64(0.6180339887498948), np.float64(1.618033988749895), np.float64(2.0), np.float64(1.618033988749895), np.float64(0.618033988749895)]

濾波器頻率響應:
在這里插入圖片描述

4. 硬件仿真與PCB考慮

PCB參數影響

  1. 介電常數 (ε?):影響傳輸線特性阻抗
  2. 板厚 (h):決定傳輸線幾何尺寸
  3. 銅厚 (t):影響導體損耗
  4. 損耗角正切 (tanδ):影響介質損耗

微帶線模型
特性阻抗計算:
Z0=87εr+1.41ln?(5.98h0.8w+t)Z_0 = \frac{87}{\sqrt{\varepsilon_r + 1.41}}\ln\left(\frac{5.98h}{0.8w + t}\right) Z0?=εr?+1.41?87?ln(0.8w+t5.98h?)

寄生效應

  1. 電容:等效串聯電感(ESL)和等效串聯電阻(ESR)
  2. 電感:并聯電容和繞組電阻
  3. PCB走線:分布電感和電容

5. 完整設計工具

import numpy as np
from scipy import constantsclass ButterworthDesigner:def __init__(self, n, fc, R=50, er=4.4, h=1.6e-3, t=35e-6, tan_d=0.02):self.n = nself.fc = fcself.R = Rself.er = erself.h = hself.t = tself.tan_d = tan_ddef calculate_components(self):# 計算歸一化元件值self.g = [2 * np.sin((2*k-1)*np.pi/(2*self.n)) for k in range(1, self.n+1)]# 計算實際元件值self.L_values = []self.C_values = []omega_c = 2 * np.pi * self.fcfor k, gk in enumerate(self.g):if k % 2 == 0:  # 電感L = (self.R * gk) / omega_cself.L_values.append(L)else:  # 電容C = gk / (omega_c * self.R)self.C_values.append(C)return self.L_values, self.C_valuesdef microstrip_calculator(self, Z0):"""計算微帶線寬度和有效介電常數"""# 簡化計算模型A = Z0 / 60 * np.sqrt((self.er + 1)/2) + (self.er - 1)/(self.er + 1) * (0.23 + 0.11/self.er)B = 377 * np.pi / (2 * Z0 * np.sqrt(self.er))# 計算寬度/高度比if Z0 > 89:  # 窄線w_over_h = 8 * np.exp(A) / (np.exp(2*A) - 2)else:  # 寬線w_over_h = (2/np.pi) * (B - 1 - np.log(2*B - 1) + (self.er - 1)/(2*self.er) * (np.log(B - 1) + 0.39 - 0.61/self.er))w = w_over_h * self.he_eff = (self.er + 1)/2 + (self.er - 1)/2 / np.sqrt(1 + 12/w_over_h)return w, e_effdef parasitic_effects(self):"""計算寄生效應影響"""results = {}omega_c = 2 * np.pi * self.fc# 電感寄生參數估算for i, L in enumerate(self.L_values):# 典型SRF = 500MHz ~ 2GHzsrf = min(1e9, max(500e6, 1/(2*np.pi*np.sqrt(L*0.1e-12))))C_parasitic = 1/((2*np.pi*srf)**2 * L)R_series = 0.1 * omega_c * L  # 假設Q=10results[f'L{i+1}'] = {'parasitic_cap (pF)': C_parasitic * 1e12,'series_res (Ω)': R_series}# 電容寄生參數估算for i, C in enumerate(self.C_values):ESL = 2e-9  # 典型2nHESR = 0.1 / (omega_c * C)  # 假設DF=0.1results[f'C{i+1}'] = {'esl (nH)': ESL * 1e9,'esr (Ω)': ESR}return resultsdef generate_report(self):L_vals, C_vals = self.calculate_components()parasitics = self.parasitic_effects()print(f"\n{'='*50}")print(f"{self.n}階巴特沃斯濾波器設計 (fc={self.fc/1e6}MHz, R={self.R}Ω)")print(f"PCB參數: εr={self.er}, h={self.h*1e3}mm, t={self.t*1e6}μm, tanδ={self.tan_d}")print('='*50)print("\n元件值:")for i, L in enumerate(L_vals):print(f"  L{i+1}: {L*1e6:.3f} μH")for i, C in enumerate(C_vals):print(f"  C{i+1}: {C*1e12:.3f} pF")print("\n寄生參數:")for comp, params in parasitics.items():print(f"  {comp}:")for param, val in params.items():print(f"    {param}: {val:.4f}")print("\n微帶線實現建議:")for i, L in enumerate(L_vals):# 目標阻抗Z0 = 50~100ΩZ0 = min(max(50, np.sqrt(L*1e9)), 100)w, e_eff = self.microstrip_calculator(Z0)wavelength = constants.c / (self.fc * np.sqrt(e_eff))length = wavelength / 4  # 四分之一波長實現print(f"  L{i+1}替代方案:")print(f"    特性阻抗: {Z0:.1f}Ω")print(f"    線寬: {w*1e3:.3f}mm")print(f"    長度: {length*1e3:.3f}mm (λ/4 @ {self.fc/1e6}MHz)")# 使用示例
designer = ButterworthDesigner(n=5,               # 5階濾波器fc=1e6,            # 1MHz截止頻率R=50,              # 50Ω系統阻抗er=4.4,            # FR-4介電常數h=1.6e-3,          # 1.6mm板厚t=35e-6,           # 35μm銅厚tan_d=0.02         # 損耗因子
)designer.generate_report()

6. 輸出結果示例

==================================================
5階巴特沃斯濾波器設計 (fc=1.0MHz, R=50Ω)
PCB參數: εr=4.4, h=1.6mm, t=35μm, tanδ=0.02
==================================================元件值:L1: 13.789 μHL2: 38.196 μHL3: 38.196 μHL4: 13.789 μHC1: 110.411 pFC2: 318.310 pF寄生參數:L1:parasitic_cap (pF): 0.0918series_res (Ω): 4.3336L2:parasitic_cap (pF): 0.0331series_res (Ω): 12.0000L3:parasitic_cap (pF): 0.0331series_res (Ω): 12.0000L4:parasitic_cap (pF): 0.0918series_res (Ω): 4.3336C1:esl (nH): 2.0000esr (Ω): 0.1443C2:esl (nH): 2.0000esr (Ω): 0.0500微帶線實現建議:L1替代方案:特性阻抗: 74.8Ω線寬: 1.432mm長度: 46.832mm (λ/4 @ 1.0MHz)L2替代方案:特性阻抗: 100.0Ω線寬: 0.732mm長度: 46.832mm (λ/4 @ 1.0MHz)L3替代方案:特性阻抗: 100.0Ω線寬: 0.732mm長度: 46.832mm (λ/4 @ 1.0MHz)L4替代方案:特性阻抗: 74.8Ω線寬: 1.432mm長度: 46.832mm (λ/4 @ 1.0MHz)

7. 設計注意事項

  1. 元件選擇

    • 選擇高頻特性好的陶瓷電容(NP0/C0G)
    • 使用磁芯電感(鐵氧體或鐵粉芯)減少體積
    • 避免使用電解電容
  2. PCB布局規則

    • 使用星形接地減少噪聲耦合
    • 關鍵路徑保持50Ω阻抗控制
    • 電源層和地層盡量完整
    • 高頻元件引腳盡量短
  3. 頻率限制

    • 集總元件實現:適合<500MHz
    • 分布式實現:適合>100MHz
  4. 性能優化

    • 使用電磁仿真軟件驗證(如ADS、HFSS)
    • 制作原型測試并進行參數微調
    • 考慮溫度穩定性

該設計工具提供了從理論計算到實際實現的完整流程,通過考慮PCB參數和寄生效應,可顯著提高濾波器實際性能與理論設計的一致性。

聲明:設計工具只做理論學習作業,未經實際硬件驗證,請謹慎參考,切勿隨意應用


研究學習不易,點贊易。
工作生活不易,收藏易,點收藏不迷茫 :)


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89630.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《機器學習數學基礎》補充資料:標準差與標準化

1 標準差 我們經常使用平均數來大致了解一組數據&#xff0c;例如平均成績、平均身高、平均壽命等等。但是如果只看平均數&#xff0c;不一定能充分了解整體情況。比如說你和某首富住同一個社區&#xff0c;你們社區平均每戶年收入兩千萬&#xff0c;那么你家是有錢還是沒錢&am…

深度學習 | 多類交叉熵(Categorical Cross Entropy)詳解 + Python實現

在多分類任務中&#xff0c;模型輸出一個概率分布&#xff0c;常用的損失函數是 Categorical Cross Entropy&#xff08;多類交叉熵&#xff09;。本文將帶你理解其數學本質、應用場景、數值穩定性及完整 Python 實現。&#x1f4d8; 一、什么是 Categorical Cross Entropy&…

MyBatis-Plus通用中等、大量數據分批查詢和處理

函數式接口 獲取分頁數據接口 主要用于獲取數據 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;FunctionalInterface public interface MyBatisPlusPageFunctionInterface<T> {Page<T> selectPage(Page<T> page);}數據處理接口 import…

Ps 2025安裝包(Adobe Photoshop 2025)安裝包免費免激活版下載 附圖文詳細安裝教程

[軟件名稱]&#xff1a;Ps2025 V26.3 [軟件大小]&#xff1a;4.86 G [系統要求]&#xff1a;支持Win7及更高版本 [夸克網盤下載https://pan.quark.cn/s/d35677af9ef9 &#xff08;建議用手機保存到網盤后&#xff0c;再用電腦下載&#xff09;更多免費軟件見https://docs.qq.co…

Codeforces Round 1037 (Div. 3)(補題)

文章目錄前言A.Only One DigitB.No Casino in the MountainsC. I Will Definitely Make ItD.This Is the Last TimeE.G-C-D, Unlucky!總結前言 感覺前四道&#xff0c;就是考對于題目的理解能力&#xff0c;以及自己的模擬能力 A.Only One Digit 題目傳送門&#xff1a;Only …

基于單片機智能插座設計/智能開關

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 隨著我國的電子計算機技術的快速發展以及居民對現實生活的要求也在不斷提升&#xff0c;所以很多…

[Linux]git_gdb

一、git1. git 常用指令git status 查看倉庫狀態git add <文件名> 把文件添加到倉庫暫存區git commit -m "信息" 把文件加入倉庫git push 把本地倉庫同步到遠端git pull …

醫療AI與融合數據庫的整合:挑戰、架構與未來展望(下)

?? 解決方案:引入融合數據庫(Multi-modal Data Fusion DB) 醫院引入一款支持圖、向量、表、流的融合數據庫(如Oracle ADW、Milvus+PostgreSQL、或某國產平臺),完成了以下集成: 數據類型 來源系統 格式/模型 示例內容 基因組數據 NGS平臺 VCF / JSON / 圖 EGFR突變、A…

【深度強化學習】MIP-DQN 實現案例(完整Python代碼)

目錄MIP-DQN 算法概述建模基礎訓練階段&#xff08;Training&#xff09;部署階段&#xff08;Online Execution&#xff09;DNN 網絡轉化為 MIP 表達式性能指標完整 Python 代碼實現主函數&#xff1a;random_generator_battery模型函數&#xff1a;MIP_DQN基礎/專用庫包安裝模…

微信小程序 wx.request() 的封裝

基于微信小程序的wx.request()方法封裝下面是一個封裝方案&#xff0c;滿足您提出的所有要求&#xff1a;class HttpService {constructor() {this.baseUrl ; // 基礎URLthis.pendingRequests new Map(); // 請求緩存池this.interceptors {request: [],response: []};}// 設…

yolo8實時識別目標(和平精英敵人+骨骼關鍵點)

現在需要識別人物的肢體&#xff08;姿態/骨骼關鍵點&#xff09;&#xff0c;即所謂的「姿態估計&#xff08;pose estimation&#xff09;」&#xff0c;以下是一些主流、訓練好可直接使用的開源模型推薦&#xff0c;支持多人識別與骨骼關鍵點檢測&#xff0c;適合你后續用于…

MyBatis動態SQL全解析:五大核心標簽實戰指南

MyBatis動態SQL全解析&#xff1a;五大核心標簽實戰指南 一、動態SQL的價值&#xff1a;告別硬編碼時代 傳統SQL拼接的痛點 // 傳統方式需要手動拼接SQL字符串 StringBuilder sql new StringBuilder("SELECT * FROM orders WHERE 11"); if (status ! null) {sql.app…

線上 CPU 過高怎么排查

通過以下幾個命令解決1、top命令&#xff0c;找到 CPU 過高的pid(進程); ?編輯 2、根據pid(進程)找到CPU過高的線程id;top -H -p pid(進程)3、把線程id轉換16 進制的printf 0x%x\n 線程id4、導致CPU 飆升的線程異常信息&#xff0c;-A 30表示打印 30 行記錄jstack pid(進程id)…

Letter Combination of a Phone Number

IntroduceProblem Analysis (Using “258” as example) //2 a b c //5 j k l //8 t u vPossible letter combinations: a, j, t (no further options, this is one combination)a, j, u (no further options, another combination)a, j, v (another c…

【問題解決】npm包下載速度慢

問題描述&#xff1a; npm包下載速度慢 問題原因&#xff1a; 為什么下載 npm 包速度慢&#xff1f; 在使用npm下包的時候&#xff0c;默認從國外的https://regitry.npmjs.org/服務器進行下載。此時&#xff0c;網絡數據的傳輸需要經過漫長的海底光纜&#xff0c;因此下包速度…

Apache DolphinScheduler介紹與部署

目錄 一、軟件介紹 1、軟件概述 2、發展歷史 3、名詞解釋 4、模塊介紹 軟件部署 1、下載發布包 2、上傳與解壓 3、啟動 4、瀏覽器驗證 一、軟件介紹 1、軟件概述 Apache DolphinScheduler 是一個分布式易擴展的可視化DAG工作流任務調度開源系統。適用于企業級場景&…

Selenium 啟動的瀏覽器自動退出問題分析

當 Selenium 啟動的瀏覽器自動關閉時&#xff0c;通常是由于以下原因導致的&#xff1a;1. 腳本執行完畢原因&#xff1a;Selenium 腳本執行到末尾時&#xff0c;如果沒有保持瀏覽器打開的代碼&#xff08;如time.sleep()或循環&#xff09;&#xff0c;瀏覽器會自動關閉。解決…

rust實現的快捷補全到剪貼板的實用工具

最近在兼職項目中老是遇到這樣的場景&#xff1a; 在云服務器之間通過scp命令傳輸文件&#xff0c;密碼太長記不住(客戶服務器不方便ssh-copy-id)在服務器上使用mysql命令登錄修改數據&#xff0c;數據庫密碼太長記不住&#xff08;客戶設置的密碼&#xff0c;直接改掉哈&#…

信息系統風險的安全技術防范思路

針對信息系統風險的安全技術防范思路 降低風險&#xff0c;即提升了安全能力和水平 保護資產 加強信息系統軟硬件及數據安全保護&#xff1b;減少脆弱性 通過研發、部署、應用各環節來盡量減少或避免脆弱性&#xff1b;應對威脅 采取防御措施&#xff0c;實施攻防對抗。

Java項目:基于SSM框架實現的網盤管理系統【ssm+B/S架構+源碼+數據庫+畢業論文】

摘 要 網絡技術和計算機技術發展至今&#xff0c;已經擁有了深厚的理論基礎&#xff0c;并在現實中進行了充分運用&#xff0c;尤其是基于計算機運行的軟件更是受到各界的關注。加上現在人們已經步入信息時代&#xff0c;所以對于信息的宣傳和管理就很關鍵。因此文件信息的管理…