Forum: Mikrocontroller und Digitale Elektronik Wie Frequenz messen bei kleinem Signal?


von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebes Forum,

ich möchte ein Sinussignal (ca. 100 Hz - 20 kHz) mit einem STM32 
erfassen und die Frequenz berechnen.

Das Signal hat unterschiedliche Amplituden (einige mVss bis knapp 10 
Vss).

Bisher habe ich einen Komperator (AD8561) mit Hysterese eingesetzt, der 
aus dem Sinussignal ein entsprechendes Rechtecksignal erzeugt und zum 
Contoller weitergibt.

Die Frequenzmessung ist mit einem Timer realisiert der die Periodendauer 
des Rechtecksignals erfasst und dann die entsprechende Frequenz 
berechnet.

Das alles konnte ich bisher mit Hilfe aus diesem Forum realisieren und 
es läuft auch grundsätzlich (bei großen Amplituden).

Mein Problem ist, wenn das Sinussignal zu klein ist, trotz der Hysterese 
im Komperator die Rechteckimpulse nicht der
tatsächlichen Periodendauer (Frequenz) entsprechen.

Oder anders: Wenn ein Signal ab 0 V immer größer wird, durchläuft dessen 
Amplitude irgendwann einen "kritischen Bereich" wo nur Mist gemessen 
wird.

Die Messung mit dem Oszi ergaben ca. 10-20 mV Rauschen im Signal. Die 
Hystereselevel habe ich mit Hilfe von 
http://www.mikrocontroller.net/articles/Schmitt-Trigger#Schmitt-Trigger_per_Operationsverst.C3.A4rker 
auf U_high = 200 mV und U_low = 100 mV gesetzt.

Wie kann ich es erreichen (Hardware oder Software) sicher zu stellen, 
entweder garnichts zu messen, oder das richtige?

Jetzt noch weiter zu Verstärken bringt auch nichts, da ich das "Problem" 
damit nur verschiebe und nicht löse..

Die Bilder zeigen die Signale bei unterschiedlichen Frequenzen und 
entsprechend unterschiedlichen Amplituden

Viele Grüße
Andreas

von Michael K. (aemkai)


Lesenswert?

Andreas schrieb:
> Mein Problem ist, wenn das Sinussignal zu klein ist, trotz der Hysterese
> im Komperator die Rechteckimpulse nicht der
> tatsächlichen Periodendauer (Frequenz) entsprechen.
Richtig, weil du das Rauschen mit verstärkst und wenn deine Amplitude 
nahe der des Rauschens ist (bzw. verstärkt das Rauschen die 
Hysterese-Level überschreitest)

> Oder anders: Wenn ein Signal ab 0 V immer größer wird, durchläuft dessen
> Amplitude irgendwann einen "kritischen Bereich" wo nur Mist gemessen
> wird.
Geht es dir ums anschalten oder schwankt die Amplitude einfach so?


> Wie kann ich es erreichen (Hardware oder Software) sicher zu stellen,
> entweder garnichts zu messen, oder das richtige?
In Hardware die Verstärkung kleiner machen oder Hysterese-Level anheben.
Ebenfalls könnte ein Filter vor dem Komparator helfen. Da du ein 
Sinussignal hast sollte das funktionieren ... wie gut hängt davon ab, ob 
die Störungen wirklich nur "schönes Rauschen" sind oder noch andere 
Dreckeffekte beinhalten).

von Günter Lenz (Gast)


Lesenswert?

Andreas schrieb:
>Die Frequenzmessung ist mit einem Timer realisiert der die Periodendauer
>des Rechtecksignals erfasst und dann die entsprechende Frequenz
>berechnet.

Verstärker gut abschirmen, Leitungen gut abschirmen,
Filter vorschalten. Aber besser ist es die Frequenz nicht
durch die Periodendauer zu ermitteln, sondern durch zählen.
Wenn das Signal, wie du es auf deinen Bildern zeigst,
verrauscht und verbrummt ist, ist Anfang und Ende der
Periode nicht mehr fehlerfrei ermittelbar.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Frequenzermittlung via FFT:

Beitrag "Genaue Frequenzbestimmung nach FFT"

von Andreas (Gast)


Lesenswert?

Michael K. schrieb:
> Geht es dir ums anschalten oder schwankt die Amplitude einfach so?

Verstehe ich jetzt nicht. Die Schaltung soll kontinuierlich messen.. 
natürlich wird sie irgendwann mal angeschaltet aber dann sind die ersten 
Sekunden der Messung noch nicht relevant.. Die Amplitude vom Sinussignal 
liegt je nach Sensoroutput zwischen 0 Volt und eben fast 10 V.

Michael K. schrieb:
> Ebenfalls könnte ein Filter vor dem Komparator helfen. Da du ein
> Sinussignal hast sollte das funktionieren ... wie gut hängt davon ab, ob
> die Störungen wirklich nur "schönes Rauschen" sind oder noch andere
> Dreckeffekte beinhalten).

Ist schon vor. Ist auch ein schönes Rauschen ;-) (weißes Rauschen)

Günter Lenz schrieb:
> Verstärker gut abschirmen, Leitungen gut abschirmen,
> Filter vorschalten.

Jap.. ist alles richtig und ist gemacht. Filter.. Low Noise Op.. usw.

Günter Lenz schrieb:
> Aber besser ist es die Frequenz nicht
> durch die Periodendauer zu ermitteln, sondern durch zählen.

Geht leider nicht gut, da ich nur ein paar Perioden (10 vielleicht) 
erwarte.

Günter Lenz schrieb:
> Wenn das Signal, wie du es auf deinen Bildern zeigst,
> verrauscht und verbrummt ist, ist Anfang und Ende der
> Periode nicht mehr fehlerfrei ermittelbar.

Ja, und das ist meine Kernfrage wie ich es hinbekomme eben bei nicht 
100%iger Erkennung die Messung zu verwerfen und auf das nächste 
eindeutige Signal zu warten.

Wolfgang R. schrieb:
> Frequenzermittlung via FFT:

Fällt aus, weil ich das selber nicht hinbekomme. Trotzdem netter 
Hinweis.

Es bleibt also nur die beiden Hysterese-Schwellen weiter auseinander zu 
setzen? Hab ich das soweit richtig verstanden?
Ich verliere dadurch erstmal natürlich an Empfindlichkeit.

Und wie ich meine ist das Problem auch hier bei gerade errichter 
Schwellspannung, dass die Periodendauermessung fehlerhaft wird. Alleine 
schon weil immer ein Rauschen dabei sein wird (trotz Filter usw.)

Was sagt ihr?

von Peer (Gast)


Lesenswert?

Vielleicht ist ein Ansatz eine Messbereichumschaltung zu machen. Macht 
ja jedes Multimeter bei Strom oder Spannungsmessung. Also 2 Pfade 
aufbauen, einer mit großer Verstärkung bei kleiner Sinusamplitude und 
der 2. mit kleinerer Verstärkung. Das Signal zum Umschalten kann man 
vielleicht mit einem Präzisionsgleichrichter erzeugen.

Peer

von Wastl F. (rescuetigerchen)


Lesenswert?

Nur so als Idee: kann man das Signal nicht einfach so stark verstärken, 
daß die OPVs in die Sättigung gehen? Dann hast du im Prinzip dein 
Rechteck am OPV-Ausgang, welches sogar einen konstanten Ausgangslevel 
hat...

von Michael K. (aemkai)


Lesenswert?

Andreas schrieb:
> Verstehe ich jetzt nicht. Die Schaltung soll kontinuierlich messen..
Das war eine mögliche Interpretation zu
> Wenn ein Signal ab 0 V immer größer wird
Das klang etwas wie "nach dem Einschalten läuft das Signal hoch ..."

zum Thema: Was für ne Grenzfrequenz/Steilheit hat dein Filter?

von Andreas (Gast)


Lesenswert?

Peer schrieb:
> Vielleicht ist ein Ansatz eine Messbereichumschaltung zu machen

ok, muss ich drüber nachdenken..

Wastl F. schrieb:
> so stark verstärken,
> daß die OPVs in die Sättigung gehen?

Machen die ersten Verstärkerstufen auch bei entsprechend großem 
Sensorsignal. Trotzdem taucht das Signal irgendwann aus dem Rauschen 
auf.. Und dann ist nix mit in die Sättigung fahren.

Wastl F. schrieb:
> Dann hast du im Prinzip dein
> Rechteck am OPV-Ausgang, welches sogar einen konstanten Ausgangslevel
> hat...

Mein Komparator macht auf jeden Fall einen konstanten Ausgangslevel.. 
Das ist nicht das Problem.

Michael K. schrieb:
> Das klang etwas wie "nach dem Einschalten läuft das Signal hoch ..."

Das Signal wird von 0 Volt (+Rauschen) bis 10 Volt (+Rauschen) 
kontinuierlich größer..

Michael K. schrieb:
> Was für ne Grenzfrequenz/Steilheit hat dein Filter?

ca. 160 Hz/ 18 kHz / Aktiver Bandpass 4. Ordnung mit OPs und ca. 80 dB 
Gain

Es hilft vielleicht der Hinweis, dass mit einem Radarsensor 
Autogeschwindigkeiten gemessen werden sollen.

Also das Signal wie bereits beschrieben aus dem Nichts (0 Volt) immer 
größer wird.

von Michael K. (aemkai)


Lesenswert?

Andreas schrieb:
> Also das Signal wie bereits beschrieben aus dem Nichts (0 Volt) immer
> größer wird.
Okay, also quasi wie anschalten, d.h. der "verbotene Bereich" wird 
jedesmal durchfahren.

Dann könnte man evtl. die Signale erst ab einem gewissen Pegel 
zuschalten bzw. erst dann die Messung starten, also z.B. Amplitude 
auswerten (Spitzenwert-Detektor -> Komparator -> Schalter) und wenn 
diese im "sicheren" Bereich ist, dann die Messung starten.

Bei weißem Rauschen wirst du mit 'nem Filter kaum noch was eliminieren 
können ... kennst du die Rauschquelle?

von Andreas (Gast)


Lesenswert?

Michael K. schrieb:
> der "verbotene Bereich" wird
> jedesmal durchfahren.

Genau.

Michael K. schrieb:
> Dann könnte man evtl. die Signale erst ab einem gewissen Pegel
> zuschalten

Hatte ich auch schon überlegt. Mit einem 2. Komperator ??

Michael K. schrieb:
> kennst du die Rauschquelle

Hauptsächlich die Widerstände vom aktiven Filter bzw. Verstärker und die
OPs selber, denke ich.

Wobei das Rauschspektrum die Frequenzen sind die
durch den Bandpass gehen.. Der Rest wird gut rausgefiltert.

von Lurchi (Gast)


Lesenswert?

Bei einem so verrauschtem Signal wäre es vermutlich besser das Signal 
über den AD Wander aufzumehen und dann in Software auszuwerten. Da gibt 
es je nach verfügbarer Rechenzeit verschiedene Möglichkeiten.

Grob kann man die dominierende Frequenz per FFT bestimmen. Man ist da 
aber auf 1/Messzeit in der Auflösung begrenzt. Sofern da Rauschen nicht 
zu extrem ist (davon sind die Bilder noch weit weg), kann man die 
Frequenz auch genauer bestimmen:

In der einfachen Form könnte da eine FIR Filterung sein, gefolgt von der 
Detektion der Nulldurchgänge / Perioden.

Mit viel Rechenzeit und etwa dem Startwert von der FFT kann man einen 
Kurvenfit machen. Je nach Programm und Modell STM32 könnte selbst dass 
noch in Echtzeit gehen.

von Dietrich L. (dietrichl)


Lesenswert?

Andreas schrieb:
> Die Frequenzmessung ist mit einem Timer realisiert der die Periodendauer
> des Rechtecksignals erfasst und dann die entsprechende Frequenz
> berechnet.
> ...
> Mein Problem ist, wenn das Sinussignal zu klein ist, trotz der Hysterese
> im Komperator die Rechteckimpulse nicht der
> tatsächlichen Periodendauer (Frequenz) entsprechen.

Ich habe nicht alles gelesen und vielleicht wurde das ja schon 
angesprochen:

Ist das Signal nach dem Komparator ein Rechteck nur mit schwankender 
Periodendauer oder schaltet es auch mal mittendrin durch den Störbelag 
um?

Wenn ersteres der Fall ist, sollte es reichen, die Zeit mehrerer 
Perioden zu messen! Oder aus einzelnen Periodenmessungen p/SW den 
Mittelwert bilden.

Gruß Dietrich

von Andreas (Gast)


Lesenswert?

Lurchi schrieb:
> Grob kann man die dominierende Frequenz per FFT bestimmen.

Andreas schrieb:
> Wolfgang R. schrieb:
>> Frequenzermittlung via FFT:
>
> Fällt aus, weil ich das selber nicht hinbekomme. Trotzdem netter
> Hinweis.

Dietrich L. schrieb:
> Ist das Signal nach dem Komparator ein Rechteck nur mit schwankender
> Periodendauer oder schaltet es auch mal mittendrin durch den Störbelag
> um?

Beides. Wobei die schwankende Periodendauer am meisten "nervt".
Das umschalten könnte man evtl. wie

Andreas schrieb:
> Michael K. schrieb:
>> Dann könnte man evtl. die Signale erst ab einem gewissen Pegel
>> zuschalten
>
> Hatte ich auch schon überlegt. Mit einem 2. Komperator ??

in den Griff bekommen.

Bin aber für weiteren Input dankbar.

von Peer (Gast)


Lesenswert?

Andreas schrieb:
> Andreas schrieb:
>> Michael K. schrieb:
>>> Dann könnte man evtl. die Signale erst ab einem gewissen Pegel
>>> zuschalten
>>
>> Hatte ich auch schon überlegt. Mit einem 2. Komperator ??
>
> in den Griff bekommen.
>
> Bin aber für weiteren Input dankbar.

Ich hatte oben ja schon vom Präzisionsgleichrichter gesprochen. Damit 
kannst du aus deiner jetzt noch "zu kleine" Sinusamplitude etwas 
verwertbares machen. Also Präzisionsgleichrichter -> TP -> Komparator
Du stellst die Verstärkung vom Präzisionsgleichrichter und die 
Komparatorschwellen so ein, dass der Komparator beispielsweise erst ab 
einer Sinuseingangsamplitude von 200mV ein "jetzt Messen" Signal 
ausgibt. Deine jetzige Schaltung enthält ja schon jede Menge OPVs also 
denk ich mit Versorgung und so hast du keine Probleme.

So, must du jetzt auch mal drüber nachdenken! ;-)

Gruß

von Peer (Gast)


Lesenswert?

Falls das mit dem Präzisionsgleichrichter und dem TP wegen zu langer 
Einschwingzeit des TP nicht passt, wurde der Spitzenwertdetektor ja auch 
schon erwähnt.

von m.n. (Gast)


Lesenswert?

Die gezeigten Signale sehen für mich garnicht so schlecht aus. Kannst Du 
ein Bild vom Ausgang des Komparators dazufügen, wenn 'Mist' gemessen 
wird?

Der Komparator ist recht schnell und eine seiner Eigenschaften ist 
bestimmt, daß er gerne schwingt, wenn man die Schaltung nicht kompakt 
aufbaut. Für den Frequenzbereich würde ein langsamer Komparator (LM393 
oder ein OPV) völlig reichen. Hattest Du es damit auch probiert?

Wo kommt das Signal her?

von Anja (Gast)


Lesenswert?

m.n. schrieb:
> Wo kommt das Signal her?

Das ist die entscheidende Frage.
Ich vermute mal von einem Induktiven Drehzahlsensor.
Da würde ich einen Komparator mit nachführbarer Hysterese verwenden.
z.B. LM1815, CY30 ...

Gruß Anja

von m.n. (Gast)


Lesenswert?

Anja schrieb:
>> Wo kommt das Signal her?
>
> Das ist die entscheidende Frage.
> Ich vermute mal von einem Induktiven Drehzahlsensor.

Das dachte ich auch, aber dann würde ich mit steigender Frequenz eine 
steigende Amplitude erwarten. Dagegen spricht das Bild 18kHz.jpg.
Bei 1600Hz_low.jpg steht etwas von 14 µV, was auch unklar bleibt.

von Andreas (Gast)


Lesenswert?

Peer schrieb:
> So, must du jetzt auch mal drüber nachdenken! ;-)

Ja ha, mache ich :-)
Ist ein guter Ansatz von dir. Wollte nur keine weiteren Möglichkeiten
ausblocken.

Peer schrieb:
> wurde der Spitzenwertdetektor ja auch
> schon erwähnt

Auch hier muss ich mich jetzt erstmal einlesen. Bauteile, Schaltungen, 
etc.

m.n. schrieb:
> Kannst Du
> ein Bild vom Ausgang des Komparators dazufügen, wenn 'Mist' gemessen
> wird?

Kann ich bei nächster Gelegenheit machen. Sind eben Rechteckimpulse 
unterschiedlicher Dauer.

m.n. schrieb:
> Der Komparator ist recht schnell und eine seiner Eigenschaften ist
> bestimmt, daß er gerne schwingt, wenn man die Schaltung nicht kompakt
> aufbaut.

Ist alles recht ordentlich auf PCB und in 0805 SMD mit stabiler 
Versorgung.
Nach Schwingen siehts nicht aus.. sagt das Oszi

Anja schrieb:
> m.n. schrieb:
>> Wo kommt das Signal her?
>
> Das ist die entscheidende Frage.

Na von hier:

Andreas schrieb:
> Es hilft vielleicht der Hinweis, dass mit einem Radarsensor
> Autogeschwindigkeiten gemessen werden sollen.

Aber zum Testen natürlich von einem Funktionsgenerator mit 
entsprechenden Dämpfungsgliedern.

m.n. schrieb:
> Das dachte ich auch, aber dann würde ich mit steigender Frequenz eine
> steigende Amplitude erwarten. Dagegen spricht das Bild 18kHz.jpg.
> Bei 1600Hz_low.jpg steht etwas von 14 µV, was auch unklar bleibt.

Andreas schrieb:
> ca. 160 Hz/ 18 kHz / Aktiver Bandpass 4. Ordnung mit OPs und ca. 80 dB
> Gain

Also ein Verstärker mit Bandpass aufgebaut aus 4 OPs in Serie, je 20 dB 
Gain.

Ich speise mit dem Funktionsgenerator das Sinussignal ein. Die 
Mittenfrequenz des BP ist 1600 Hz. Aber auch hier ist das Signal 
schlecht wenn nur mit 14 µVss Signalspannung in die Verstärkerstufen 
eingespeist wird... Wie gesagt ist das mein Kernproblem -> Signal kommt 
von 0V und wird dann größer -> eben Radarsensor mit einem Objekt was auf 
diesen zufährt.

2. Kernproblem: Signal im Bereich der Eckfrequenzen vom BP z.B. recht 
groß, aber durch Selbigen stark (wie gewünscht) gedämpft.

von Mr.Moe (Gast)


Lesenswert?

Hallo Andreas,

was für einen STM nutzt du denn?
Wieviel Zeit hast du für die Erkennung der Frequenz?

Wenn der STM schnell genug ist, dann würde ich den FFT-Ansatz wählen und 
eine einstellbare Vorverstärkung mit Analogschaltern implementieren, 
damit der ADC möglichst optimal ausgesteuert wird.

Du schreibst, dass das Anlaufen des Controllers etwas dauern kann. Falls 
die Berechnung bei der FFT zu lange dauert könntest du zunächst bei der 
Initialisierung die FFT berechnen (dies dauert einen Moment) und den 
Peak suchen und danach mit dem Goertzel-Algorithmus im Bereich der 
ersten Frequenz suchen (dies ginge bei relativ kleinen sehr schnell).

Tiefpassfilterung in der Vorverstärkung wird natürlich vorausgesetzt.

Was meinst du?

Viele Grüße

Moe

von Andreas (Gast)


Lesenswert?

Mr.Moe schrieb:
> was für einen STM nutzt du denn?

STM32F051R8T6

Mr.Moe schrieb:
> Wieviel Zeit hast du für die Erkennung der Frequenz?

ein paar Sekunden (...)

Mr.Moe schrieb:
> Wenn der STM schnell genug ist, dann würde ich den FFT-Ansatz wählen

Andreas schrieb:
> Wolfgang R. schrieb:
>> Frequenzermittlung via FFT:
>
> Fällt aus, weil ich das selber nicht hinbekomme. Trotzdem netter
> Hinweis.

Ich bin kein Akademiker der sowas evtl. in ner Uni beigbracht bekommt. 
Ein
recht komplexes Thema für mich.
Ich weiß ganz grob was das ist und kann es auf meinem Oszi nutzen.. Dann
wars das auch schon mit FFT bei mir.
Ich finde das Thema FFT trotzdem spannend auf einem µC laufen zu 
lassen..

Mr.Moe schrieb:
> und den
> Peak suchen und danach mit dem Goertzel-Algorithmus im Bereich der
> ersten Frequenz suchen

Ähm, ja. Siehe letzten Absatz von mir ;-)

Mr.Moe schrieb:
> Was meinst du?

Wenn du mir nen fertigen Code-Schnippsel für die FFT auf dem o.g. 
Controller gibst, ich ihn zum Laufen bekommen, können wir  beide gerne 
an dem Thema FFT weitermachen :-)

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
Noch kein Account? Hier anmelden.