Create project Need help?

RF Power Meter with 1MHz-10GHz bandwidth and 55dB dynamic range

Status: Finished
October 22, 2015 , Latest update: August 16, 2017
in Elektor magazine | March 2018 | Find it here

What is it

An RF Power Meter is a device which you can use to measure the power a transmitter outputs.

Why did I built it

I'm a member of the model aircraft club FMS Spaarnwoude near Amsterdam and I started building and flying drones. I currently own an octocopter with 1m span and added a camera with gimbal and a live video link to it. But here in the Netherlands the regulations are strict. On the 5.8GHz band the maximum transmission power is 25mW. Which is more than enough because you are also not allowed to fly higher than 100m and your aircraft always has to be in visible range. But because I am flying near the biggest civil airport in the Netherlands, Schiphol Airport, I want to be sure that I am not transmitting more power then allowed. A friend of mine bought an RF power meter from ImmersionRC, but it costs around 190 euro's, which I find way too expensive. I told him that I probably could make my own RF Power Meter for about 50 euro. It turned out to be even less.

How does it work

It was actually not that hard to design a RF Power Meter. There are integrated circuits called Log Detectors which translate measured power into a voltage. So it was just a matter of searching the right log detector. I ended up using the AD8317 of Analog Devices. It has a 1MHz to 10GHz bandwidth and a 55dB dynamic range. I used the basic schematics as drawn in the datasheet and also used the pcb layout suggested by the datasheet for my own design. 

The only disadvantage of using the AD8317 is that it comes in a CP-8-1 SMD package. Which is quite an unusual package I believe. It is only 3x2mm and has 7 pads underneath the package. 6 of them just barely visible and one middle pad which cannot be reached. The middle pad is attached to GND and used as a thermal pad. It is hard to solder this kind of package with an solder iron because only 0.1mm of the outer pads are exposed on the outside and you need to use a magnifying glass. With a solder iron it will also be difficult to solder the thermal pad because it cannot be reached at all. But I just finished building my own reflow oven out of a 30 euro toaster and a Zallus controller (which is really good), so I thought it would not be any problem to mount the package on the pcb. It is wasn't a problem at all. And it can also be done using a rework station with hot air gun. No problem at all. Just be sure not to use too much solder paste.


The input comes in at X2, the maximum input is about 0dBm, so you will have to use an attenuator when the power is more than 1mW. The absolute maximum is 12dBm, but all above that will not give a good reading. R1 and R2 form a 52.3Ω resistance and combined with the internal input impedance of the AD8317 it will give a broadband input impedance of 50 Ω. C1 and C2 are DC blocking capacitors and together with the input impedance they will create a high pass filter with its corner at around 68kHz. R3 is used for temperature compensation and I chose it to be 500Ω because it is the recommended value when measuring 5.8GHz, which I will probably use the most. See the datasheet at page 12 for other values. C3 is there to define the low pass demodulation filter of the output signal Vout. I took the default value of 8p2 because I'm not interested in demodulation. The output signal of the AD8317 is directly connected to the analog input A0 of an arduino nano. I chose the arduino nano because it is cheap ($4), easy to program and fast enough for our purposes. U1 is an LM4040 2.048V external voltage reference. The internal reference of the arduino is not accurate enough. An 2x16 LCD in 4 bit mode is used to display the measured values. 3 buttons with pull down resistors R7,R8,R9 are added to be able to navigate through the menu's. R5 is used for adjusting the lcd contrast. R6 is in series with the lcd backlight to limit the current. The pcb does not contain any voltage regulator. The regulator of the arduino nano is used to power the other components as well.

PCB Design

I designed the double layer pcb in Eagle. The RF part is layed out as advised by the datasheet. I want to shield the RF part so I made a gap in the silkscreen for that purpuse. But it also works fine without the extra shielding. The rest of the board is quite straight forward. It is possible to make the board smaller by placing the arduino and RF components underneath the LCD. But I like the size as it is now. It is also easier to connect the mini usb to the arduino when programming it. I've let seeed studio make the pcb, it only costs only $14 for 5 pcb's (which is the minimum amount you can order) and I am very pleased with the quality.


The software is quite simple. The main loop of the software first takes 500 samples then it calculates the average power, Peak envelope power, minimum power of the last 10s, maximum power of the last 10s and the modulation index. It then draws the screen and then it starts taking the next set of 500 samples.

Before reading the calculated values from the display the proper attenuation and frequency must be selected. The selected frequency must be near the frequency of the signal being measured. The selected frequency can be 900MHz, 1.8GHz, 2.2GHz, 3.6GHz, 5.8GHz or 8GHz. The conversion of the measured voltage by the ADC and the actual power in dBm is a linear function with a slope of -22mV/dB, but the starting point of the function is different for each frequency. The starting points of these frequencies are in the datasheet. It is possible to add other frequencies, but you will have to calibrate them with a power source of which you know the power it outputs for that particular frequency. Since I do not have such a device I am not able to calibrate the device I took the values from the datasheet. Therefore I did not add a calibration function to the software yet.

The software will also give you a warning when too much power is put into the device and when the amount of power is too low. Too low power will result in a large error according to the datasheet. By pressing the up or down button you can scroll through the measure menu's. All power values are in dBm and Watt. You can select the frequency and attenuation by clicking the enter button when in the main screen. Pressing the enter button when in the min or max screens will reset the 10s history which is used to calculate the min/max power and modulation index.


I started with a cheap 30dBm attenuator from aliexpress, but I know these are not very accurate. So I do not know the exact attenuation. I also do not know the frequency charcteristics. So I ordered a VAT-20W2+ (20dBm) and VAT-30W2+ (30dBm) attenuator from minicircuits. These come with a datasheet and I added those models with their characteristics to the software. Now it is possible to either select one of those models of set a custom attenuation. When selecting a model the software will sets the attenuation for the selected frequency according the datasheet provided by the manufacturer of the attenuators.


I've designed a case in DesignSparks Mechanical which can be printed with a 3D printer. These and the stl files have been added to this article.

Bill of materials

Part Value                 Package              Costs (euro)
C1   47n                    C0805                   0.08
C2   47n                    C0805                   0.08
C3   8p2                    C0603                   0.08
C4   100n                  C0805                   0.08
C5   100p                  C0805                   0.08
J1   6-20V                 SPC4078               1.21
PCB1 ARDUINO_NANO                          4.00
R1   51                      R0603                   0.02
R2   1.3                     R0603                   0.02
R3   500                    R0805                   0.02
R4   620                    R0805                   0.02
R5   10k                    LI10                       0.02
R6   330                    R0805                   0.02
R7   10k                    R0805                   0.02
R8   10k                    R0805                   0.02
R9   10k                    R0805                   0.02
S1   DOWN               B3F-10XX              0.60
S2   ENTER              B3F-10XX               0.60
S3   UP                     B3F-10XX             0.60
U$1  AD8317ACPZ-R7                          11.59 
U1   LM4040C20IDBZTG4      SOT95    3.19
U2   LCD-16X2  5V                               3.95
X2   SMA-142-0701-801/806                  8.00
PCB                                                       2.00
30dB attenuator                                     8.00
Total  costs                                            42.52



Software V1.1

  • Added the ability to select a predefined attenuator profile of the Mini-Circuits VAT-20W2+, VAT-30W2+ or a custom attenuation. When selecting one of the two profiles, the correct attenuation is selected for the selected frequency.
  • Attenuations now have 0.1 dBm accuracy.
  • Attenuation settings now have been moved to a separate menu item.


Schematics / board

  • Added a diode for polarity protection


If you have any questions please ask. I'm happy to answer them. You can use and change the software as you like. Maybe you can sent a better version of it to me or add some more features. I was not able to test the modulation value becaus I currently do not have a signal generator which can generate AM signals. Maybe someone else can test it and send me the results. The function may be useless.

Joost Breed

Read the full post
Show less
PCB as delivered by Seeed Studio
PCB with smd components
PCB with lcd and arduino
Working version
Exploded view of case
3D printed case
Image of PCB
Only use this when you work with the old pcb without input power protection diode!
  • PCB (17.67 KB )
    PCB REV2

Loading comments...