Frequenz messen

Gast #4090716
Lesenswert?
• ▲
▼
Hallo Leute,

möchte mit einem uC (im Moment noch unwichtig welcher)
eine Frequenz messen.
(Rechtecksignal. 5V. max. 400kHz)

Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw.
zurückgreifen.

Wie gehe ich am besten vor?

Habe jetzt zwei Lösungsansätze:

Ansatz 1:
Ich zähle in einer Schleife sämtliche eingehenden Pulse.
Läuft mein Timer über (z.b. nach einer Sekunde), so wird das
Ergebniss ausgewertet. Der Timer und Counter wird zurückgesetzt und
alles fäng von vorne an.

Ansatz 2:
Ein der Hauptschleiffe wird auf einen Puls gewartet.
Ist dieser eingetroffen, so wird der Timer gestartet.
Es wird auf einen zweiten Puls gewartet.
Ist dieser eingetroffen, so wird der Timer gestoppt und das Ergebniss
ausgegeben.
Der Timer wird zurückgesetzt und alles beginnt von vorne.


mfG
Seppi
Gast #4090720
Lesenswert?
• ▲
▼
den "Timer" zählst du aber nicht zu den Spezialfähigkeiten?
Dürfen es auch zwei Timer sein?

Einen extern getriggert, der Zählt.
Einen internen, der stellt die Zeitbasis zur Verfügung.

400kHz zählen mit Polling oder auch Interrupts braucht einen sehr 
schnellen µC.

400kHz mit Timer-Eingang sind kein Thema.

Bei den kleinen PICs gibt's sogar einen Timer-Eingang, der nicht mit der 
System-Clock synchronisiert ist. Der zählt (laut Datenblatt) bis 50 MHz, 
auch wenn der PIC z.B. nur mit 1MHz läuft.
In der Praxis zählt der auch noch 66MHz sauber, zumindest bei 
Zimmertemperatur.
#4090782
Lesenswert?
• ▲
▼
Seppi schrieb:
> möchte mit einem uC (im Moment noch unwichtig welcher)
> eine Frequenz messen. (Rechtecksignal. 5V. max. 400kHz)
>
> Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw.
> zurückgreifen.

Und warum möchtest du das nicht? Diese Anforderung ist ca. genauso 
sinnvoll wie "ich möchte Tango tanzen lernen, aber mit verbundenen Augen 
und auf dem Rücken gefesselten Händen".

> Habe jetzt zwei Lösungsansätze:
>
> Ansatz 1:
> Ich zähle in einer Schleife sämtliche eingehenden Pulse.
> Läuft mein Timer über (z.b. nach einer Sekunde), so wird das
> Ergebniss ausgewertet. Der Timer und Counter wird zurückgesetzt und
> alles fäng von vorne an.

Vulgo: direkter Frequenzzähler

> Ansatz 2:
> Ein der Hauptschleiffe wird auf einen Puls gewartet.
> Ist dieser eingetroffen, so wird der Timer gestartet.
> Es wird auf einen zweiten Puls gewartet.
> Ist dieser eingetroffen, so wird der Timer gestoppt und das Ergebniss
> ausgegeben.

Vulgo: Periodendauermessung

Kommt auf die Meßfrequenz an, welchen Verfahren besser ist. Siehe

Frequenzzählermodul: Messverfahren

Allerdings hat es einen guten Grund, warum man die Capture-Funktion 
eines Timers benutzt, statt das Signal in Software abzutasten: es ist 
viel genauer (und man schafft höhere Frequenzen). Und es hat genauso 
gute Gründe, warum man einen Hardware-Timer benutzt, um z.B. eine 
Sekunde zu warten statt eines z.B. _delay(1000).
Gast #4090808
Lesenswert?
• ▲
▼
Axel Schwenke schrieb:
> m.n. schrieb:
>> 400 kHz für einen 'nackten' AVR mit 20 MHz Takt sind kein Problem.
>
> Aber eben auch nur unter Verwendung der Capture-Funktion.

Er wollte doch wissen, wie er am besten vorgehen soll. Gibt es heute 
denn noch µCs ohne Capture-Funktion?
Ich kann ihm auch einen Schaltplan mit 7490 zeichnen ;-)
Gast #4091119
Lesenswert?
• ▲
▼
Das Prinzip der Frequenzmessung ist halt für eine gewisse Zeit das 
Signal und den Ref Takt zu Zählen. Auf eines der Signale kann man die 
Zählung meist synchronisieren, so dass der eine Wert exakt ist, beim 
anderen hat man halt die prinzipielle Unsicherheit um +-1.

Meist ist es besser die niedrigere Frequenz exakt zu zählen. Bei 
eingeschränkter Hardware muss man halt sehen welcher weg besser 
funktioniert. Die 400 kHz sind ggf. schon recht schnell um sie ohne HW 
Unterstützung zu verarbeiten. Ohne sich auf die HW festzulegen kann man 
also nicht sagen welcher weg besser geht, bzw. sich überhaupt richtig 
realisieren lässt.

Da die meisten µC so etwas wie eine capture Einheit bieten, bietet es 
sich an die auch zu nutzen. Dafür ist die schließlich auch da.
Gast #4091587
Lesenswert?
• ▲
▼
Seppi schrieb:

> möchte mit einem uC (im Moment noch unwichtig welcher)
> eine Frequenz messen.
> (Rechtecksignal. 5V. max. 400kHz)
>
> Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw.
> zurückgreifen.

Warum nicht? Ohne vernünftige Begründung, warum ein bei fast jedem µC 
vorhandenes, für die Aufgabe optimal geeignet Feature nicht verwendet 
werden soll, bleibt nur die Annahme eine verdammenswerten Trollpostings 
über...

> Wie gehe ich am besten vor?
>
> Habe jetzt zwei Lösungsansätze:
[...]

Das ist ein Problem, was völlig unabhängig davon ist, wie du die 
Meßdaten gewinnst. Außerdem wurde diese Wahl schon gefühlte 100.000 mal 
hier diskutiert und es kam immer dasselbe dabei heraus, weil das in der 
Natur der Sachen liegt und jeder Nicht-Vollidiot es sich auch selber 
ausrechnen kann: es hängt einfach von der zu messenden Frequenz selber 
ab und der Frequenz, mit der die Meßwerte "hinten" aus dem Messgerät 
rausfallen sollen.

Ist die Meßfrequenz höher oder gleich der zu messenden Frequenz, kommt 
grundsätzlich immer nur die Messung der Periodendauer der zu messenden 
Frequenz in Frage und die Meßfrequenz wird zwangsläufig auf die zu 
messende Frequenz abgesenkt.

Ist die Meßfrequenz hingegen geringer als die zu messende Frequenz, gibt 
es immer noch einen gewissen Bereich, in dem die Messung der 
Periodendauer sinnvoller ist. Bei weiter fallender Maßfrequenz wird aber 
irgendwann das Zählverfahren genauere Ergebnisse liefern können.

Diese Grenze (das einzig Interessante an der ganzen Sache) ist z.T. 
schon durch das Abtast-Theorem vorgegeben. Erst wenn die Meßfrequenz 
unter die Hälfte der zu messenden Frequenz fällt, muß man deshalb 
überhaupt über diese Grenze wirklich nachdenken.

Wenn aber Scheiß-Drecks-Trolls wie du Arsch weder das eine noch das 
andere angeben, braucht man überhaupt nicht darüber nachdenken...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.