微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > 天线设计和射频技术 > Keysight ADS Mutual Inductance from S-Parameters

Keysight ADS Mutual Inductance from S-Parameters

时间:04-04 整理:3721RD 点击:
Hi,

Before I get into my problem, I would like to begin by apologizing if I break any rules or etiquette of this forum. This is my first post, forgive me.

I am working on a wireless power transfer system using Keysight's ADS and EMPro tools. I have designed the model for the coils using EMPro, and have been able to export it to ADS with no problem. The results of the S Parameter simulations obtained in ADS agree well with the ones in EMPro so I know that there was no issue in the exporting of the model.

Now, I am interested in calculating the mutual inductance (and therefore coupling) between the two coils that I have designed and simulated. It is my understanding that the way to do so is to first convert the S Parameter to a Z Parameter, and then perform the necessary calculation. As far as I know, in ADS we can use the following command:

M = imag(stoz(S(2,1)))/(2*pi*freq)

I have seen this procedure mentioned on several forums, and come across it in several research papers as well.

Recently, I came across a paper which proposes a method to calculate the mutual inductance between any pair of coils regardless of misalignment using an extension of the method first proposed by Maxwell for the coaxial pair. Now, I am interested in using this method to theoretically predict the coupling of the pair under given configurations. Therefore I have created a pair of coils in EMPro that match the dimensions of the pair presented in this paper to first verify the results. At the same time, I have generated a MATLAB script which calculates the mutual inductance between the pair of coils based on the mathematical equations presented in the paper and have successfully obtained the result that the paper provides.

The issue that I am having is that my simulation results for the mutual inductance using the approach mentioned above do not agree at all with the results that the paper and my MATLAB script have generated. I contacted Keysight Tech Support explaining the method that I was using and was offered the following insight:


Your formula K=M/sqrt(L1*L2) to extract the mutual inductances are incomplete. Under the assumption that the mutual inductances are small compared to the self-inductances of the coils, then first of all, use stoy() function built in to ADS in order to convert the obtained S parameters to the desired y parameters. And

-imag(1/Y12)/w (where w =2*PI*freq)

does not represent the mutual inductance between the wires at ports 1 and 2 but rather use

-imag(1/Y12)/w = L1*L2/M12

where L1 is the inductance of the coil associated with port 1, L2 is the inductance of the coil associated with port 2 and M12 is the mutual inductance between these two coils.

A more proper way to extract the mutual inductance for this combination is

LM1_2 = L1*L2*imag(Y12)*w

If you use a system with more than 2 ports. I think it is safe to use the same method for determining the mutual inductance between any pair of coils.

ADS FEM is the same simulator as EMPro FEM. We don't have another 3D EM tool to use and simulate faster.



For starters, I have never seen such an expression for the mutual inductance. Also, as far as I know, the Z parameters and Y parameters are both derived from the S parameters in this case, and can be converted between one another, so does it really make a difference which one I use? I would like to know if anyone has faced such a problem before, and if there is something that I am not considering in my case. I have spent a great deal of time trying to solve this issue, however I have yet to find a solution which agrees both in theory and simulation. If I have missed any details I apologize in advance.

Your insight would be greatly appreciated.

Simply consider definition of Z-parameter and Y-parameter.
Former is under open condition, latter is under short condition.

This looks wrong to me, because your stoz() works only on S21 instead of the full S matrix.

If you want to calculate Z21, you need to do
Z=stoz(S)
and then use Z21 or Z(2,1).

This was definitely a mistake on my part. Thank you for pointing that out. Initially I had found that my issue was not resolved, but my results seem to be agreeing between theory and simulation fairly well at the moment. For anyone that may stumble across this thread in the future, I will detail my process and the source of error below (most of this was being written as I was still having issues and becoming increasingly frustrated, but I've gone back and tried to write in the past tense such that it may serve as a solution ):

I have taken the simple coaxial case of two (practically) filamentary loops and separated them by a distance. I've started with a single coil and determined it's self inductance based on theory and simulation, and the results are in agreement with one another. The equation for the inductance of a circular loop can be found in any basic electromagnetic theory book.

I then extended the problem to two coils and have carried out the same FEM simulation, generated S Parameters, converted to Z as required (this time using stoz on S and not simply S(2,1)), utilized the appropriate Z Parameter equations (the difference between using Y and Z Parameters is negligible, so the Keysight Tech Support approach works as well, but isn't necessary) to determine the self inductance and mutual inductance of the pair. Again, using the Z11 and Z22 parameters gave me the expected self inductances, however the value of M that the simulation was giving me was off from the theoretical value I had obtained, in most cases I was finding it was off by a factor of 10 and some. The theoretical value of the mutual inductance was calculated using equation (2) from the attached paper.

The following is the MATLAB script which I am running in order to compute the theoretical mutual inductance values:

mu0 = 4*pi*10e-7;
a = 500e-3;
b = a;
d = 75e-3;

k = sqrt((4*a*b)/((a+b)^2 + d^2));

[K_k,E_k] = ellipke(k^2);

M = mu0*sqrt(a*b)*( (2/k - k)*K_k - (2/k) * E_k)

Note that the ellipke function utilizes k^2 in the argument as that's the way MATLAB defines the function and a user in the following link pointed that out as the main source of his error. At the same time, I am using a similar approach in another MATLAB script and have verified several results of a paper, so the script itself does not seem to be an issue.

https://www.eevblog.com/forum/beginn...oils-(matlab)/

Upon first glance you may or may not see the problem, however if you take a closer look you'll see through fatigue I've written mu0 = 4*pi*10e-7 which explains the additional factor of 10 I was finding to be interfering with my results. At this point in time, the results for the filamentary coils are agreeing between theory and simulation. As such, I will move to the more complicated problem that I was working on for my research.

Your help was greatly appreciated.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top