Skip to content

Electrical Analyses

Austen Goddu edited this page Jun 26, 2024 · 6 revisions

The electrical characteristic analyses are a set of sub analyses (used by the power transmission analyses) that inform on the electrical characteristics of electrical Wires contained within a tether design. They consist of the following three functions:

  • calculate_wire_resistance(): Calculates the resistance of a single wire, adjusting for temperature
  • calculate_equivalent_resistance(): Calculates the equivalent resistance of parallel wires in a passed list
  • ac_resistance(): Calculates the AC resistance of a single wire at a given frequency/temperature

Single Wire Resistance

This analysis calculates the resistance from the resistivity of the conductor material at 20 degrees celsius, and then uses the temperature to calculate a coefficient used to adjust the resistance for the desired temperature, which is returned. This analysis takes the following arguments:

  • wire: A Wire object (electrical) to calculate the resistance of.
  • temp: The temperature of the wire in celsius.

An example of calculating the resistance for one of the wires in a tether design is given below:

Code

from tether_analysis.TetherDesign import Layer, Wire, RoundTetherDesign
from calculation_libraries.PowerAnalysis import calculate_wire_resistance

# Construct a kapton insulated copper wire
conductor = Layer("copper", "Conductor", 0.25)
insulator = Wire("electrical", "kapton", "Kapton Wire", 0.15, innerLayer=conductor)

# Arrange the wires in a list
wireList = [insulator, insulator, insulator, insulator]

# Build the layers of the tether
core = Layer("fep", "Core", 0.25, color="black")
memLayer = Layer("fep", "Wires", 0.1, innerLayer=core, memberList=wireList)
strength_layer = Layer("vectran_kuraray_ht", "strength_layer", 0.15, innerLayer=memLayer)
abrasionLayer = Layer("ptfe", "abrasion", 0.2, innerLayer=strength_layer)

# Pass to a tether design object
tether = RoundTetherDesign("Example", abrasionLayer, 100)

# Calculate single wire resistance
singleWireResistance = calculate_wire_resistance(tether.getLayerAtPath("L3M1L1"), 30)
print("Resistance: %f ohms" % singleWireResistance)

Output

image

Equivalent Resistance

This analysis makes use of the single wire resistance function to calculate the effective parallel resistance of wires objects passed in a list, assuming each is the same temperature. It takes two arguments:

  • wireList: The list of Wire objects (electrical) for which to calculate the equivalent resistance.
  • temp: The temperature of the wires in celsius.

An example of calculating the equivalent resistance for two wires is given below:

Code

from tether_analysis.TetherDesign import Layer, Wire, RoundTetherDesign
from calculation_libraries.PowerAnalysis import calculate_equivalent_resistance

# Construct a kapton insulated copper wire
conductor = Layer("copper", "Conductor", 0.25)
insulator = Wire("electrical", "kapton", "Kapton Wire", 0.15, innerLayer=conductor)

# Arrange the wires in a list
wireList = [insulator, insulator, insulator, insulator]

# Build the layers of the tether
core = Layer("fep", "Core", 0.25, color="black")
memLayer = Layer("fep", "Wires", 0.1, innerLayer=core, memberList=wireList)
strength_layer = Layer("vectran_kuraray_ht", "strength_layer", 0.15, innerLayer=memLayer)
abrasionLayer = Layer("ptfe", "abrasion", 0.2, innerLayer=strength_layer)

# Pass to a tether design object
tether = RoundTetherDesign("Example", abrasionLayer, 100)

# List of wires to use
wireList = [tether.getLayerAtPath("L3M1L1"), tether.getLayerAtPath("L3M3L1")]

# Calculate equivalent resistance
equivalentResistance = calculate_equivalent_resistance(wireList, 30)
print("Resistance: %f ohms" % equivalentResistance)

Output

image

AC Resistance

The AC resistance analysis uses an approach from "Practical continuous functions for the internal impedance of solid cylindrical conductors", by David W. Knight, specifically the RAC - TED - ML approach. This analysis estimates the resistance of a wire path due to the skin effect at a given frequency. It calculates the AC resistance factor: $\Xi = R_{ac} / R_{dc}$ which is used along with the DC resistance of the wire to find the AC resistance. Equations used to calculate $\Xi$ can be found on page 31 of "Practical continuous functions for the internal impedance of solid cylindrical conductors".

The AC resistance calculation takes in four arguments:

  • Send wire: the wire object (electrical) used as a send path.
  • Return wire: the wire object (electrical) used as a return path.
  • Frequency: the frequency of the frequency of the signal in Hz.
  • Temperature: the temperature of the wires in celsius.

An example calculating the AC resistance for a send/return path and its output are shown below:

Code

from tether_analysis.TetherDesign import Layer, Wire, RoundTetherDesign
from calculation_libraries.PowerAnalysis import ac_resistance

# Construct a kapton insulated copper wire
conductor = Layer("copper", "Conductor", 0.25)
insulator = Wire("electrical", "kapton", "Kapton Wire", 0.15, innerLayer=conductor)

# Arrange the wires in a list
wireList = [insulator, insulator, insulator, insulator]

# Build the layers of the tether
core = Layer("fep", "Core", 0.25, color="black")
memLayer = Layer("fep", "Wires", 0.1, innerLayer=core, memberList=wireList)
strength_layer = Layer("vectran_kuraray_ht", "strength_layer", 0.15, innerLayer=memLayer)
abrasionLayer = Layer("ptfe", "abrasion", 0.2, innerLayer=strength_layer)

# Pass to a tether design object
tether = RoundTetherDesign("Example", abrasionLayer, 100)

# List of wires to use
wireList = [tether.getLayerAtPath("L3M1L1"), tether.getLayerAtPath("L3M3L1")]

# Calculate AC resistance at 1MHz
acResistance = ac_resistance(wireList[0], 1e6, 30)
print("Resistance: %f ohms" % acResistance)

Output

image