如何用 Python 打造專屬的 PCB 走線寬度計算器
3 分鐘
- 需考慮的參數
- Python 走線寬度計算器的功能
- 如何在線上 Python 編譯器中執行走線計算器
- Python 程式碼:
- 總結:
我們都知道 PCB 走線的重要性,但設計完美走線是否有固定規則?當然,所有規則都在 IPC 指南中列出。讓我們深入探討走線,包括其長度、寬度、載流能力以及 PCB 設計中存在的寄生類型。我們都知道 PCB 走線由銅製成,整體厚度為 1 或 2 盎司的薄層。由銅製成並不代表沒有電阻。電阻的基本規則是:走線越厚越寬,電阻越低;若走線細且長,則電阻較高。誰會希望因走線而損失訊號功率?
讓我們以一個例子開始:如果我正在設計一塊電源 PCB,走線長 10 mm,流經電流為 5 A,那麼厚度應該是多少?我們需要查閱 IPC 來計算,但在電腦時代,手算已不再必要!是的,您可以使用線上計算器,但為何要依賴它們?我們將設計獨立的程式碼
回到核心問題——我的銅走線應該多寬?答案取決於多個因素,如所需承載的電流、可接受的溫升、銅厚度,以及走線位於內層或外層。為簡化流程,我基於IPC-2152 指南開發了 Python 走線寬度計算器。本文將介紹設計流程、考慮參數與工具功能,並說明如何在任何線上 Python 編譯器中執行。
需考慮的參數
設計此計算器時,我納入了影響走線寬度的關鍵參數:
1. 電流容量 (A) – 走線需安全承載的電流量。
2. 溫升 (°C) – 允許走線溫度高於環境溫度的幅度。
3. 層別類型 – 外層走線比內層更易散熱,因此公式不同。
4. 銅重量 (oz/ft²) – 常見為 1 oz 或 2 oz 銅,影響厚度與電阻。
5. 走線長度 (mm) – 用於計算電阻與電壓降。
6. 走線寬度 (mm) – 用於從給定尺寸計算最大電流。
Python 走線寬度計算器的功能
程式碼非常輕量,沒有 UI,因此可在任何線上 Python 編譯器中執行。我的計算器功能如下:
兩種模式:
1) 依電流求寬度 – 輸入電流,獲得所需走線寬度。
2) 依寬度求電流 – 輸入寬度,獲得最大支援電流。
額外計算:
- 走線電阻 (Ω)
- 給定負載下的電壓降 (V)
- 走線功率損耗 (W)
如何在線上 Python 編譯器中執行走線計算器
您無需本地 Python 環境即可使用此工具。複製下方程式碼並依下列指南執行:
1. 造訪任何線上 Python 編譯器並貼上程式碼。範例使用 Programiz,您可選擇其他本地編譯器。
2. 點擊執行。
3. 依終端機提示輸入參數。
首先,系統會要求選擇兩種模式之一:依電流求寬度或依寬度求電流。對應的輸出與提示如下:
依電流求寬度:
依寬度求電流:
如此即可在任何裝置上執行計算器,無需安裝 Python。
Python 程式碼:
import math
def calculate_trace_width(current, temp_rise=10, is_external=True):
# IPC-2152 constants
if is_external:
k = 0.048
b = 0.44
c = 0.725
else:
k = 0.024
b = 0.44
c = 0.725
width_mils = (current / (k * (temp_rise ** b))) ** (1 / c)
width_mm = width_mils * 0.0254
return width_mm
def calculate_trace_properties(width_mm, length_mm, copper_oz):
# Constants
copper_thickness_mm = {1: 0.035, 2: 0.07} # in mm
resistivity = 1.68e-8 # Ohm-meter for copper
# Get thickness
thickness_mm = copper_thickness_mm.get(copper_oz, 0.035)
cross_section_mm2 = width_mm * thickness_mm
# Convert to meters
length_m = length_mm / 1000
area_m2 = cross_section_mm2 * 1e-6
# Resistance
resistance = resistivity * length_m / area_m2
return resistance
# --- Main Program ---
mode = input("Choose mode (1 = Width from Current, 2 = Current from Width): ")
if mode == '1':
current = float(input("Enter current (A): "))
temp_rise = float(input("Enter temperature rise (°C, default 10): ") or 10)
layer = input("Is it external layer? (y/n): ").lower() == 'y'
length_mm = float(input("Enter trace length (mm): "))
copper_oz = int(input("Copper weight (1 or 2 oz): "))
width_mm = calculate_trace_width(current, temp_rise, layer)
resistance = calculate_trace_properties(width_mm, length_mm, copper_oz)
voltage_drop = current * resistance
power_loss = current ** 2 * resistance
print(f"\n--- Results ---")
print(f"Required trace width: {width_mm:.3f} mm")
print(f"Trace resistance: {resistance:.4f} Ω")
print(f"Voltage drop: {voltage_drop:.4f} V")
print(f"Power loss: {power_loss*1000:.2f} mW")
elif mode == '2':
width_mm = float(input("Enter trace width (mm): "))
temp_rise = float(input("Enter temperature rise (°C, default 10): ") or 10)
layer = input("Is it external layer? (y/n): ").lower() == 'y'
length_mm = float(input("Enter trace length (mm): "))
copper_oz = int(input("Copper weight (1 or 2 oz): "))
width_mils = width_mm / 0.0254
if layer:
k = 0.048
else:
k = 0.024
b = 0.44
c = 0.725
current = k * (temp_rise ** b) * (width_mils ** c)
resistance = calculate_trace_properties(width_mm, length_mm, copper_oz)
voltage_drop = current * resistance
power_loss = current ** 2 * resistance
print(f"\n--- Results ---")
print(f"Maximum supported current: {current:.2f} A")
print(f"Trace resistance: {resistance:.4f} Ω")
print(f"Voltage drop: {voltage_drop:.4f} V")
print(f"Power loss: {power_loss*1000:.2f} mW")
else:
print("Invalid option.")總結:
這是一個非常基礎的編程練習,但要使其有效,設計師需具備正確的參數資訊並遵循 IPC 指南。結果可能與線上計算器不同,因為部分計算器使用舊版程式碼。這是一個可部署到任何線上 Python 編譯器的簡單專案。若您有安裝完整套件的本地 Python 環境,可延伸此程式碼部署 GUI。分享程式碼並標記JLCPCB,我們一定會考慮推薦!
持續學習
銅箔竊盜如何平衡您的 PCB 以獲得更好的製造結果
PCB 銅補償(Copper Thieving)指南 你是否曾在裸板 PCB 上看到空白區域有小圓點、方塊或網格設計?這就是銅補償(Copper Thieving)的作用,它是改善 PCB 製造均勻性最有效卻經常被忽略的技術之一。若沒有銅補償,板子可能出現鍍層不均、翹曲、蝕刻不均或阻抗問題,使得優秀設計在量產時成為惡夢。 隨著現代 PCB 越來越高密度,板上功能元件越來越多,但也會留下大面積空白層壓區,與密集銅區相鄰,形成銅分布不均問題。銅補償透過在空白區添加非功能性銅圖案來平衡整板的銅分布。 銅補償的重要性 隨著電路複雜度增加,PCB 層內的銅分布變得不均勻。例如一個角落可能有密集接地平面,而另一角落只有零星走線。這種不均衡正是銅補償發揮作用的地方。 銅補償的概念與工作原理 銅補償是在 PCB 層稀疏區域添加非功能性銅圖案(稱為 copper thieves),這些圖案不與任何電氣網路連接,僅用於平衡整板銅密度。在電鍍過程中,電流會偏向孤立銅區,造成鍍厚不均。加入銅補償後,電流分布更均勻,使鍍層厚度一致。 常見銅補償圖案 圓點圖案:小圓形焊盤網格,直徑通常 20–40 mil 方形圖案:規則方形......
ZIF 連接器以無需工具的可靠性簡化軟性電路板組裝
ZIF(零插入力)連接器簡介 曾經嘗試將柔性排線插入連接器時,感覺阻力很大,甚至擔心拉斷尾端或損壞連接器外殼嗎?這正是 ZIF 技術要解決的問題。零插入力(Zero Insertion Force, ZIF)連接器允許將柔性印刷線路(FPC)或扁平電纜(FFC)滑入插座,幾乎不需用力,然後用機械操作將電纜牢固固定。隨著裝置變薄、板面空間縮小以及組裝產線增長,ZIF 連接器已成為不可或缺的技術。 ZIF 連接器在柔性 PCB 設計中的需求 柔性與剛柔結合 PCB 已不再是小眾產品。智慧手機、筆電、穿戴裝置、醫療儀器與車載顯示器都需要可靠的柔性到剛性互連。錯位會造成間歇性接觸、訊號中斷及昂貴返工。ZIF 技術可解決這些問題。 ZIF 連接器的工作原理 ZIF 連接器是兩件式設計:FPC 或 FFC 插入時幾乎無電氣接觸,插入後使用翻轉式或滑動式機械桿(Actuator)施加壓力,使電纜接點與連接器端子可靠接觸。 工具免使用的重要性 ZIF 連接器無需特殊工具即可插拔。操作員只需用指尖或簡單塑膠工具即可打開操作桿、插入電纜並鎖定,生產效率可在 3 秒內完成,而傳統摩擦式連接可能耗時更久。 ZIF 連接器......
印刷電路板設計中的環形環:掌握可靠的導孔連接與精密製造
事實上,我有一個值得思考的問題:你上次實際計算 PCB 最壞情況下的環形圈尺寸,並納入所有製造公差是什麼時候?當你說沒有,或是最近沒有,你絕對不是唯一一個。我們通常只是將焊盤尺寸縮放至 EDA 預設值或我們已經用過的數值,而沒有進一步檢查這個數字是否符合實際的鑽孔偏移、層間對位誤差和蝕刻補償。鍍通孔孔壁與各層銅焊盤之間唯一的機械和電氣連接,就是圍繞在所有已鑽孔洞周圍的那一圈薄薄的銅環。 當它剛好足夠時,根本沒有人會注意到它。一旦它處於臨界狀態,你就會遇到間歇性故障,這些故障會持續存在,並在數月後困擾生產工程師。今天,我們將超越教科書的定義。我們將解構實際上決定你實際環形圈餘裕的公差累積,仔細審視 IPC-6012 等級要求(並給予它們應有的重視),同時也會探討在佈線密度與製造穩健性之間取得平衡的設計技巧。 超越基本公式:究竟是什麼決定了你的環寬 你可以自己計算:環形圈的寬度是焊盤直徑與鑽孔直徑差值的一半。因此,一個 0.7mm 的焊盤和 0.3mm 的鑽孔,在任何一側的環寬都是 0.2mm,或大約 8mil。問題在於,這樣一個小小的計算結果更像是個標稱數值,而非你經過整個製造鏈後會得到的數值。實際......
揭開 PCB 走線的魔法:透過智慧設計提升電子產品效能
簡介 印刷電路板 (PCB) 是現代電子產品的基礎。其核心是導電的銅路徑,稱為 PCB 走線,用於在元件之間傳輸訊號。正確的走線設計直接影響訊號完整性、電源傳輸、電磁干擾 (EMI) 和可製造性。本文涵蓋了 PCB 走線的基礎知識、關鍵設計考量、優化技術,以及 JLCPCB 的能力(包括其免費阻抗計算器)如何幫助設計人員實現可靠的成果。 PCB 走線的基礎知識 PCB 走線是蝕刻在 PCB 基板上的薄型導電路徑,通常由銅製成。這些走線作為電氣訊號在微處理器、電阻、電容和積體電路 (IC) 等各種元件之間傳輸的管道。PCB 走線的設計和特性顯著影響電子裝置的整體效能和可靠性。 ⦁ 走線寬度與阻抗: 走線寬度決定了載流能力、電阻和熱效能。在高頻應用中,控制阻抗 至關重要。JLCPCB 的免費線上阻抗計算器可幫助設計人員達成 50Ω 單端或 100Ω 差分的目標。對於標準 FR-4(介電常數 Dk ~4.5,1 盎司銅),50Ω 微帶線通常需要 10–15 mil 的走線寬度(取決於介質厚度)。在報價時選擇「阻抗控制」,JLCPCB 保證 ±10% 的公差(或可選 ±5%)。 ⦁ 高頻 PCB: 隨著對......
印刷電路板設計中的常見問題與解決方案
PCB(印刷電路板)設計是電子產品開發中至關重要的一環。在設計過程中,我們經常會遇到一些棘手的問題,這些問題可能包括電路設計和佈線規範。了解這些常見問題及其解決方案,可以幫助工程師提升設計的品質和效率。 不合理的電路佈局 電路佈局對於維持訊號完整性和電磁相容性至關重要。不合理的佈局可能導致訊號串擾和電磁干擾等問題。 解決方案: 1. 合理規劃電路板的層次結構,將高速訊號與低速訊號分開,以減少訊號干擾。 2. 分割接地平面,防止形成大面積的接地迴路,降低電磁干擾。 3. 盡可能縮短信號線,以減少傳輸延遲和訊號衰減。 電源雜訊干擾 電源雜訊可能會降低電路效能,甚至導致故障。 解決方案: 1. 使用濾波電容來消除電源雜訊。 2. 在電源端增加去耦電容,以確保每個元件的供電穩定。 3. 優化地線佈局,確保有良好的地線參考平面,減少因地線回流路徑產生的雜訊。 訊號完整性問題 在高速訊號傳輸中,維持訊號完整性是一個常見的挑戰。 解決方案: 1. 使用適當的訊號線寬度和間距,以確保阻抗匹配和訊號完整性。 2. 加強訊號層的接地參考平面,以縮短信號迴流路徑。 3. 使用終端電阻和訊號衰減器,以減少訊號反射和串擾。......
決定 PCB 層數
當您開始設計印刷電路板(PCB)時,需要做出的關鍵決定之一就是確定 PCB 的層數。不同的層數肯定會影響您專案設計的成果。我們想討論其含義,並為您提供簡單的指導方針,幫助您決定PCB 設計中的銅層數量。 了解 PCB 層 分析電路複雜度: 電路的複雜度是決定 PCB 層數的主要因素。具有眾多元件和複雜佈線要求的複雜電路,可能需要額外的層來容納必要的走線和連接。 元件密度高的電路通常需要更多層來容納必要的佈線。如果您的設計涉及多個高速訊號或敏感類比訊號,額外的層可以透過提供獨立的電源和接地層並降低雜訊來幫助改善訊號完整性。此外,高速電路和具有敏感類比訊號的設計需要特別注意訊號完整性。可以利用額外的層來分隔電源和接地層、最小化雜訊,並減少訊號干擾和串擾。 考慮空間限制: 如果您的設計需要安裝在緊湊的電子設備中,您可能會受到電路板尺寸的限制。在這種情況下,您需要最佳化層的使用,以實現所需的功能,同時確保 PCB 能夠放入可用空間內。 評估電源需求: 具有高電源需求的 PCB 設計可能需要額外的層來有效分配電源和管理散熱。獨立的電源和接地層可以增強電源完整性並防止電壓下降。如果您的設計涉及高功率元件,或需......