This website requires JavaScript.
優惠券 應用程式下載
寄往
部落格

如何用 Python 打造專屬的 PCB 走線寬度計算器

最初發布於 Jan 03, 2026, 更新於 Jan 03, 2026

3 分鐘

我們都知道 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,我們一定會考慮推薦!



持續學習