# Design Note 1050: Simple and Affordable RMS Power Meter that Operates from 100MHz to 40GHz

### Introduction

RMS-responding RF power meters are widely used in test and measurement applications to precisely and accurately measure the RF power of signals with varying crest factors. These expensive connectorized devices offer a high level of precision, while relying on extensive characterization and calibration, but this precision comes at a cost in size and expense. For far lower cost and much smaller size, the LTC5596, a 100 MHz to 40 GHz rms responding integrated circuit with 35 dB or more detection range, can be used to build a handheld broadband power meter, or even in-circuit, embedded power meters.

The LTC5596’s well-controlled linear-in-dB transfer function and excellent flatness vs. frequency allows for easy calibration—as basic as a single midfrequency two-point calibration, resulting in ±1 dB of measurement accuracy across a frequency range from 150 MHz to 30 GHz. The LTC5596 low power consumption (only 100 mW) and its integrated nature make possible in-circuit and handheld power monitoring solutions.

The simplicity of a complete solution is illustrated by the battery-powered example of Figure 1, where a broadband RF power meter can be built using the available LTC5596 demonstration circuit (DC2158A), an I^{2}C LCD display, and the DC2026C Linduino board running a short firmware program (see Appendix).

Description | Part Number |

LTC5596 Demo Board | DC2158A |

Arduino Board | Linduino DC2026C or compatible |

I^{2}C LCD Display |
I^{2}C LCD Display |

9 V Battery and Wires |

### Circuit Assembly

Figure 2 shows the assembly scheme. The Linduino board has multiple ADC inputs in the analog IN bank—A0 is used here to sample the output of the LTC5596 detector. The display features an I^{2}C interface, which simplifies connections to the Linduino board. The complete circuit is powered through the Linduino board’s auxiliary port including the LTC5596 board and connector.

### Firmware

All of the required firmware runs on the Linduino board. The main function of the firmware is to convert the measured analog input (volts) to RF power (dBm) and display it on the LCD display. To do that, a two-point calibration is recommended to find the slope and intercept point of the LTC5596’s linear transfer function—V_{OUT} vs. RF power in the linear form:

*y = (x – b)m*

where x is input power in dBm, y is the LTC5596’s output voltage (V_{OUT}) that is directly proportional to the ADC code, m is the slope, and b is the x-intercept (V_{OUT} reaches 0). The firmware calculates x based on the measured y, with the values of b and m coming from calibration (explained below). Averaging multiple readings can help minimize the effects of noise.

The Linduino’s onboard ADC has 10 bits of resolution, corresponding to an LSB size of about 4.9 mV. The typical slope of the LTC5596 is 28.5 mV/ dB, resulting in a measurement resolution of approximately 0.2 dB. The Appendix shows sample firmware code that is used for 5.8 GHz to display the input power in dBm.

### Calibration

Although the LTC5596 features a linear-in-dB transfer function. Part-to-part variations result in a range of transfer function slopes and axis intercept points. Since the transfer function is linear, calibration is simple, requiring only two-point calibration (or more, if desired) to assure accuracy.

Figure 3 shows two-point calibration of a typical transfer curve taken from LTC5596 at 5.8 GHz. The two points are used to derive the slope and x-intercept.

In this example,

*Slope = Δy/Δx = (0.83 – 0.26) V/(–10 + 30) dB =
28.5 mV/dB*

*x-intercept = Input Power – V _{OUT}/Slope =
–10 – 0.83/0.0285 = –39 dBm*

These slope and intercept values are used in the code that’s shown in the Appendix.

### Linearity Error

In the data sheet, the log intercept is the x-intercept point on the plot. Linearity error is the difference between the ideal straight line and the actual measured power by the detector. The useful detection range is typically where the linearity error is less than 1 dB. Hence, error can be calculated using the x-intercept point and the slope shown in Figure 4, which shows the linearity error of a typical device a system can achieve with two-point calibration.

*Error = V _{OUT}/Slope + (x-intercept) – Input Power*

### Conclusion

The LTC5596 brings small size, unprecedented simplicity, and low power requirements to accurate RF power metering in the 100 MHz to 40 GHz range. It makes possible complete solutions that are small, efficient, and accurate enough to satisfy the requirements of a portable handheld RF power meter, or even act as in-circuit, embedded RF power meters. Firmware overhead is minimal because of the well-behaved and broadband transfer function of the LTC5596, which is linear-in-dB. Two-point calibration can be performed at a single mid-band frequency with good accuracy, or at more frequencies for improved accuracy. More importantly, the LTC5596 rms detector is capable of accurately measuring the power regardless of the type of modulation. Even with simple two-point calibration, the results are accurate—less than 0.3 dB of error independent of the modulation waveform. In contrast, other expensive commercial units require extensive calibration and characterization.

### Appendix: Sample Code for Linduino Board to Convert the ADC Reading to dBm and to Drive the Display

#include <wire.h> #include <liquidcrystal_i2c.h> LiquidCrystal_I2C lcd(0x3F,20,4); // set the LCD address to 0x3F for a 20 chars and 4 line display int analogPin = 0; //set up analog IN channel 0 double val = 0; double slope = 0.0285; // slope in Volts per dB double xint = -39; //log intercept in dBm @5.8GHz double power = 0.0; double totalval=0.0; void setup() { lcd.init(); // initialize the lcd lcd.backlight(); lcd.setCursor(0,0); lcd.print(“LTC5596 RMS DETECTOR”); lcd.setCursor(8,3); lcd.print(“dBm”); } void loop() { for(int i=0;i<20;i++) // Average 20 ADC readings: { val = analogRead(analogPin); delay(10); totalval= totalval + val; } totalval=totalval/20.0; power = (totalval*0.0049/slope)+xint; // Convert to Volts, calculate dBm lcd.setCursor(0,3); lcd.print(power); } </liquidcrystal_i2c.h></wire.h>