Hi All. The purpose of this project for me was to find a way to design and simulate and design antennas without software like HFSS, CST, or FEKO. I stumbled upon OpenEMS. Besides the fact that you have to manually mesh your antenna, it is spectacular!
The antenna that I want to simulate is a tri-band antenna I found in the research paper named below:
Miniature Multiband Inverted-F Antenna over an Electrically Small Ground Plane for Compact IoT Terminals
Authors:
Leonardo Lizzi, Fabien Ferrero, Christophe Danchesi, and Stephane Boudaud
This antenna is intended to be used for a small tag that can be located by some other device. It covers the GPS L1 and L2 bands, and it also covers the 915 MHz LoRa band.
I started with using FreeCAD to model the geometry of the antenna. The copper was drawn with .035mm thickness, and the substrate was drawn with 1mm thickness. I parameterized almost all of the dimensions of this antenna using a FreeCAD spreadsheet so that I could easily tweak dimensions later as I started to run simulations.
Once I drew the structure for the antenna, I exported the antenna as two .stl files. One was substrate.stl , and the other was metal.stl . I then imported these into the Octave / Matlab script we used to run OpenEMS and applied the mesh over which to simulate these STL's.
All the files I generated for this antenna simulation (including the CAD file) will be posted below.
In the Octave / Matlab script we use to run OpenEMS, we need to mesh the antenna. We start by defining the x, y, and z positions of every material boundary in the antenna. This is the part that needs to be changed to accommodate the geometry every time the antenna is changed. Below I have shown the coordinates I started with for meshing the antenna discussed
mesh.x = [-12.5 -11.9 -10.9 -10.475 -9.475 -2.225 -.75 -.475 .15 .525 10.225 10.875 11.425 11.725 12.025 12.5 ];
mesh.y = [-25 2.3 2.75 4.95 5.45 6.35 7.45 8.45 9.25 10.25 12.8 13.7 14.7 15 8.65 10.1 12.35 13.35];
mesh.z = [-.0175 .5 1.0175];
After hitting all the material boundaries with the mesh, we run the SmoothMesh() command to increase our resolution and to prevent large discrepancies between cell sizes of adjacent cells.
The port was the next item to define in the Octave / Matlab script. I defined it as a 50 ohm lumped port spanning from the ground plane to the feed structure.
I also added a lumped element as a resistor of 0 ohms to connect the top and bottom layer in place of meshing the vias. The reason for this was that tiny cell sizes require tiny time steps, and our simulation would take FOREVER. By using a lumped element here, we can define this element over the grid we already have and not add in really fine meshing that would be required to try and capture the structure of the via in this big simulation.
After defining this, we basically just had to run OpenEMS.
I was pretty happy with the results of this project. The S11 scattering parameter of the antenna is shown to the right (and below). All of the resonances are centered on their respective frequencies. That was a challenge because some of the resonances are coupled (beyond the vague coupling of just sharing a geometry). The L2 band is a harmonic of the 915 MHz band, though it is capacitively loaded and pulled down to 1227 MHz band. This made independently moving the resonances difficult.
You may notice my geometry deviates from the paper a little bit. I was able to tune the length of the back arm and location of the first bend in the structure to get LoRa and L2 positioned. Moving the location of the first bend and moving the feed structure were important for tuning the L1 band. The feed structures location was more than just important for determining the input impedance of the antenna at the various frequencies, it also affected the resonance of the L1 band which radiated mostly around the first bend in the structure.
As you can see, L2 goes to -16 or -17 dB, L1 is right at -10 dB. Lora is at about -9 dB. It could use some improvement. It takes about 30 mins to run a simulation, so I'll save this for when I write a python wrapper around FreeCAD and Octave to automatically tweak the geometry and run the simulation guided by a genetic algorithm. For now, and depending on the application and requirements, I'd say this antenna is good enough.
Bunch of Electricals | Matthew Ian Burns
burns.matthewian@gmail.com