0
$\begingroup$

folks

I've been lately struggling with modelling a transmission line. What I would like to do is to take a signal on one side of a cable, pass it through the cable and look how it has changed on the output.

My initial thought was to numerically solve the telegrapher's equation but as I suck at computational physics I dug around some more and found that there is a way to compute the influence of transmission line by the means of transfer function.

The transfer function I found on wikipedia as well as in sources cited by wikipedia is

$H(ω)= \frac{Z_LZ_C}{Z_C(Z_L+Z_S)\mathrm{cosh}(γx)+(Z_LZ_S+Z_C^2)\mathrm{sinh}(γx)}$

Here $Z_L$ is the load impedance, $Z_S$ is the source impedance and $Z_C$ is the characteristic impedance.

$γ=\sqrt{(R+jωL)(G+jωC)}$

$Z_C=\sqrt{\frac{R+jωL}{G+jωC}}$

You can see the modelled situation in the first picture. Schematic of the modelled situatuion.

What I did in my code was load the signal, compute the spectrum via scipy fft, used the frequency range to calculate the transfer function and multiplied the spectrum with it to compute the new spectrum after the transfer and preformed an inverse fft. The result is weird. With a cable of lenght 1 meter the amplitude drop is too big. The parameteres I used should be those of a coaxial cable RG-58, that is

R = 50 $\Omega$/meter

L = 25 nH/meter

C = 100 pF/meter

G = 0.02 S/meter

x = 1 meter

I included the results in the second picture. Comparison of input and output voltage and spectra plus the computed transfer function.

$\endgroup$
7
  • $\begingroup$ You can use MathJax to make equations look better. $\endgroup$
    – Luessiaw
    Commented Aug 1, 2023 at 14:34
  • $\begingroup$ Is it possible to see which code you used? For transmission lines you have to simulate the reflections at the load port since you will see a lot of reflections in the transmission line which will a) distort your pulse, and the longer the line is, the larger the pulse distortion will be and b) while it is true that an FFT may be useful you have to remember that the transmission line is several concatenated loads in the electrical path so I think you may be only seeing a filtered output of the input signal and not a truly traveling wave through your line. Maybe the folks at the EE forum can help $\endgroup$
    – ondas
    Commented Aug 1, 2023 at 14:54
  • $\begingroup$ $Z_s=?$, $Z_L=?$; I suggest to plot the input impedance (VSWR) at the input port to which the source impedance is attached. $\endgroup$
    – hyportnex
    Commented Aug 1, 2023 at 16:37
  • $\begingroup$ @hyportnex The source impedance [;Z_s;] and the load impedance [;Z_L;] were both chosen to be the same as the characteristic impedance [;Z_c;]. This choice was made only because I have no other information about the system I am about to model. It was merely to try the model out for when I get more specific with it. You can see the specific choices in the code I'll post in another comment. $\endgroup$ Commented Aug 2, 2023 at 7:49
  • $\begingroup$ @ondas The code is as follows. signal_hat = sfft.fft(signal) freq = sfft.fftfreq(len(signal), (time[1]-time[0])) gamma = np.sqrt((R+1j*freq*L)*(G+1j*freq*C)) Z_c = np.sqrt((R + 1j * freq * L) / (G + 1j * freq * C)) Z_L = Z_c Z_s = Z_c signal_hat_new = signal_hat*(Z_L*Z_c)/(Z_c*(Z_L+Z_s)*np.cosh(gamma*x) + (Z_L*Z_s + Z_c**2)*np.sinh(gamma*x)) signal_new = sfft.ifft(signal_hat_new) Excuse my terrible formatting. I don't yet know how to post code properly in the comment. $\endgroup$ Commented Aug 2, 2023 at 7:54

1 Answer 1

0
$\begingroup$

My initial thought was to numerically solve the telegrapher's equation but as I suck at computational physics I dug around some more and found that there is a way to compute the influence of transmission line by the means of transfer function.

Unfortunately you will have to go back to the telegrapher's equation in this particular case as you are dealing with the wave-like behavior of the electromagnetic signals traveling through the transmission line.

signal_hat = sfft.fft(signal) 
freq = sfft.fftfreq(len(signal), (time[1]-time[0])) 
gamma = np.sqrt((R+1j*freq*L)*(G+1j*freq*C)) 
Z_c = np.sqrt((R + 1j * freq * L) / (G + 1j * freq * C)) 
Z_L = Z_c 
Z_s = Z_c 
signal_hat_new = signal_hat*(Z_L*Z_c)/(Z_c*(Z_L+Z_s)*np.cosh(gamma*x) + (Z_L*Z_s + Z_c**2)*np.sinh(gamma*x)) 
signal_new = sfft.ifft(signal_hat_new)

You can see that the approach is not new and there are many attempts in the literature to convert the time-domain problem into the frequency domain:

https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=48710115f87c77fd04134aa3824d62cec0e97edd

Nonetheless, you should be aware that even though the treatment in the frequency domain is indeed easier, you still need to account for the wave-like behavior of the signal in the time domain which in turn will distort the signal and show the values found in the literature.

For this specific issue I think you will find much better feedback here: https://electronics.stackexchange.com/ as there are plenty of very well informed users in this particular topic in that forum.

$\endgroup$
1
  • $\begingroup$ Thank you very much for your answer. I indeed need to have a better look into it. $\endgroup$ Commented Aug 2, 2023 at 11:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.