3 min readBy
Aleksandr Sidun
Suggest Edit
Aleksandr SidunRLC-calculator for a PCB trace
This article contains MATLAB script for the calculation of the parasitic parameters of the PCB trace.
Script limitations:
- Valid under 1GHz
- Skin effect is omitted
- Copper roughness is omitted
- Loss tangent is omitted
- Geometry limitations:
- W/H < 7.475 - 1.25*(T/H) - for a microstrip
- W/B < 2.375 - 1.25*(T/B) - for a stripline
LDO Feedback Resistance Calculator
First coefficient in equation - conversion from inches to m.
H - height
W - width
Microstrip Equations:
Stripline Equations:
1%% PCB lumped parameters calculator (microstrip/stripline)
2% Author: A.Sidun
3% Source: AnalogHub.ie
4% Limitations:
5% - Valid under 1GHz
6% - Skin effect is omitted
7% - Copper roughness is omitted
8% - Loss tangent is omitted
9% - Geometry limitations:
10% W/H < 7.475 - 1.25*(T/H) - for a microstrip
11% W/B < 2.375 - 1.25*(T/B) - for a stripline
12% Source: https://resources.system-analysis.cadence.com/blog/msa2021-is-there-a-pcb-trace-inductance-rule-of-thumb
13
14%% Input parameters
15type = "microstrip"; % can be microstrip or stripline
16temp = 25; % temperature [C]
17length = 1e-3; % trace length [m]
18width = 0.5e-3; % trace width [m]
19thickness = 35e-6; % trace thickness [m]
20height = 0.4e-3; % height over a plane [m]
21
22%% Constants
23ro = 1.724e-8; % resistivity of copper [Ohm/m]
24alpha = 3.9e-3; % temperature coefficient of copper
25eps_r = 4.46; % relative permittivity of copper
26
27%% Calculations
28B = 2*height+thickness; % plane-to-plane distance [m]
29switch type
30 case "microstrip"
31 if ( width/height < 7.475 - 1.25*(thickness/height) )
32 R_lumped = 1e3*ro*(1 + alpha*(temp-25))/(thickness*width); % mOhms/meter
33 C_lumped = 26.378*(eps_r+1.41)/( log( 5.98*height/(0.8*width+thickness) ) ); % pF/meter
34 L_lumped = 199.65*log( 5.98*height/(0.8*width + thickness) ); % nH/meter
35 Z = 87*log(5.98*height/(0.8*width + thickness)) / sqrt(eps_r + 1.41);
36
37 R = R_lumped*length; % mOhm
38 L = L_lumped*length; % nH
39 C = C_lumped*length; % pF
40
41 disp("PCB " + type + " parameters:")
42 disp("R = " + R + " mOhms")
43 disp("C = " + C + " pF")
44 disp("L = " + L + " nH")
45 disp("Z = " + Z + " Ohm")
46 else
47 disp("Please check geometry of the trace.")
48 end
49 case "stripline"
50 if ( width/B < 2.375 - 1.25*(thickness/B) )
51 R_lumped = 1e3*ro*(1 + alpha*(temp-25))/(thickness*width); % mOhms/meter
52 C_lumped = 39.37*eps_r*sqrt(2) / ( log(1.9*B/(0.8*width + thickness)) ); % pF/meter
53 L_lumped = 199.8425*log( 1.9*B/(0.8*width + thickness) ); % nH/meter
54 Z = 60*log(1.9*B/(0.8*width + thickness)) / sqrt(eps_r);
55
56 R = R_lumped*length; % mOhm
57 L = L_lumped*length; % nH
58 C = C_lumped*length; % pF
59
60 disp("PCB " + type + " parameters:")
61 disp("R = " + R + " mOhms")
62 disp("C = " + C + " pF")
63 disp("L = " + L + " nH")
64 disp("Z = " + Z + " Ohm")
65 else
66 disp("Please check geometry of the trace.")
67 end
68end