Small PCB and antenna simulations

I’ve been toying around a bit with small PCBs and small antennas as a follow-on to the discussion in Ceramic Antennas vs Stamped Metal Antenna. I’m working a small LoRa temperature/humidity sensor and started out with a PCB the size of a CR2032 holder, approx 35mm x 20mm and was wondering what to do about the antenna…

I did some brainstorming around the notion that the length of the PCB should be at least a quarter wavelength for good RF performance and came up with an alternate design, which is to use a AAA LiFePO4 battery (41mm long) plus a long and skinny PCB (about 12x40mm). By putting them back-to-back I can get my quarter wavelength ground and have a quarter wavelength wire stick out at one end for the antenna. (I guess that makes it really a dipole where one half contains the circuitry and battery.) From a physical design point of view, the whole thing can go into a 13mm tube and look quite neat.

That all sounded great. So I figured I should try to see whether I can simulate the various options to determine how much I stand to gain in terms of TX/RX. After spending hours trying to figure out how some of these NEC2 front-ends work here is what I found.


I started with a dipole (dipole structure along the z axis on the left, radiation pattern on the right):

The length of the dipole is 152mm and I’m focusing on 912Mhz. The simulated gain and impedance (71Ohm) look correct.

Long and skinny board with AAA

I then created a model for the long and skinny board:

I modeled the PCB as a grid of wires and then there’s the monopole sticking out at the center top. I picked an 80mm board length (really PCB + battery) and tuned the monopole length! Surprise… the overall length top to bottom comes out to 152mm.

The gain is a tad higher than for the dipole, the impedance dropped a little, vswr is a tad worse.

CR2032 board

Now on to the CR2032 sized board:

You see how the board is much shorter. Well, for tuning, guess what, the monopole needs to be much longer to arrive again at 152mm total overall length.

Gain dropped a bit, vswr is better, impedance is around 55Ohm.

CR2032 board with helical antenna

Playing around a bit… This is the small CR2032 sized board with a small spiraled up antenna wire:

I found that very difficult to tune, small changes in almost any dimension throw it way off. Poor vswr, awful impedance… if these simulations are really representative of reality, it’s eye opening…


So really what’s going on is that each time by tuning the monopole I end up with a half-wave dipole that, in some cases, is fed off-center. The helical antenna seems like a recipe to be guaranteed something mediocre.

I hope I didn’t make a stupid mistake somewhere, but it all seems to hang together…

I read in Wikipedia that “If a half-wave dipole is driven at a point other the center, then the feed point resistance will be higher.” but I don’t know where/how that would show up in these simulations.

I’m thinking of making a few physical mock-ups using some FR4 and/or copper tape and then measuring using my el-cheapo VNA, but before I go there, I’d love to get some feedback.

NB: is there any better simulator than NEC-2 that is affordable?

I use Matlab, which isn’t cheaper, but it’s not terrible.

Tuning standard dipoles and monopoles is relatively easy. Feeding off-center is fine – just get the impedance you want. Some of the more advanced, compact 900 MHz dipole designs are from UHF RFID tags (e.g. EPC Gen2). Check out these – google images will do it. Most of them are using a dipole that’s tuned with a loop (i.e. an off-center tap and a ground tap).

Helical antennas are a bit different because they introduce significant L and C loads into the antenna structure. So the tuning becomes trickier. Also, they create more demands on the ground plane. You will want to increase the electrical length of the ground plane. Building good, electrically small antennas is a niche I’ve spent years working-on. It’s not easy because there are so many tradeoffs.

One thing that’s easier than using a helical antenna (and tends to yield better results) is to use a wirewound inductor at the base of a straight, trace antenna. This will reduce the size, also reduce the bandwidth, but the efficiency will be still very good. You can tap-tune somewhere along the base (before the inductor) to get the tune right. I’d recommend giving this a try. LoRa doesn’t do more than 22 dBm, so you won’t blow-up the chip inductor.

1 Like

@jpnorair are you using commercial Matlab libraries or toolboxes? Would GNU Octave be feasible? (not costly and not terrible? :wink: )

Thanks for the tip. You mean designs like:

What’s the big blob at the end of the dipole for? I.e. why not end in a thin trace? Is that an rfid peculiarity?

You mean tune using a parallel capacitor or inductor, as opposed to, say, a pi network?

1 Like

By “tap-tune” I mean to use a single half-wave wire as the element, with a feed tap and a ground tap. See the RFID tag above.

The RFID tags above presumably have wide ends because it doesn’t cost more (this is a subtractive process) and because it will give slightly improved bandwidth. Also looks like they have some parasitics for the purpose of better matching.

I am using the antenna toolbox and a few others, but if you’re really averse to the idea of paying money, if octave has partial differential solvers, these are the basis for numerical simulation of antennas.

There’s also a product called CENOS, which is in beta. There will be a GPL-style community version for free. I think it’s too slow, but you could perhaps look into it.

Those RFID antennas are not all that small. The one in the right-bottom image in my post above is just under 95mm long, so about 62% of dipole length. (no free lunch…)
Alien has a “squiglette” design that is a bit smaller, 70mm x 9.5mm:

They don’t provide RF gain and similar info since it’s a whole pkg including the rfid chip.

There’s a light-textbook called "Electrically Small, Superdirective, and Superconducting Antennas. I bought it years ago, but somewhat more recently it was fed to me as a PDF via I suspect you can find it as a PDF on the internet.

It is a good survey about techniques for electrically small antennas (often called ESAs), and it helps to introduce some of the jargon (like ka).

The author is (at a minimum) the creator of the leaky-line antenna structure.


Hi folks. I have a question related to antenna. I took reference design from nRF52840 and on the output I have a LC filter in pi configuration with C->0.5pF L->4.7n and C->0.8pF. And the question is how may I figure it out how this filter will impact freguency of bluetooth antenna. It should be around 2.45G but it is not. How can I start with this? for any answers thank you :slight_smile:

My understanding is that the pi filters on the RF output of BLE devices typically have two functions: filtering and matching. It is relatively common to have a low-pass filter to reduce the 2.4GHz harmonics to pass RF testing. And, it is typically a good idea to have a matching network to match the output impedance to that of the antenna.

In the nRF52 case, the output impedance isn’t 50 ohms, and the output needs to be filtered, so that network is doing both. Source:

So from my understanding is that this pi filter is also responsible for shifting my frequency from 2.45GHz?

The best thing you can do (IMO) is download QUCS (or similar), draw the circuit, and then find the best values to match the passband and impedance you want.

The pi filter will not shift the frequency of the output, but it can change the resonant frequency of the antenna. You can always just remove the Pi filter and see what happens. 99% of the time, Pi filters in reference designs are superfluous.

If I have matching components like pi filter should I have ground belowe this components or should I have keepout?

You’ll want a ground plane, yes. You can use a microstrip calculator (there are tools that do this for you) to determine the optimal trace width. Usually, you’ll want to use 0402 or 0201 passives in an RF front-end because the size of the pads should be ideally the same width as the trace.