aktualisiert 10.10.2011
Frequenzmesser 1Hz bis 8 MHz
Ein Frequenzmesser zählt die empfangenen Schwingungen  pro Zeiteinheit, und zeigt sie in der Einheit "Herz" an .
 Herz (Hz) ist also die Maßeinheit für  Schwingung pro Sekunde.
Wenn wir beispielsweise bei einer Frequenz von 10 Hz sprechen so sind das 10 Schwingungen in einer Sekunde.

Im Bild 1 wäre das  von der linken gestrichelten Linie ( Blau)  bis zur gestrichelten Linie in der Mitte (Rot
Bild 1
Das Grundprinzip der Frequenzmessung beruht darauf das die eingehenden Schwingungen in der Regel genau ein Sekunde lang gezählt werden,
um dann das Zählergebnis direkt als Frequenz (Hz) anzuzeigen.
Die Messzeit kann auch variieren , dann muss das Ergebnis aber umgerechnet werden damit wir auf die Einheit Herz ( Schwingung pro Sekunde) kommen.
Wenn möglich sollte man darauf verzichten weil das umrechnen die Ressource des Mikroprozessor beansprucht und daher nicht mehr für andere Funktionen zur Verfügung steht,
außerdem wird durch Rundungsfehler beim berechnen das Ergebnis immer verfälscht.
So könnte man beispielsweise die eingehenden Impulse nicht eine ,sondern zehn Sekunden lang messen und das Ergebnis dann durch 10 Teilen um auf das gleiche Ergebnis zu kommen.
Dieses Messverfahren wendet man oft bei Messungen von kleinen Frequenzen an, wenn wir beispielsweise eine Frequenz von 0,1 Hz messen wollen ,
würden wir immer das Ergebnis Null angezeigt bekommen wenn die Messzeit eine Sekunde betragen sollte.
Es kann  also die Messzeit verlängert werden auf beispielsweise  10 Sekunden.
Es wird dann in 10 Sekunden ein Impuls gemessen, dieser Messwert durch 10 geteilt um dann auf den Wert von 0,1 zu kommen.
Das hat allerdings den Nachteil das immer eine relativ lange Zeit nämlich 10 Sekunden auf das Messergebnis gewartet werden muss.
Genauso gut kann aber auch die Messzeit verringert werden um sehr hohe Frequenzen zu messen.
Die Messzeit sollte bei sehr genauen Messungen also immer der zu erwartenden Frequenz angepasst werden um einerseits relativ genau zu messen, und andererseits nicht zu lange auf das Ergebnis warten zu müssen.
 In Bild 1 erkennen wir am oberen  Signal die 10  Schwingungen die wir messen wollen .
Das untere Signal ist die Messzeit in Sekunden.
Die linke blau gestrichelte Linie ( links der Eins) ist der Anfang der Messung und die Rote gestrichelte Linie ( rechts der 10) ist das Ende des Messvorgang.
Sofort findet an der rot  gestrichelten  Linie der nächste Messvorgang statt.Das bedeutet das die Messung  jede Sekunde aktualisiert wird.
Wenn wir jetzt einmal davon ausgehen das sich die Messzeit ( 1 Sekunde) nur minimal verlängert durch z.B. Temperaturdrift , änderung der Betriebsspannung oder
anderen Einflüssen dann würden wir anstatt 10 Impulse plötzlich 11 Impulse messen, wenn wir uns jetzt noch vorstellen das sich die Messzeit auch minimal verringern kann dann würden wir 9 Impulse messen.

Damit haben wird schon eine Ungenauigkeit von Plus/Minus  10% . Daran erkennt man wie wichtig es ist, das die Messzeit möglichst genau sein soll.
Anders sieht es aus wenn wir eine niedrige Frequenz messen, beispielsweise 1 Hz dann hätten wir bei einer Messzeit von einer Sekunde genau einen Impuls zu messen. Bild 2
Wenn wir uns jetzt auch hier noch einmal eine geringe Verlängerung  der Messzeit vor Augen führen so hätten wir schon 2 Herz , bei einer Verringerung der Messzeit hätten wir immer noch 1 Hz.
Damit hätten wir ein Ungenauigkeit von 100%
An dieser Ungenauigkeit können wir erkennen das dass Verhältnis von Zeit zur Frequenz ein großes Mass für die Genauigkeit ist.
Generell kann man sagen das die Genauigkeit zunimmt je länger die Messzeit ist, und je Größer die Frequenz im Verhältnis zur Messzeit ist.

Bei 0,5 Herz sieht es noch anders aus, bei einer Messzeit von 1 Sekunde würden wir 1 Hz messen, bei einer etwas geringeren Messzeit würden wir immer noch 1 Hz messen ,
und bei einer minimal längeren Messzeit messen wir dann auch noch 1 Hz.

Hier messen wir also in allen Fällen völlig falsche Werte.


Bild 2

Auf Grund dieser Messungenauigkeiten kann man bei hohen Frequenzen die eingehenden Schwingungen pro Zeit messen wie oben beschrieben,
und bei niedrigen Frequenzen die Zeit pro Impuls messen.
Das bedeutet bei einer kleinen Frequenz das wir beispielsweise bei einen eingehenden Impuls an der steigenden Flanke ( Bild 2 blaue Linie linke Seite)
eine Stoppuhr einschalten  und bei der nächsten steigende Flanke ( Bild 2 rote Linie in der Mitte ) die Stoppuhr anhalten ,
somit haben wir die Zeit des Impuls gemessen und können die Frequenz jetzt vom Mikroprozessor berechnen lassen,
das bezeichnet man auch als Periodenmessung.
Als Alternative der Periodenmessung kann man auch einen festen Takt erzeugen z.B. 10 KHz (Bild 3) und mit Anfang der zu messende Schwingung diese erzeugten
Takte zählen um den Zählvorgang mit Ende der Schwingung zu stoppen, auf Grund der Menge der gezählten Impulse kann die Frequenz berechnet werden.


Bild 3



Programmbeschreibung
Mit Timer 1 wird der Sekundentakt generiert und dient als Messzeit.
Mit Timer 0 werden die eingehenden Schwingungen gezählt , da aber Timer0 nur bis 255 zählen kann findet jeweils bei 255 ein Überlauf statt
der in der Überlauf-Variable registriert wird und dann zum eigentlichen Timerwert hinzugerechnet wird.

Zeile
Programm
Beschreibung
1
$regfile "m8def.dat"

2
$crystal=16000000

3
$hwstack=32

4
$swstack=10

5
config lcd=16*2
Display als 2 mal 16 Zeichen deklarieren
6
config Lcdpin=Pin,Db4=Portb.5,Db5=Portb.4,Db6=Portb.3,Db7=Portb.2,Rs=Portd.1,E=Portd.0
Display Anschlüsse an den Atmega konfigurieren
7
DDRd=&B01100011
Portd0, D1, D5 und D6 als Ausgänge definieren
8
Portd=&B00010000
Pull Up für Pin D4 setzen-Messeingang
9
Dim Ueberlauf As Long
Variable deklarieren
10
Dim Impulse as Long
Variable deklarieren
11
On Timer1 Timer_eins
Unterroutine für Timer 1 deklarieren
12
TCCR1A=&B00000000
Teiler für Timer 1 setzen
13
TCCR1B=&B00000101

14
Timsk=&B00000101

15
SREG=&B10000000

16
Timer1=49850

17
On Timer0 Timer_null

18
TCCR0=&B00000111

19
Do

20
Gosub Anzeige

21
Loop

22
Timer_eins:
Unterroutine für Timer 1
23
Timer1=49850
Timer Voreinstellung für 1 Sekundentakt
24
Ueberlauf=Ueberlauf * 255

25
Impulse = Ueberlauf + Timer0

26
Ueberlauf=0

27
Timer0=0

28
Return

29
Timer_null:
Unterroutine für Timer 0
30
incr Ueberlauf
In Variable "Ueberlauf" bei jedem erreichten 255. Schritt 1 hinzu addieren
31
Return

32
Anzeige:
Ab hier beginnt die Displayausgabe
33
cls

34
Locate 1,1

35
Lcd Impulse;"Hz"

36
Cursor Off Noblink
Cursor ausschalten
37
Waitms 200

38
Return


Der Frequenzbereich erstreckt sich in etwa zwischen 1 Hz und 5 MHz, höher konnte nicht getestet werden da kein höheres Signal zu Verfügung stand.
Allerdings kann nur TTL Pegel gemessen werden, sollte also ein geringere Pegel als ca 3,8 Volt gemessen werden ist noch ein Vorverstärker angebracht ( der ist noch in Bearbeitung).
Zum messen höherer Frequenzen kann noch ein Vorteiler erstellt werden .

Bascom Programm hier laden
Frequenzmesser kalibrieren
Um den Frequenzmesser zu testen  und  gegebenen falls zu Kalibrieren , benutze eich einen Quarzoszillator.
Quarzoszillatoren werden mit einem Metall- oder Kunststoffgehäuse im Rastermaß von Integrierten Schaltungen hergestellt.
Sie liefern eine Logik-kompatible Rechteckspannung (Taktsignal) mit sehr genau definierter Frequenz.
Sie benötigen eine Betriebsspannung und enthalten alle für einen Oszillator erforderlichen Komponenten.
Die Frequenz dieser Quarzoszillator-Bausteine ist auf der Gehäuseoberseite normalerweise in Megahertz aufgedruckt.
Die Ungenauigkeit der Frequenz wird in ppm (englisch parts per million) angegeben.
Je geringer diese Ungenauigkeit, desto aufwendiger (und damit teurer) ist das Bauteil.

Geläufige Bauformen für die Durchsteckmontage sind DIP 14 (rechteckig, siehe Bild) und DIP 8 (quadratisch).
Übliche Versorgungsspannungen orientieren sich an der Versorgung von digitalen Schaltungen wie 1,8 V, 2,5 V oder 3,3 V und die früher häufig bei Transistor-Transistor-Logik (TTL) verwendeten 5 V.

Quarzoszillatoren  gibt es also schon fertig zu kaufen müssen nur noch mit einer Betriebsspannung versorgt werden und geben dann ein TTL Signal mit der Bauteile spezifischen Frequenz aus.
In meinem Fall hab ich einen Quarzoszillator mit möglichst hoher Frequenz benutzt, das hat zwei Gründe , erstens um sehen zu können wie hoch mein Zähler überhaupt zählen kann,
und zweitens um den Frequenzmesser bei einer möglichst hohen Frequenz zu kalibrieren.
Also benutze ich einen Quarzoszillator mit 7,3728 MHz.

Bei Ungenauigkeiten der Erzeugten Frequenz und des Frequenzmesser kann dieser einfach kalibriert werden indem der "Timer1" Wert in Zeile 16 des Bascom Programm geringfügig angepasst wird,
oder in dem parallel zum Quarz am Mikroprozessor (Pin9 und 10) ein zusätzlicher Abstimmkondensator von ca 5 pf geschaltet wird.



Datenblatt hier




Der Quarzoszillator hat meist nur 4 Anschlüsse , diese sind aber nicht wie üblich mit 1-2-3-4 bezeichnet sondern mit 1-7-8-14 ,diese Bezeichnung hat man wohl gewählt weil
der Quarzoszillator auch direkt in eine 14 polige IC Fassung gesteckt werden kann und dann die Anschlüsse mit der, der IC Fassung identisch ist.

Die Höhe der messbaren Frequenz ist vom verwendeten Quarz am Mikroprozessor abhängig und beträgt etwa die halbe Quarzfrequenz,
bei dem hier verwendeten Quarz von 16 MHz beträgt die messbare Frequenz also 8 MHz.

Frequenzvorteiler
Um höhere Frequenzen zu messen  kann man einen  Vorteiler einsetzen der Frequenzen bis 1, 1 Giga Hz durch die Faktoren 64,128,oder 156 herunter teilt.
Allerdings benötigt dieser Teiler eine Mindestfrequenz um zu arbeiten, bei mir funktionierte es auf jeden Fall mit mindestens 40 MHz ein Test mit ca 7 MHz brachte keinen Erfolg
Laut Datenblatt lässt sich die Eingangsfrequenz durch die Faktoren 64,128 und 156 herunter teilen, bei mir allerdings klappte es bei 256 und 128 , nicht aber  bei 64.
Nach Datenblatt des U813 wird der Teilungsfaktor am Anschluss Pin 5 eingestellt , das heißt Pin 5 auf Plus 5 Volt bedeutet Teilung durch 128, Pin5 auf Masse ist gleich Teilung durch 256,
und Pin 5 unbelegt sollte Teilung durch 64 sein.

Bei mir allerdings stellte sich Teilung durch 256 ein wenn Pin 5 unbelegt war, und Teilung  durch 128 wenn Pin 5 auf Plus gelegt wurde. Warum ??????
Datenblatt für U813




Um den Frequenzmesser zu testen reicht es den Messeingang beim fertigen Frequenzmesser mit den Finger zu berühren , vorausgesetzt es ist genug Elektrosmog
vorhanden sollte eine Frequenz von 50 Hz angezeigt werden.

Wichtig !
Die Eingangsspannung am Messeingang darf nicht höher also 5 Volt sein sonst verabschiedet sich der Mikroprozessor ins Nirwana,
um das zu verhindern kann man eine Zenerdiode oder einen Spannungsteiler vorschalten.



Aktualisiert 24.01.2019