Problems calculating characteristic impedance for Microstrip line

How to use openEMS. Discussion on examples, tutorials etc

Moderator: thorsten

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Mon 06 Jan 2020, 23:16

I'm trying to perform a manual calculation (i.e. without using MSLPort) of the characteristic impedance of a microstrip transmission line. I've added 3 probes to the line at 1/4, 1/2 and 3/4 lengths along the line (ports 0, 1, 2, respectively). I've added a PML_8 boundary at the end of the transmission line and calculated Z0 with uf_tot/ui_tot at each probe. The signal is fed by a 1-dimensional lumped port with R=50ohm connecting the ground plane and one end of the microstrip. Here's the plot I'm getting from the simulation.
Figure_1.png
Figure_1.png (159.19 KiB) Viewed 5916 times
In other words, the calculated characteristic impedance is different depending on where the probe is placed along the line. I believe this is being caused by reflections at the boundary. When I view the dumped Efield in paraview I do see some reflection. How can I completely eliminate the reflections? Or, is there a better way to calculate the characteristic impedance? I took a look at the ReadUIData member function of class MSLPort (ports.py) but I'm having trouble understanding it. I believe this line is calculating Z0 (

Code: Select all

self.Z_ref = np.sqrt(Et * dEt / (Ht * dHt))
)...

I'm happy to post my code and/or generated files, such as the CSX structure if you think that would be helpful. Thanks.

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Re: Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Wed 08 Jan 2020, 00:17

I've mischaracterized the problem here. After looking closer at the paraview visualization, it appears that it's actually the probes I've placed along the transmission lines that are causing reflections. Here's my code for adding the probes

Code: Select all

vprobe = [None, None, None]
iprobe = [None, None, None]

for i, probe in enumerate(vprobe):
    start = [-microstrip_len / 2 + i * microstrip_len / 4, 0, -substrate_thick]
    stop = [-microstrip_len / 2 + i * microstrip_len / 4, 0, 0]
    vprobe[i] = csx.AddProbe("vprobe_" + str(i), 0)
    vprobe[i].AddBox(start=start, stop=stop)

for i, probe in enumerate(iprobe):
    start = [
        -microstrip_len / 2 + ((i + 1) * microstrip_len / 4),
        -microstrip_width / 2,
        0,
    ]
    stop = [
        -microstrip_len / 2 + ((i + 1) * microstrip_len / 4),
        microstrip_width / 2,
        0 + outer_cu_thick,
    ]
    iprobe[i] = csx.AddProbe("iprobe_" + str(i), 1, norm_dir=0)
    iprobe[i].AddBox(start=start, stop=stop)
In other words, the voltage probes are 1-dimensional and connect the microstrip to ground plane. The current probes are also 1-dimensional spanning the cross section of the microstrip (the microstrip has zero height, i.e. outer_cu_thick=0). How can I set up probing in a way that reduces or eliminates reflection?

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Re: Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Sat 18 Jan 2020, 04:00

I was able to improve the result a bit by limiting the frequency range. Here's the plot for a sweep from 5.2-6GHz.
Figure_1.png
Figure_1.png (125.36 KiB) Viewed 5841 times
Again, ports 1, 2 and 3 are placed at 1/4, 1/2 and 3/4 lengths along the line. Notice that although the characteristic impedance values still deviate, the difference is now very small. Why does limiting the frequency sweep range reduce reflections?

I spent a little time trying to figure out what happens when I call AddProbe but wasn't able to get very far. In particular what are the electromagnetic properties (Er, etc.) of a probe? All I was able to find out was that the probe has property ProbeType or something similar. I wasn't able to determine whether that means it's a metal (presumably so for the current probe, not for the voltage probe) or something else. Why would probes create reflections? The current probe is the exact cross-section of the transmission line, which I defined to have zero thickness and to be a perfect electrical conductor. If the current probe were also a PEC, it shouldn't create reflections, right? What about the voltage probe? Presumably, this is defined to match the surrounding properties (in my case the PCB dielectric). If it were, however, I don't understand why reflections would occur.

How should I deal with the port discrepencies? Average over the 3? Ignore the differences and take the middle?

Thanks.

thorsten
Posts: 1425
Joined: Mon 27 Jun 2011, 12:26

Re: Problems calculating characteristic impedance for Microstrip line

Post by thorsten » Sat 18 Jan 2020, 12:20

Hi,

I'm not sure I got everything you were talking about or asking. But what I can say is that probes never should cause reflections as they only record fields and have no influence on any fields. What exactly makes you think they create reflections?

What I did not get is why you do this all manual and not use the port instead? It too uses two current and three voltage probes and from them calculates incoming and reflected waves by doing an automatic line impedance calculation etc..

regards
Thorsten

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Re: Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Sun 19 Jan 2020, 19:22

Thanks for the reply thorsten. There are a few reasons why I'm not using the ports. I'm generating the mesh using an automeshing tool I wrote. From the wiki (https://openems.de/index.php/Ports.html ... Line_Ports), it appears that microstrip ports can only be defined after the mesh. If I did this my automatic mesh wouldn't include the microstrip line. I also wanted to be able to experiment with a nonzero trace height microstrip, which doesn't seem to be supported by the port. And, in general, I'd like to understand how these ports work in case I run into another situation where my needs are a little different.

I'm surprised about the probe reflection. Here's a video of the paraview visualization I was seeing (you can see reflections at 1/4 and 3/4 lengths along line). https://www.dropbox.com/s/qvzb3hnjvdeky ... 4.mkv?dl=0 (sorry about the sound, you'll want to mute the video). The only other feature I can think of at those points is that the mesh lines are more dense at those points. Could that cause it? Do probes need mesh lines, or are mesh lines only for physical primitives?

I'm curious about the two current, three voltage probes. Is the purpose of this to determine the direction of propagation of signals along the line? How is that different from uf_inc, uf_ref etc? Do you have any other resources for seeing how this works besides just reading the code? It seems like maybe there is a paper that relates to this? One of your comments in the code is "determine correct sign (unlike the paper)".

PaulUK
Posts: 79
Joined: Wed 28 Oct 2015, 14:23

Re: Problems calculating characteristic impedance for Microstrip line

Post by PaulUK » Sun 19 Jan 2020, 23:08

Im not sure if this helps but if your track geometry is known and you store it in a variable, you can use that variable in the mesh definition and port definition that comes after the mesh and geometry setup. That way the port length should always correspond to the height of your track.

Paul

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Re: Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Tue 21 Jan 2020, 21:12

Thanks for the suggestion Paul. Currently my automeshing tool just works on csxcad primitives, whereas that would require me to extend it in some way. I guess I could create the microstrip line twice: once for the automesh and then for the port. I don't think them overlapping would be a problem. I'm just not a big fan of this approach because it feels like it should be unnecessary.

I'm getting much better results now (no reflection and more accurate Z0), after changing the microstrip line to have a nonzero height. From thorsten's last comment it does sound like i could improve this further with the approach used by ports for voltage and current probes, which sounds like it can differentiate between signals travelling forward and backward along the line. If there's any information on how to implement that I'd love to hear it. I'll keep working on this and post the most recent results soon, in case anyone comes across a similar issue.

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Re: Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Wed 22 Jan 2020, 05:34

Here's a plot of the openems result vs the wheeler approximation (https://en.wikipedia.org/wiki/Microstri ... _impedance) over a sweep of trace width. It's looking much closer, although still a little off and I'm not sure how to explain the bumpiness.
scratch.png
scratch.png (18.89 KiB) Viewed 5784 times

PaulUK
Posts: 79
Joined: Wed 28 Oct 2015, 14:23

Re: Problems calculating characteristic impedance for Microstrip line

Post by PaulUK » Wed 22 Jan 2020, 11:01

When you setup your mesh, do you have mesh lines on the edge of the metal strip or are you following the 1/3 2/3 rule? Although initially counter intuitive, you should not have mesh lines on the edge of planar tracks but have one line 1/3 of the mesh resolution inside the track and a mesh line 2/3 of the mesh resolution outside the track. There is a page about meshing on the wiki.

huszaghmatt
Posts: 26
Joined: Fri 19 Jul 2019, 00:22

Re: Problems calculating characteristic impedance for Microstrip line

Post by huszaghmatt » Thu 23 Jan 2020, 20:50

Thanks for the suggestion Paul. Yeah these results incorporate the thirds rule (read that wiki page, found it super useful).

Post Reply