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
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).
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.
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?
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
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...
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?
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.
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?
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.
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.
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
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.
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ß
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.
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?
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
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.
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.
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
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ählenAndreas 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 :-)