www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externer Frequenzzähler


Autor: Hans Krabe (xon)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin, ich weiß, dass ein ähnliches Thema schon zu genüge hier im Forum 
diskutiert wurde, aber irgendwie helfen mir die anderen Beiträge nicht 
weiter...

Ich möchte folgendes bauen: Einen externen Frequenzmesser (im Bereich 
von 0 bis 300 Hz) für den PC. Der soll einfach ein Rechtecksignal zu 
einer Zahl umwandeln und dann zum Rechner schicken, so dass ich ihn da 
weiterverwenden kann... Ich hab mir schon einige Gedanken gemacht, aber 
ich weiß nicht ob ich umbedingt noch Bauteile vor den Controllereingang 
bauen muss...

Und dann bin ich mir noch nicht ganz sicher, wie ich bei meinem 
Controller (ATmega 8) einen so "großen" Timerwert zur Auswertung 
erzeugen kann. Mache ich das so, dass ich den Counter immer bis max. 
hochzählen lasse und dann wieder zurücksetzte?

greetz

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für die Messung so niedriger Frequenzen nimmt man am besten den ICP 
Eingang.  Über die Input Capture Funktion kann dann der Zählerstand von 
Timer 1 (16 Bit) für die Flanken gemessen werden. Der Timer1 läuft dabei 
die ganze Zeit durch. Die Periodendauer egibt sich dann aus der 
Zeitdifferenz zwischen 2 Flanken der selben Sorte.
Wenns einfach sein soll wählt man den Prescaler so, das sich die 
Zeitdifferenz noch als 16 Bit Wert darstellen läßt. Bei 0 Hz geht das 
natürlich nicht mehr.

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Moin, ich weiß, dass ein ähnliches Thema schon zu genüge hier im Forum
> diskutiert wurde, aber irgendwie helfen mir die anderen Beiträge nicht
> weiter...

Wieso denn nicht?

> Ich möchte folgendes bauen: Einen externen Frequenzmesser (im Bereich
> von 0 bis 300 Hz) für den PC. Der soll einfach ein Rechtecksignal zu
> einer Zahl umwandeln und dann zum Rechner schicken, so dass ich ihn da
> weiterverwenden kann...

Am simpelsten wär es, wenn dein Frequenzzähler jede volle Sekunde den 
Wert in einen String verpackt per UART verschickt.

Hat dein PC denn noch eine serielle Schnittstelle? Falls ja nimm einen 
MAX232 (siehe Tutorial) und gut ist. Falls nicht besorg dir noch einen 
USB-Seriell-Wandler. Wenn du nur periodisch Strings an den Rechner 
sendest sollte hier sogut wie jeder Wandler (10€ Digitus Dongle) 
funktionieren.

> Ich hab mir schon einige Gedanken gemacht, aber
> ich weiß nicht ob ich umbedingt noch Bauteile vor den Controllereingang
> bauen muss...

Tja, kommt drauf an wie dein Signal aussieht (Signalpegel) und mit 
welcher Betriebsspannung du deinen Atmega8 betreiben willst/musst.

Wo kommt dein zu messendes Signal her?
Welche Spannung ist zu erwarten?

Falls dein Controller mit +5V läuft und das Signal ebenfalls 5V-Pegel 
hat würde ich am Eingang einfach eine 5.6V Z-Diode gegen Masse und 
Betriebsspannung vorsehen. Das reicht als einfache Schutzbeschaltung.

> Und dann bin ich mir noch nicht ganz sicher, wie ich bei meinem
> Controller (ATmega 8) einen so "großen" Timerwert zur Auswertung
> erzeugen kann. Mache ich das so, dass ich den Counter immer bis max.
> hochzählen lasse und dann wieder zurücksetzte?

Wieso, der 16-Bit Timer kann immerhin bis 65535 zählen, falls du ihn mit 
dem zu messenden Signal takten magst. Der 8-Bit Timer sorgt (per 
Interrupt) dann für eine Torzeit für 1s. Sobald die Torzeit rum ist 
startet gleich die nächste Messung und die letzte wird umgerechnet und 
verschickt.

Autor: [Frank] (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans Krabe

Hier eine Minimalversion bis 5MHz mit Tiny2313 und serieller 
Schnittstelle.
http://cappels.org/dproj/30MHzfmeter/30MhzFmtr.html

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.