Power Measurement with GNU Radio
I wanted to try GNU Radio with an SDR for power measurements. On this page I describe a way in which I use the Function Probe in GNU Radio to display the measured value in dbm. I also wanted to be able to vary the bandwidth within which the power is measured in order to increase the total power of a signal with a large bandwidth such as DATV or the sum of several signals.
I am also interested in the dynamic range. The receiver used is a HackRF sdr. This SDR has an 8-bit ADC. The dynamic range would theoretically be 48 db.
GNU Radio Sketch
The complex IQ signal first goes to a high pass filter to remove the central peak. Then to a low-pass filter to set the maximum bandwidth. If I change the bandwidth from 8 MHz to 4 MHz then I also measure 3 db less noise. I measure 3.6 db and do not yet know where that extra noise reduction comes from. That is something to investigate later.
The signal then goes to the complex to mag^2 where the power is measured. These values are averaged in a Moving Average block. This block is necessary because the values jump between the measurements differently and with this block you get a calmer image of the value. Then the log10 is taken to convert to db. The signal is measured with the Probe Signal block. This value can then be retrieved with a Function Probe block and then displayed in the screen with QT GUI label. I had to reduce the measured value in the block by 30 db to show the actual dbm value.
Measured in large bandwidth (8 MHz, 4 MHz), the measured value never deviates more than 1.5 db from the power from the signal generator. With a smaller bandwidth, the deviation can amount to more than 3 db. Useful in itself if you want to get an idea of the signal levels
First I measured the output of my old Farnell SSG520 Signal Generator with a detector by setting it in steps of 10 db from min to max. You can set this from -110 dBm to 0 dBm. The frequency used is 146 MHz. The detector measures from -60 dbm to +10 dbm.
In the graph below, the set value on the signal generator is set against the value measured by the detector.
The same measurement by the signal generator in steps of 10 db from -110 dbm to 0 db was performed with GNU Radio. At around -30 dBm, the HackRF becomes saturated. That is therefore the maximum. The power can be measured just after -80dbm. It looks like the dynamic range is just over 46 db and that corresponds to the theoretical value. In the graph below the measured values at different bandwidths in which was measured. With the small bandwidth, the noise level is of course slightly lower.
HOME | Go Back