Avatar billede test123 Nybegynder
26. juni 2001 - 23:13 Der er 11 kommentarer og
1 løsning

Beregning af True-RMS

Jeg mangler lidt kode til at beregne True-RMS af en analog signal, som er samplet med et AD-Kort.
De enkelte samples ligger i et array.

Hvordan beregnes signalets True-RMS, og hvilken indflydelse har samplehastigheden?
Avatar billede seider Nybegynder
27. juni 2001 - 07:30 #1
hvis du har en referance til True-RMS ås vil det hjælpe gevaldigt. og hvis du kan beskrive array\'et vil det hjælpe meget.

www.fotx.net/seider
Avatar billede martinlind Nybegynder
27. juni 2001 - 09:22 #2
Så vidt jeg ved har det ikke noget med samplehastigheden at gøre. Men jeg kan ikke huske formlen.
Avatar billede test123 Nybegynder
27. juni 2001 - 10:40 #3
seider  >> Hvad mener du med \"referance til True-RMS\"?
Hvis du mener et link til hvordan True-RMS beregnes, så er det jo netop det mit spørgsmål går på.

Mit array er ganske simpelt. Jeg har lavet et program, som henter data fra AD-Kortet over i mit array.
Selve arrayet er erklæret således:


CONST
  max_values = 10000;

var
  AdcSamples : ARRAY[1..max_values] OF REAL;
Avatar billede martinlind Nybegynder
27. juni 2001 - 10:44 #4
test123 >> Korrekt vi skal havde fundet formlen, så er resten lige ud af landevejen.
Avatar billede microtec Nybegynder
27. juni 2001 - 10:54 #5
RMS står for Root-Mean-Square eller på Dansk;
Kvardratroden af Middelværdien af dine samples i anden.

Du skal altså sætte alle dine samples i anden-potens. Beregne middelværdien af disse. Derefter tages kadratroden af middelværdien. Dette er RMS.

Samplefrekvensen skal være mindst 2x højere end frekvensen på det signal du sampler (gerne merer).
Avatar billede martinlind Nybegynder
27. juni 2001 - 11:03 #6

A conventional volt meter simply calculates the RMS value as A x 0.7071, where A is the peak voltage. Most conventional volt meters assume the input is sinusoidal and may introduce an error if the waveform is distorted or non-linear

Så afhængig af hvor nøjagtigt du vil have det så

RMS := V * 0,7071

Meeeen det er jo den hurtige simple måde.
Avatar billede microtec Nybegynder
27. juni 2001 - 11:03 #7
Koden må blive noget i stil med:


CONST
  max_values = 10000;

var
  AdcSamples : ARRAY[1..max_values] OF REAL;
  Loop : WORD;
  MeanSquare : REAL;
  True_RMS  : REAL;

begin
  MeanSquare := 0;
  FOR Loop := 1 TO max_values DO
  BEGIN
    MeanSquare := MeanSquare + (Sqr(AdcSamples[Loop]));
  END;
  MeanSquare := MeanSquare / max_values;
  True_RMS := Sqrt(MeanSquare);
end;
Avatar billede microtec Nybegynder
27. juni 2001 - 11:05 #8
martinlind >> Det trik med at gange med 0,7071 gælder kun, hvis signalet er en 100% ren sinus-kurve. Har det en anden kurveform, eller er forvrænget, dur den metode ikke.
Avatar billede martinlind Nybegynder
27. juni 2001 - 11:08 #9
microtec >> det var det min slut bemærkning skulle indikere *S*

\"Meeeen det er jo den hurtige simple måde.\"

/Martin
Avatar billede test123 Nybegynder
27. juni 2001 - 11:21 #10
Metoden med at gange med 0,7071 giver ikke True-RMS men kun RMS, da DC-komponenten ikke udkompenseres. Det du for øvrigt slet ikke i dette tilfælde, da der er tale om forskellige kurveformer.

Det undre mig at samplefrekvensen slet ikke skal indgå i beregningen. Man kunne jo let komme til at lave flere samples i den en halvperiode af signalet end i den anden.
Nogen, der har en kommentar til dette?
Avatar billede martinlind Nybegynder
27. juni 2001 - 11:32 #11
er det ikke noget med at du tager et gennemsnit, og hvis du har et måle punkt mere, ja så skal du jo div med en mere, så det giver vel principelt en mere nøjagtig udregning.
Avatar billede test123 Nybegynder
28. juni 2001 - 08:41 #12
Det virker jo fint. Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester