[elektro] Teljesitmeny meres FFT segitsegevel

uprogc . uprogc at gmail.com
Mon Sep 28 12:31:20 CEST 2015


Sziasztok,

Nem vettem figyelembe hogy az ADC 2 -es complemens 24 bit egesz, es az
int-->float konverzional a konverziot vegzo fuggveny oszt 2147483648 -el.
Ezzel az ertekkel visszaszoroztam, de most tul nagy erteket mer.
Ezt meg ossze lehet jobban vnni, tudom, csak az erthetoseg kedveert irtam
igy.
Valakinek hatha van tovabbi otlete hozza.

A cel az fft kimeneten mar megszurt ~3.5 - 4 kHz savszelessegu jel
teljesitmenyenek a merese. Csak a real resznek a teljesitmenye erdekel,
mivel ebben van a demodulalt SSB spektruma.

static void calc_power_of_inp_sig(float *val, float *input_vect, float
*tmp_vect, unsigned int n)
{
    unsigned int i;
    float f;

    *val = 0;

    for(i=0; i < n; i++)
    {
     tmp_vect[i] = input_vect[i*2]; // just the real values from spectrum
     tmp_vect[i] *= tmp_vect[i]; //^2
     *val += tmp_vect[i];  //P
    }

     *val *= 1.0f / (512.0f );  // divide by 512 = fft size
     *val = sqrtf(*val);          // to Voltage

     *val *= 2147483648.0f; //to adc value
     *val *= 0.5f;                 // Vpp / 2 = Vpeak
     *val *= 1.0f/1.4142f;     // to RMS

     *val *= 1.4901162970e-7f ;    //  2.5 Vref / 16777214.0f *
tmp_vect[i]; ADC data to Voltage
     *val *= *val; // to V^2 = P

     //to dBm
    *val = 10*log10f( (*val ) / 200.0f / 0.001f ) ; // / 50[ohm] / 0.001[W]
; // (1/50.0f*1000.0f
}

Udv.
Szabi

2015-09-27 12:37 GMT+03:00 uprogc . <uprogc at gmail.com>:

> Sziasztok,
>
> Tovabbra sem jo valami. Vagy megmindig felreertek valamit.
>
> FV:
>
> for(i=0; i < n; i++)
>     {
>      tmp_vect[i] = input_vect[i*2]; // just the real values from spectrum
>      tmp_vect[i] *= 6.0f; //  6-al valo decimalas hatasa
>      tmp_vect[i] *= 1.4901162970e-7f; //  2.5f / 16777214.0f *
> tmp_vect[i]; ADC data to V
>      tmp_vect[i] *= 0.5f;    // Vpp/2 = Vpeak
>      // RMS -- Mivel nem osztunk gyok 2 vel, beszorozzuk gyok 2-vel
>
>      tmp_vect[i] *= tmp_vect[i]; //^2
>
>      *val += tmp_vect[i];  // SUM
>     }
>
>      *val *= 1.0f / 512.0f; // divide by 512
>     *val = 10*log10f( (*val) / 50.0f / 0.001f ) ; // / 50[ohm] / 0.001[W]
> ; // (1/50.0f*1000.0f
>
> -200 dBm-et mer kb -90-110 helyett.. De jo is lenne ;)
>
> Udv.
> Szabi
>
> 2015-09-26 22:20 GMT+03:00 uprogc . <uprogc at gmail.com>:
>
>> ui:
>> Matlabban nincs ADC, es az 1 Vp teszt jellel sem lett jo a Parseval's-al
>> szamitva
>> A legutobb leirtakkal pedig jo lett.
>>
>> 2015-09-26 22:17 GMT+03:00 uprogc . <uprogc at gmail.com>:
>>
>>> Huu, tenyleg az ADC ... :)
>>>
>>> Koszi.
>>>
>>> Udv.
>>> Szabi
>>>
>>> 2015-09-26 22:00 GMT+03:00 Info <info at kiralyelektronika.hu>:
>>>
>>>> > Ezert van 50 ohmra szamitva kesobb a teljesitmeny.
>>>>
>>>> Miből? Kefírből? :)
>>>> Mire skáláztad az A/D utáni kiértékelés kimenetét?
>>>> A Te képleted akkor fog jó lenni, ha 1W = 50 (szám).
>>>> Azaz "P = 1/N * SUM( BIN ^ 2 ), ahol N az FFT merete."
>>>> itt a "P" betű = 50 egy wattnál.
>>>>
>>>> -----------------------------------------
>>>>           elektro[-flame|-etc]
>>>
>>>
>>>
>>
>


More information about the Elektro mailing list