Pfad: Home => AVR-Übersicht => Anwendungen => Frequenzzähler
Frequenzzaehler

40MHz-Frequenzzähler mit ATmega8

Diese Anwendung eines AVR beschreibt einen Frequenzzähler mit dem ATMEL ATmega8 mit folgenden Eigenschaften:

Änderungen gegenüber älteren Versionen

0. Inhalt

1 Hardware

Der Frequenzzähler besteht aus einem Eingangsteil (Vorverstärker und Vorteiler) und dem Prozessor- und Anzeigeteil.

1.1 Eingangsteil

Schaltbild Eingangsteil
Das Eingangsteil hat einen Analog- und einen Digitaleingang.
Das Signal am Analogeingang wird mit dem schnellen Operationsverstärker NE592 verstärkt. Das Ausgangssignal wird dem Pegel angepasst und dem Schmitt-Trigger-NAND 74HCT132 zugeführt.
Der Digitaleingang wird direkt dem Schmitt-Trigger-NAND zugeführt.
Das Ausgangssignal des Schmitt-Triggers wird, abhängig vom Steuerungssignal des Prozessors, entweder direkt dem Prozessor zum Zählen zugeführt oder vorher im Binärzähler 74HCT93 durch 16 geteilt.

1.2 Prozessorteil

Schaltbild Prozessorteil
Der Prozessorteil ist um den ATmega8 herum aufgebaut. Der Prozessor wird mit einem Quarz von 16 MHz an den Anschlüssen XTAL1 und XTAL2 getaktet. Die beiden Keramikkondensatoren von 22 pF dienen dem besseren Anschwingen des Quarzoszillators.
Die Versorgung erfolgt über den GND-Anschluss an Pin 8 und VCC an Pin 7, die mit einem Keramikkondensator von 100 nF abgeblockt sind. Die Versorgung für den AD-Wandler wird über den GND-Anschluss Pin 22 und über eine Drossel von 22 µH am AVCC-Pin 20 zugeführt, der ebenfalls mit 100 nF geblockt ist. Die interne Referenzspannung wird am AREF-Pin 21 mit einem Folienkondensator von 100 nF geglättet.
Der AD-Wandler-Eingang PC1 ist mit dem Schleifer des Potentiometers verbunden, an dem der Mess- und Anzeigemodus eingestellt wird. Der Widerstand von 100 k begrenzt dessen Ausgangsspannung auf 2,5 V. Wird nur ein bestimmter Messmode benötigt, kann das Potentiometer auch gegen einen Trimmer oder einen festen Spannungsteiler aus Widerstäden ersetzt werden.
Am AD-Wandler-Kanal ADC0 (PC0) wird über einen Spannungsteiler das Analogsignal für die Spannungsmessung zugeführt. Im dargestellten Fall ist die Messung auf einen Vollausschlag von 5,12 V eingestellt. Durch Ändern der beiden Teiler-Widerstände kann die Auflösung der Spannungsmessung in weiten Bereichen verändert werden. Der AD-Wandler-Eingang ist wegen des hochohmigen Eingangs gegen Einstreuungen abgeblockt.
Die Signale TXD und RXD stellen das serielle Interface dar und sind mit dem Treiber-IC MAX232 verbunden. Die am MAX232 angeschlossenen Elkos dienen der Spannungserzeugung für die RS232-Signale. Diese liegen über einen 10-poligen Pfostenstecker an der neunpoligen Buchse an. Die RS232-Signale CTS, DSR und CD sind über die Widerstände 2k2 dauernd aktiviert.
Der I/O-Pin PC5 steuert den Vorteiler. Bei High erfolgt keine Vorteilung, bei Low eine Vorteilung durch 16.
Der Signaleingang aus dem Vorverstärker/Vorteiler wird sowohl dem Eingang INT0, für die Flankenmessung, als auch dem Eingang T0, für die Zählmessung, zugeführt.
Die Portbits PB0 bis PB3 dienen der vierbittigen Ansteuerung des Datenports der LCD-Anzeige. Der E(nable)-Eingang der LCD wird über PB5, der RS-Eingang über PB4 an gesteuert. Der E-Eingang ist bei inaktivem Portbit über 100 k auf Masse gelegt, um unbeabsichtigte Signale an der LCD zu vermeiden. Am VO-Eingang der LCD ist der Kontrast der Anzeige mit einem Trimmer von 10 k einstellbar.
Die Portbits MOSI, SCK und MISO sowie das RESET-Signal liegen am 10-poligen ISP-Port an, über den der Prozessor in der Schaltung programmiert werden kann. Die rote LED dient der Anzeige, dass der Programmiervorgang aktiv ist. Über die anliegende Betriebsspannung wird das Programmierinterface mit Strom versorgt.
Der RESET-Eingang ist über ein Widerstand von 10 k mit der Betriebsspannung verbunden.

1.3 LCD-Anzeige

Display

Die LCD-Anzeige ist über den 14-poligen Standardstecker an die Prozessorplatine angeschlossen. Verwendet werden können ein- und zweizeilige LCD-Anzeigen mit 16 bis 40 Zeichen pro Zeile (einstellbar per Software).

1.4 SIO-Anschluss

Der Zähler verfügt über einen SIO-Anschluss. Über dieses Interface kann das Messergebnis verfolgt werden. Darüber können auch Ausgabeparameter eingestellt werden.

1.5 Aufbauhinweise

Die gesamte Schaltung wurde auf einer Lochrasterplatine von 10 * 5 cm aufgebaut und mit Kupferlackdraht verdrahtet.

Platine

Zwei der Befestigungsschrauben der LCD-Anzeige dienen auch der Befestigung der Lochrasterplatine.

LCD

Alle Komponenten, einschließlich einer kleinen Netzteilversorgung und einer 9 V-Batterie für netzunabhängigen Betrieb passen in ein kleines Gehäuse.

Gehäuse

2. Bedienung

Die Bedienung ist sehr einfach. Die Auswahl zwischen dem Digital- und dem Analog-Eingang ist nicht erforderlich: angezeigt werden stets beide zusammen. Dazu wird bei offenem Eingang der Trimmer am Analogverstärker gerade so weit heruntergedreht, dass keine Fehlsignale resultieren.

2.1 Potentiometer für Mode-Auswahl

Am Mode-Potentiometer wird der Anzeige-Modus eingestellt. Bei der Frequenzmessung erfolgt die Auswahl, ob Impulse gezählt werden oder ob die Dauer der Flanken gemessen wird, durch die Modus-Auswahl.

Die Darstellung der Ergebnisse erfolgt bei zweizeiligen LCD-Anzeigen mit 16 Zeichen und mehr folgendermaßen:

ModeMessgrößeMessmethodeAnzeigenformat
0FrequenzZählung, Vorteiler=16F=99.999.999 Hz
1FrequenzZählung, Vorteiler=1f= 9.999.999 Hz
2FrequenzPeriodenmessungv= 9.999,999 Hz
3UmdrehungszahlPeriodenmessungu= 9.999.999 rpm
4PeriodePeriodenmessungt=99.999.999 us
5High-PeriodePeriodenmessungh=99.999.999 us
6Low-PeriodePeriodenmessungl=99.999.999.us
7High-PeriodenanteilPeriodenmessungP=100,0%
8Low-PeriodenanteilPeriodenmessungp=100,0%
9SpannungAD-WandlungU=9,999V

Bei einzeiligen LCD-Anzeigen wird die Spannung nur angezeigt, wenn Mode 9 eingestellt ist. Bei weniger als 16 Zeichen pro Zeile werden die Tausender-Trennzeichen und die Dimensionen nicht angezeigt. Die Messgrößen werden nur angezeigt, wenn der Messwert die entsprechenden Positionen nicht benötigt.

2.2 Spannungsmessung

Die am Spannungs-Messeingang anliegende Spannung wird vier Mal pro Sekunde gemessen und angezeigt.

3. Software

Die Software ist vollständig in Assembler geschrieben. Vor dem Assemblieren des Quellcodes sind unbedingt wichtige Einstellungen (siehe 3.1) vorzunehmen. Beim Programmieren in den ATmega8 sind unbedingt noch dessen Fuses zu verändern (siehe 3.2).

3.1 Einstellungen vor dem Assemblieren

Die folgenden Einstellungen sind vor dem Assemblieren in der Datei fcountV03.asm zu kontrollieren und ggfs. zu ändern:

3.2 Fuses

Im gelieferten Zustand sind ATmega8-Prozessoren auf den internen RC-Oszillator eingestellt. Damit der ATmega8 mit dem externen Quarz als Oszillator arbeitet, müssen die Fuses umgestellt werden.

Die Einstellungen sind mit dem ATMEL Studio folgendermaßen zu ändern: Fuses Studio Bild 1 Fuses Studio Bild 2

Die Einstellungen sind mit PonyProg 2000 sind folgendermaßen zu ändern:

Fuses PonyProg

Bitte beachten: Nach dem Ändern der Fuses ist der ATmega8 nur noch ansprechbar, wenn ein Quarz angeschlossen ist oder der Takt extern zugeführt wird! Beim Studio ist daher der XTAL Jumper zu stecken.

3.3 Kommentierter Quellcode

Der Quellcode liegt in HTML-Form (hier) und als Assembler-Quelltext (hier) vor. In der Textdatei LiesMich3.txt sind weitere Hinweise zur Programmierung und Bedienung zusammengestellt.

©2006-2009 by http://www.avr-asm-tutorial.net