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ä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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.