mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenzmessung mit Teilen der PLL


Autor: Martin R. (herki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen miteinander

Ich arbeite gerade an einem Projekt mit dem Thema Frequenzmessung.
Ich möchte gern Frequenzen im Bereich von 10Hz bis 20kHz messen können.

Ich dachte da an folgendes Konstrukt:
                     --------------------      ---------------    ------
Messfrequenz     --> |                  |      |Signal-      |    |    |
Referenzfrequenz --> |Phasenvergleicher |----->|aufarbeitung |--->|ADC |
                     --------------------      ---------------    ------

Ist ein bisschen weit hergeholt aber wenn es so funktionieren sollte 
warum nicht?

Der Vorteil wäre: ich hätte sogar eine Art Messbereichsauswahl (in dem 
ich die Referenzfrequenz umschalte)

Der Nachteil: Ich kann bei einer Referenzfrequenz von 10kHz nicht 
unterscheiden ob es sich bei der Messfrequenz um 100kHz oder um 1kHz 
handelt.

Kann mir vielleicht mal einer einen Tipp geben ob meine Überlegungen so 
passen oder nicht?

Ich würde mich über konstruktive Kritik freuen :)

Und ja ich weiß... Es gibt auch einen Mikrocontroller mit Timern.

VG

Martin

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und ja ich weiß... Es gibt auch einen Mikrocontroller mit Timern.

Richtig ! Und so macht man es auch.
Warum soll man ein Signal das ohnehin schon digitaler Natur (Frequenz) 
ist erst in eine Spannung und die dann von einem ADC messen lassen. Das 
ist erstens sehr ungenau und zweitens wie du schon erkannt hast 
mehrdeutig.

Also das ganze Signal auf eine uC Internen Timer geschaltet. Capture 
Funktion einschalten und gut ist.

Gruss Helmi

Autor: Martin R. (herki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Jetzt ist es aber so, dass ich keinen Timer zur freien Verfügung habe
und ich die Frequenz mindestens alle 10us (vielleicht sogar alle 1,6us) 
einmal messen muss.
Außerdem sollen mindestens 2-Frequenzen gleichzeitig gemessen werden 
können.

Gibt es vielleicht noch andere Möglichkeiten?

VG

Martin

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin R. schrieb:
> Jetzt ist es aber so, dass ich keinen Timer zur freien Verfügung habe
> und ich die Frequenz mindestens alle 10us (vielleicht sogar alle 1,6us)
> einmal messen muss.

Wenn Du nur 10µs lang mißt, dann sind 10Hz Rechteck purer Gleichstrom.

Für 10Hz brauchst Du 100ms Meßzeit, drunter gehts nicht.
Bzw. wenn Du weißt, daß das Signal exakt symmetrisch ist, ginge auch 
50ms.


20kHz sollten sich noch ohne Timer mit nem externen Interrupt messen 
lassen.
Und nen Timer als allgemeine Zeitbasis wird ja Deine Applikation wohl 
haben.


Peter

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>(vielleicht sogar alle 1,6us) einmal messen muss.

Was soll das bringen ?

Dein 100KHz Signal hat eine Periodendauer von 10uS. Da kannst du nur mit 
Periodendauermessung ueber einen Timer noch was erreichen. Bei deiner 
Loesung mit dem Phasenvergleicher , Filter , ADC braucht die ganze Sache 
doch schon ewigkeiten um einzuschwingen. Da wirst du schon einige mS 
warten muessen bis sich da ueberhaupt was tut.


>Jetzt ist es aber so, dass ich keinen Timer zur freien Verfügung habe

Falschen uC ausgesucht oder Software nicht optimal strukturiert.

>Außerdem sollen mindestens 2-Frequenzen gleichzeitig gemessen werden
>können.

Wenn du einen schnellen uC eventuelle das Siganl direkt mit einem ADC 
einlesen und dann eine FFT machen.

Autor: Martin R. (herki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ein 10Hz-Signal hat eine Periodendauer von 100ms und ein 20kHz-Signal 
hat eine von 50us. Das ist schon klar.

Es ist in der Anwendung so, dass alle 10us (oder eben 1,6us) ein 
komplettes Abbild aller I/O's gespeichert werden muss. Und wenn die 
Messung noch nicht beendet wäre dann würde ich halt den alten Messwert 
nochmal speichern.

Zum falschen uC.
Wenn es nach mir gegangen wäre hätte ich schon was größeres genommen 
(vielleicht sogar nen FPGA mit Softcore).
Naja. Aber ich hab jetzt den LPC und an dem kann nicht mehr gerüttelt 
werden.

Das Argument mit dem Einschwingen ist schon recht heftig.
Ich werde wohl doch schauen, dass ich das in den LPC reinbringe.

Danke

VG

Martin

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin R. schrieb:
> Es ist in der Anwendung so, dass alle 10us (oder eben 1,6us) ein
> komplettes Abbild aller I/O's gespeichert werden muss. Und wenn die
> Messung noch nicht beendet wäre dann würde ich halt den alten Messwert
> nochmal speichern.

Das hat aber nichts mit der Messung zu tun.

Du nimmst einfach ne Variable, die den alten Meßwert behält, bis die 
nächste Messung fertig ist. Und die kannst Du dann sooft auslesen, wie 
Du lustig bist.

Ob das nun sonderlich sinnvoll ist, die CPU mit 10000 mal den gleichen 
Wert auszugeben zu belasten, sei dahingestellt.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.