Hi, ich hab zunächst eine allgmeine Frage. Ich möchte den Effektivwert eines Sinussignals bestimmen. Das soll numerisch auf dem uC erfolgen. Da ich nicht beliebig hoch abtasten kann, hab ich ja zwischen den Abstatsstellen keine Messwerte, welches Verfahren nutzt man da in der Praxis auf dem uC, um das aufgenomme Signal zu interpolieren? Mir erscheint die Lineare Interprätation nach Newton am einfachsten und weniger rechenlastig als die anderen Verfahren wie z.B. die Spline Interpolation. Beispiel ich hab ein 10kHz Sinussignal. Vor dem A/D Wandler habe ich einen Tiefpass 5.ter Ordnung, bei 68kHz habe ich ca. 65dB Dämpfung, das wären 10Bit Auflösung Die Grenzfrequenz liegt bei 15kHz. Mit welcher Abtastfrequenz taste ich ab und welches Verfahren sollte ich zum interpolieren nutzen? Ich wurde mit 40kHz abtasten.
Lineare Interprätation nach Newton? Ob die hilft, kann ich nicht beantworten - kenne ich nicht. Auch eine lineare Interpretation ist mir nicht geläufig. Wenn du die lineare Interpolation nach Newton meinst, weiß ich aber nicht, was die bringen soll. Ein Signal "schön"-rechnen ist Quatsch. Ein Signal durch einen digitalen Tiefpass zu jagen nützt auch nur was, wenn man es vorher mit der doppelten Frequenz der höchstmöglichen Störfrequenz "gesamplet" hat. Für die Ermittlung des Effektivwerts, genügt es doch, die Summe der Quadrate aller ADC-Werte zu bestimmen und daraus die Wurzel zu ziehen. Bei AC solltest du vorm Quadrieren natürlich den Offset (ADC-Wert beim Null- durchgang = Mittelwert einer hinreichend langen Messreihe) abziehen. Du doch schon ganz richtig erkannt, dass eine mangelhafte Filterung von Signalanteilen oberhalb der halben Samplefrequenz zu Fehlern führt. Diesen Fehler muss man anhand der (worst-case) Eigenschaften des Messsignals und der Filterkurve vorher abschätzen.
Für die RMS-Bestimmung ist die Rechnung ganz ohne Interpolation schon ausreichend. Bis auf die Frequenzen die mit der Abtastrate korreliert sind, macht es auch gar nichts wenn da Frequenzen oberhalb der halben Abtastrate dabei sind: Man kann das ganze auch als Subsampling ansehen und kommt trotzdem auf eine gute Schätzung des RMS wertes. Begrenzt wird die Bandbreite mehr durch die S&H Stufe des A/D Wandler. Das einzige ist, das die hohen Frequenzen nicht mehr deterministisch immer richtig abgetastet werden, sondern hat nur im Mittel über viel Abtastpunkte. Um diskrete Störungen zu reduzieren könnte man ggf. noch in ungleichmäßigem Abstand abtasten. In dem Beispiel wird die Bandbreite durch den Analogen Filter vorgegeben, egal wie langsam man abtastet. Es ginge theoretisch sogar auch mit nur 100 Hz abzutasten, sofern die S&H Stufe mitspielt - man braucht nur länger um die gleiche Zahl an Samples zu erreichen und Vielfache von 100 Hz können zusätzliche Störungen verursachen. Von daher wählt man in der Praxis schon eine eher hohe Abtastfrequenz und hält die Rechnung kurz.
Wenn du "nur" mit 40kHz abtasten willst, dann musst du dein Filter bei 20kHz (f/2) anschauen. Da stellst du dann fest, dass du kaum eine Filterwirkung hast. Du musst dann hoffen, dass dein Signal keine Signalanteile mit Frequenzen>=20kHz hat. Wenn nicht, dann musst du besser filtern und mit höherer Abtastrate fahren. Den Effektivwert des Signals misst du mittels Summe der quadrierten Werte wie mein Vorredner schon schrieb. Eventuell verbessert eine zusätzliche Fensterfunktion die Konstanz der Messung.
Subsampling klingt ja wie eine bewährte Technik! Ist es auch, wenn man damit (Chroma-Signale) behandelt, wo die Nebeneffekte niemanden auffallen. Das ist hier aber nun gerade NICHT der Fall.
Hm, was ich nicht verstehe, wieso sind ein paar Punkte ausreichend für die RMS-Berechnung? Der RMS Messfehler wird doch größer je kleiner die Anzahl der Abtastpunkte oder nicht. Der RMS berechnet sich ja nach x_RMS = sqrt( 1/N*SUM(x^2) ), für den AC-Wert je weniger Messpunkte ich aufzeichne desto mehr weicht doch der berechnete RMS von dem "wahren" RMS ab? Ok, dann muss die halbe Abtastfrequenz (fa/2) bei 68kHz liegen.
> Hm, was ich nicht verstehe, wieso sind ein paar Punkte ausreichend für
die RMS-Berechnung?
Dann rechne jetzt halt mal ein Beispiel, wenn du es nicht glaubst.
Alberto S. schrieb: > Hm, was ich nicht verstehe, wieso sind ein paar Punkte ausreichend für > die RMS-Berechnung? Na ja, die (Haupt-)Signalfrequenz sollte vielleicht nicht gerade ein ganzzahliges Vielfaches der Abtastfrequenz sein ;-)
Nun nenne doch einfach mal ein paar Eckwerte: - max. Signalfrequenz - max. mögliche Samplefrequenz - Filterdaten: fg = ?, Ordung, oder dB pro Oktave Ansonsten: Wenn du eine tiefe Signalfrequenz hast, hast du viele Samples, die das Signal in einer Signalperiodeerfassen. -> Gut für die Genauigkeit! Wenn du eine höhere Signalfrequenz hast und die Samplefrequenz nicht gerade ein ganzzahliges Vielfaches der Signalfrequenz ist, bekommst du viele Samples, die das Signal zu jeweils anderen Phasen erfassen. -> Genau so gut für die Genauigkeit! WENN du die Signalfrequenz genau kennst, gibt es als (programmtechnisch) einfache Alternative die diskrete Fouriertransformation. Kann auch gute Genauigkeit liefern.
Hier mal ein Beispiel mit dem kostenlosen Matheprogramm Scilab. Beachte das 1/N in sqrt(1/N*summe(x^2)) Abtastfrequenz 1kHz, Sinus 270Hz, 1V*sin(2*pi*270/s*t), Effektivwert 1V/sqrt(2)=0,707V 1000 Abtastwerte, Sinus mit Amplitude 1(Effektivwert 0,707) -->t=linspace(0,0.999,1000); -->y=sin(2*%pi*270.*t); -->u=sqrt(1/1000*sum(y.*y)) u = 0.7071068
Hi, die max. Signalfrequenz wird 70kHz sein. Die höher frequenten Anteile sollten wenn möglich durch den Tiefpassfilter gedämpft werden. Die max. mögliche Samplefrequenz beträgt 250kHz. Die Eckdaten: fsignal(max)=68kHz fs(max)=250kHz fg=15k -65dB bei 68kHz Ich kann aber nicht immer davon ausgehen das das Signal Sinusförmig ist, könnte unter umständen leicht verzerrt sein. Gilt das dann immer noch mit den wenigen Samples? Hab auch nachgerechnet, mein Fehler war das die Abtastfrequenz immer eine Vielfache der Signalfrequenz war.
Alberto schrieb: > Die Eckdaten: > fsignal(max)=68kHz > fs(max)=250kHz > > fg=15k > -65dB bei 68kHz Wenn du eine Grenzfrequenz von 15kHZ beim Antialiasing-Filter hast, sind 250kHz schon Luxus, wären auch noch so um die 50kHz genug. Was fsignal(max) bedeuten soll mußt du erklären. Wenn du bis zu diesem Frequenzanteil den Effektivwert messen möchtest, dann mußt du den Filter anders dimensionieren und darfst nicht bei 15kHz abschneiden. Weiters solltest du uns erklären in welchen Zeitabständen du den Effektivwert berechnen willst, das ist genauso wichtig. Und vielleicht erklärst du uns, was für ein Signal das ist.
> Gilt das dann immer noch mit den wenigen Samples?
Ja. Das Ergebnis ist der Effektivwert des Gesamtsignals.
Hi, ich möchte nur bis max. 15kHz messen. Gemessen wird die Spannung an einer Spule, es kann vorkommen, wenn die Spule ausserhalb ihrer Resonanz betrieben wird, nicht mehr sinusförmig ist. Mit fsignal(max) meinte ich die Frequenz bei der eine Dämpfung von 64dB eintreten sollte. Die Abtastfrequenz sollte ja kein ganzzahliges vielfaches der Signalfrequenz sein. Mit 250kHz Abtastfrequenz beträgt die Abtastrate 4us. Ich hätte alle 4,5us abgetastet. Sobald ein Nulldurchgang detektiert wird, mit 4,5us. Spricht da was gegen?
Das ist bei weitem ausreichend. Allerdings empfehle ich das abgetastete Signal mit einem digitalen Tiefpassfilter auf z. B. 25kHz zu begrenzen. Du kannst aber du musst nicht auf den Nulldurchgang triggern. Welche niedrigste Frequenz erwartest du in deinem Signal und wie viele Werte willst du nehmen?
Bei einer niedrigen Frequenz lohnt es sich ggf. Start und Ende auf den Nulldurchgang (oder ggf. 70% vom Peak) zu synchronisieren. Bei höheren Frequenzen, so dass man viele Perioden misst kann man auf die Synchronisierung auch gut verzichten. Auch bei bekannter Frequenz (z.B. 50 Hz + Oberwellen) reicht es das Intervall passend zu wählen. Eine Abtastung mit 250 kHz ist OK - wenn man den Anteil bei höheren Frequenzen nicht mit im Ergebnis haben will, dann wäre ggf. ein digitaler Tiefpass angebracht.
Alberto S. schrieb: > Hi, ich hab zunächst eine allgmeine Frage. Ich möchte den Effektivwert > eines Sinussignals bestimmen. Wenn du tatsächlich ein Sinussignal hast, dann reicht es aus, den Spitzenwert zu messen. Über die Kurve zu integrieren ist nur nötig, wenn man die Signalform nicht kennt. Also bau dir einen Spitzenwertdetektor (OpV und Diode plus etwas Kleinzeugs) und laß dir von selbigem deinen ADC auch gleich starten. Das war's dann. W.S.
Das Integrieren (Aufsummieren) über die Kurve geht für den µC eher einfacher und genauer als die direkte Messung des Spitzenwertes.
Hi, @W.S geht nicht, da nicht immer rein sinusförmig Ich hab mir gedacht das ich bei hohen Frequenzen, über 4 Perioden abtaste. Bei max. 15kHz und Abtastfrequenz von 250kHz, sind das ca. 66 Messwerte über 4 Perioden Bei kleinen Frequenzen <700Hz mindestens eine Periode. Das Problem ist, das bei der aktuellen Abtastfrequenz bei sehr kleinen messbaren Signalfrequenzen, viele Messwerte erhalte. Bei 10Hz wären das schon 25000 Werte. Die kleinste Frequenz wird aber bei 500Hz liegen. Das wären 500 Werte mit 2 Perioden 1000 Werte, denke das ist ausreichend.
Wenn du schon so an das Problem herangehen willst, dann mußt du es umgekehrt machen: 1. Rechenbedarf planen für das Integrieren pro hereingekommenem Meßwert und das ganze Ringsherum (Darstellen, Weiterleiten, Tasten abfragen, sonstige Haushaltsangelegenheiten) 2. abschätzen, wieviel Zeit dein Controller dafür braucht. 3. daraus die höchstmögliche Abtastrate berechnen 4. dir überlegen, ob die ausreicht 5. ggf. nen anderen uC nehmen. Mir riecht das nach dsPIC. W.S.
Alberto S. schrieb: > je weniger Messpunkte ich aufzeichne desto mehr weicht doch der > berechnete RMS von dem "wahren" RMS ab? Du must natürlich den Bereich, den ein Abtastwert benutzt, berücksichtigen. Damit wird das nicht von der Zahl der Werte abhängig, sondern nur gröber. Interpolation ist nicht nötig.
Die Zahl der Abtastwerte darf ruhig recht hoch liegen. 66 Punkte sind da schon recht wenig - wenn genug zeit für die Messung da ist, dürfen es gerne auch 10000 und mehr A/D Werte sein, um einmal den RMS wert zu erhalten. Die Rechnung zum aufsummieren kann schon während der Messung erfolgen. Man muss also die Werte nicht alle Speichern. Auch die Rechenzeit hält sich noch sehr in Grenzen - da ist meist der AD im µC langsamer.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.