Antenna design and matching

At the moment, I'm working with Bluetooth Low-Energy devices and it very quickly became apparent that designing a PCB with a BLE antenna (no matter which type) is nowhere near as simple as designing the kind of boards I usually work with (MCU, digital circuitry and senors and a couple of actuators).

Starting to read up on the topic of antenna design only served to confuse me even further. So while this blog post is not a comprehensive guide to antenna design, but more of a brief recap of what I have learned so far, I hope it can help others about to learn antenna design.


The basic premise is that we want to build a device consisting of a transmitter and receiver (since BLE is two-way communication) that can communicate as efficiently as possible with another transmitter/receiver device. A higher degree of efficiency means a longer range for the same power usage (sure, you could just pump several megawatts of power into a poorly designed antenna and get a good range out of it but we don't want to do that for many reasons).

Within very few minutes of starting to read about antenna design you will encounter the term "impedance matching". And that is basically what this entire post is about. In a system where impedances are perfectly matched, all of the power leaving the transmitter IC (in our case a Nordic Semiconductor nRF51822 BLE SoC) will be delivered to the antenna. In a system where impedances a not matched at all, none of the power leaving the IC will be converted to RF energy and the resulting range of the device will be zero. The more power that reaches the antenna, the better efficiency we achieve and the better range we get. A perfect match is simply not possible so we're just trying for "as good as possible given the constraints of power, space, time, money and level of ambition".


You can read many, many, many pages about impedance (personally, I recommend the book "Teach Yourself Electricity and Electronics" by Stan Gibilisco (e.g. here on Amazon). It's clearly written, easy to read but it doesn't oversimply things by reducing everything to water metaphors and Arduino circuits). Basically, impedance is resistance for alternating current. Radio signals are AC until they leave our board, so we care about impedance (impedance is still a thing after the signals leave the PCB but by then it is out of our control so we no longer care about them).

With AC, things are more complex than with DC so impedance is specified in complex numbers. I will completely ignore the theory behind complex numbers and simply say that complex numbers, unlike normal numbers, have two components. We will write impedances thusly:

Z = R + jX

Where R (the real part of the complex number) is the resistance and X (the imaginary part of the complex number) is the reactance (and j – which is often written as i instead – is the imaginary unit which is the square root of -1– don't worry about that).

It is also possible to use polar notation (Ae) with A and θ specifying amplitude and phase, respectively. But we are not going to use that notation in this post.

Characteristic impedance

Transmission lines are wires that transmit an AC signal. In our case, PCB traces transmitting the signal are transmission lines. These traces also have impedance and this is called characteristic impedance and is denoted Z0.

50Ω impedance

All over the place you will read about components having "50Ω impedance". This actually means having "a purely resistive complex impedance with a value of 50 + j0" so the reactance part of the impedance is 0Ω. In other words: don't get confused if you see "50Ω impedance" and "50 + j0" in other places – they are the same.

And for reasons unknown to me (i.e. I didn't bother to Google it), 50 Ω is very much a standard value in this kind of systems. Almost all antennas are rated as having a 50Ω load.


If the components in the circuit do not match – i.e. do not have the same impedances – part of the signal's power will be reflected back and wasted as heat. As mentioned, we are aiming for as little reflected power as possible since this is power that is not going to be converted into RF energy.

Reflection can be specified in several ways:

  1. Complex Reflection Coefficient (Γ): this is a complex number calculated from the characteristic impedance of the transmission line and the impedance of the antenna. We are not going to use that but it is the basis for the other values.
  2. Voltage Standing Wave Ratio (VSWR or SWR): the ratio of the highest to the lowest voltage in the transmission line. The value is expressed as a ratio: 1:1 is a perfect match, while 1:10 is very bad. Somtimes, the value is expressed as a single number which is then the X in "one to X" (so 1 and 10 for the above values). If VSWR for a system is 1:1.5 or lower, then it is good; if it is 1:2 or higher, it's not so good.
  3. Return Loss (dB): measure of how much power is lost to reflection. This is measured in negative dB. A value of -15 dB or lower (lower meaning a higher negative number like -25 dB) is good; a value of -10 dB or higher (like -5 dB) is bad.
    Sometime, you see Return Loss specified as a positive number. This is actually wrong, but just pretend it has a minus in front of it.

All of these basically measure the same thing and they can be converted from one to the other with a little bit of math.

Matching components

Right, so we now know that the various parts of the system need to have matching impedances in order to minimize loss due to reflection.

Our system consists of:

  1. The Radio IC. The BLE chip itself where the signal output starts.
  2. Transmission line or feed line
  3. Antenna

And even though both the IC and the antenna is specified as having "50Ω impedance" this is only true under ideal and prefectly controlled conditions in a laboratory. In real life, everything affects the impedance. If you look at the circuit cross-eyed the impedance will likely change.

Therefore, we need to perform impedance matching in not only one, but two places:

  1. Matching the output of the chip
  2. Matching the input to the antenna

Also, we need to design the feed line (the trace going to the antenna) so it has a characteristic impedance (Z0) of 50Ω (actually 50 + j0).

So now our system looks like this:

  1. Radio IC
  2. Matching circuit (or balun – we'll get to that)
  3. Feed line
  4. Matching circuit
  5. Antenna

In practise, tough, we are only going to perform impedance matching bewteen the feed line and the antenna. The impedance matching at he IC-to-feed line point will be done using a balun.


The output from the IC can be either single-ended or differential. On an nRF51 chip, the output is differential. This means that not one, but two traces carry the signal. Conversely, single-ended means that only one trace carries the signal (together with the ground signal).

A balun (short for "balanced to unbalanced) converts a signal from the balanced, differential to an unbalanced, single-ended signal and at the same time performs impedance matching. (A balun doesn't necessarily perform any impedance matching, but in our case it does.)

For nRF51 IC's we will perform both "unbalancing" and impedance mathing in the balun. The balun can be implemented using either discrete components (a couple of inductors and capacitors) or using a single, integrated balun. An integrated balun – e.g. Johanson Technology's 2450BM14E0003 designed specifically for nRF51822/422 chips – is a small (1.6 x 0.8 mm) chip containing all the capacitors and inductors making up the balun and impedance matching circuit.

The benefit of using an integrated balun is that it is already matched for specific chips and if you stick to the specified layout you don't need to perform any other impedance matching of the chip outout signal. Also, it takes up very little space on the PCB.

In my circuits, I will use only integrated baluns.

Types of antennas

A very brief digression on antenna types: For BLE devices we usually use of of these types of antennas:

  • PCB trace antenna:
  • Chip antenna
  • Wire antenna (less often used)

They all have advantages and disadvantages which you can read about elsewhere but they all need impedance matching. Even if the design for a PCB trace antenna or the datasheet for a chip antenna says stuff like "this design will result in 50Ω impedance for sure" then it still needs impedance matching because pretty much everything can affect the impedance: the material and exact thickness of the board, the shape of the ground plane, position of vias to the ground plane, other components on the board, the enclosure and other things.

Now, when I say "they need impedance matching" I mean, "they need impedance matching if you want good performance". You can copy/paste PCB trace antenna designs or mount chip antennas with the reference design matching circuit and it will probably work. But your range might be very poor. Sometimes as poor as 5 to 10 centimeters.


To match impedances in a circuit, you need a vector network analyzer ("VNA"). This instrument will measure complex impedances and allow you to calculate the necessary impedance matching circuit. Unfortunately, a vector network analyzer is expensive. And I mean, really ridiculously expensive. They easily cost more than 20.000 € (you can get a pretty nice motorcycle for that kind of money – even in Denmark).

Cheap vector network analyzers

There are some cheap VNA's out there. They are nowhere near as good as the expensive ones and proper engineers will sneer and scoff at them. But they are still a lot better than nothing. And for matching simple 2.4 GHz circuits for non-professional work, they can be used. Here is a couple:

  • PocketVNA: USB-based VNA. Price: €390. ← that's what I bought.
  • MiniVNA Tiny: USB-based VNA. Price: €400.
  • KC901S+: a Chinese built VNA with screen. Price: $1.400. ← I have that one as well, but I like the PocketVNA better.

I don't have a VNA – what do I do?

You don't perform any impedance analysis. And then you have two options:

  1. You use an integrated balun for the chip matching, calculate the proper feedline impedance, mount a U.FL connector and attach an external antenna.
  2. You copy some other design, be sure to follow all guidelines (ground planes, vias, position etc.) and accept that the performance may be poor.

Both of these options will work. And if you are a poor hobbyist (like me) who doesn't want to buy even one of the "cheap" VNA's (unlike me, heh) then that will have to be good enough and you can skip the rest of this post :)

Measuring antenna impedance

I'll assume you have a VNA handy at this point and that you more or less know how to use it. Before we get started measuring we need to be able to connect the VNA to the antenna.

Where and how to connect VNA probe?

Connect the VNA probe right before the matching network so both matching network and antenna will be included in the measurement.

Leave the balun off the board when you measure. We only want to measure the antenna, not the balun and radio IC. So there should be no connection from the probe point and "back" towards the balun and IC.

You can Frankensolder the probe directly on the board but I prefer to use a U.FL connector. They are not very big and they are easier to work with. It also makes easier to perform the VNA calibration with the same U.FL-to-SMA or -N type cable so the "calibration plane" is closer to the devices being measured which will improve readings significantly.

Leave room on the PCB so you can solder a U.FL connector on. You shouldn't vary the feed line trace width. Basically just remove solder mask on the trace and next to the trace on the top ground place. I have made a "minimal" U.FL connector part in EAGLE. that I place directly on top of the feed line. The pads in my part have no thermals and no solder paste. In effect, it is just a place on the feed line and two spots next to the feed line with no solder mask. The connector should be placed as close to the balun's output pin as possible. They can even overlap a bit – you are never going to have both U.FL connector and balun mounted at the same time.


First, calibrate the VNA by following the instructions. Whenever possible, calibrate with the U.FL connector and wire attached.

Also, be sure to "cancel out the probe". Since the place where the calibration is performed ("the calibration plane") is often not the same place as where the measurements are taken (because of the cable from the VNA to the PCB), the phase of the measurements will be offset. Again, follow the instructions of the VNA manufacturer to do this – it is usually called "port extension" or "port compensation".

If the board has a pads for tuning components, make sure there is a 0 Ω resistor (well, not really a resistor if it's 0 Ω, but...) mounted on the series component so there is no extra impedance from the measurement point through to the antenna.

Configure the VNA to mesaure S11 (power reflected from port 1 into port 1) and set the center frequence to 2450 MHz which is pretty much in the middle of the BLE frequency spectrum. Set the span to 500 MHz or thereabouts. Set the VNA display mode to "Smith Chart" and configure a marker to be shown at 2450 MHz.

Now attach the VNA to the device ("DUT", short for "Device under Test") and perform measurement. The resulting Smith Chart will give you an indication of not only how far away from the ideal 50 + j0 Ω impedance the antenna circuit is, but also in which "direction". The "direction" can be both the higher/lower resistance and higher/lower reactance. Read more about Smith Charts here.

Here is a measurement from the prototype board. The range is 2.2 GHz to 2.6 GHz:

The chart shows the 2450 MHz is actually not too far from the ideal 50 + j0 Ω. In this case, the results are:

  • Return loss: -16.7 dB
  • Phase: -106°
  • R: 44.5 Ω
  • X: -12.7 Ω
  • |Z|: 46.2 Ω
  • VSWR: 1:1.34

Or an impedance of 44.5 - j12.7 Ω for a return loss of -16.7 dB. In this case, that's good enough for me, but if I really wanted to get better performance or if the measurements were off by more, tuning would be required (actually, that is very much the norm – hitting 45-j13 Ω without any tuning is pretty lucky).


For this section, I'll use a different measurement which is a lot worse than the prototype board just to show the process.

We could calculate the necessary steps to move to exactly 50 + j0 Ω manually. This document from Nordic has a really good section about how to do just that. It also explains a lot of basic antenna tuning stuff so read that.

However, we could also auto-tune. To do that we need a piece of software. I use Atyune which is both free and good.

The VNA can export mesaurements in standard .s1p or .s2p files which can be opened in Atyune (and most other antenna analysis/design software packages). The .s#p file format is called "Touchstone SnP Format" and is the de-facto standard for VNA data files.

Opening the s1p or s2p file in Atyune and specifying the desired band (in our case, Bluetooth LE) allows you to visualize the data in several ways. Here is a Smith chart with a marker on 2450 MHz:

It's clear to see that tuning is required here. The 2450 MHz marker is way off at 15 - j41 Ω.

Atyune allows you to specify a target for optimization. And you can also specify which components you are working with so the auto-tuning can pick appropriate components. I chose a target of "2400 - 2500 MHz @ z= 10 dB" and "Generic 0603 components" and after running optimization for a "two-component circuit", I got this:

On the PCB, I have a PI-network which consists of three components, but I'm only using two of them.

Atyune also plots the simulated impedance with the optimized circuit. And that looks like this:

The brown line is the plot for the optimized circuit. And with a marker on 2450 MHz, we get an impedance of 33 + j18 Ω which is a lot better than our initial impedance.

The Real World

Unfortunately, the real world is more messy than the simulations so mounting the components from the auto-tuning will never result in a perfect match or the impedance shown in the simulations. So it might be necessary to go back and forth between measuring and tuning a couple of times before you're happy with the results.

This article has some good advice on how to tune antenna circuits.

Also, remember that everything affects the antenna performance. So if you performed measurements and tuning on a "naked" PCB, the measurements will change when the rest of the components are mounted. And they will change when the device is mounted in an enclosure. And they will change when the device is placed in a different place. But, if we're lucky, they won't change by much and the end-result will be good enough.

Leave a Reply