Forum: Mikrocontroller und Digitale Elektronik Frequenz messen


von Seppi (Gast)


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

von Linksammler (Gast)


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.

von Axel S. (a-za-z0-9)


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).

von m.n. (Gast)


Lesenswert?

Seppi schrieb:
> Wie gehe ich am besten vor?

http://www.mino-elektronik.de/fmeter/fm_software.htm
400 kHz für einen 'nackten' AVR mit 20 MHz Takt sind kein Problem. Das 
geht sogar mit BASCOM.

von Ingo L. (corrtexx)


Lesenswert?

@Seppi
Du hast leider noch kein Wort über deine Genauigkeit und Auflösung 
verloren, sehr schade...

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von m.n. (Gast)


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 ;-)

von Lurchi (Gast)


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.

von c-hater (Gast)


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...

von Deppi (Gast)


Lesenswert?

Seppi schrieb:
> Ich möchte nicht auf "Spezialfähigkeiten" wie Capture Compare usw.
> zurückgreifen.
>
> ...
>
> Der Timer wird zurückgesetzt ...

Welcher Timer?

Wollte du auf solche Spezialhardware nicht verzichten?

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.