Frequenzzähler mit dem Arduino Uno Teil 1

Wenn eine 5V Wechselspannung vorliegt, z.B. aus dem Rechteckgenerator, kann der Arduino die Frequenz direkt zählen. Das funktioniert bis ca. 8 MHz bei einem symmetrischen
Rechtecksignal, ansonsten weniger. Martin Nawrath hat hierzu eine gute Library geschrieben und bereit gestellt.

Die Hardware

Beim Uno wird die 5V Rechteckspannung direkt an Pin 5 gelegt.

Bitte keine höhere Spitzenspannung verwenden, da das den Arduino beschädigen oder zerstören kann. Am besten schaltet man einen TTL Baustein 74xx davor, der ist billiger zu ersetzen als der Mikrocontroller.

Die Software

Hier der Arduino Programmcode mit Kommentaren:

// Arduino Uno Frequenzzähler bis ca. 5 MHz
// Eingangsspannung muss an Pin 5 mit 5V Pegel ankommen.
// 
// Beschreibung und Library unter:
// http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library/
//
// Matthias Busse 11.04.2014 Version 1.0

#include < FreqCounter.h>
long int freq;

void setup() {
  Serial.begin(38400);               // Serielle Ausgabe
  Serial.println("Frequenz Zaehler V 1.0");
}

void loop() {
 FreqCounter::f_comp= 8;             // Kompensation einstellen
 FreqCounter::start(1000);           // Zähler starten für 1000ms
 while (FreqCounter::f_ready == 0)   // warten bis der Zähler fertig ist
 
 freq=FreqCounter::f_freq;           // Ergebnis lesen
 Serial.println(freq);               // und ausgeben
}

von Matthias Busse

Hilfreiche Links

Die Beschreibung von Martin Nawrath

Teil 1 > Frequenzzähler mit dem Arduino Uno Teil 2

10 Gedanken zu „Frequenzzähler mit dem Arduino Uno Teil 1

  1. Pingback: Den Frequenzzähler mit LCD Display auf der Platine aufgebaut. | Shelvin – Elektronik ausprobiert und erläutert

  2. Manfred

    Eine nette Anregung, ich habe hier einige Ideen mitgenommen. Den Frequezzähler sehe ich kritisch, eher ein Lernobjekt denn Meßgerät.

    Den Uno habe ich als China-Version, Display dran und die Millisekunden seit Start anzeigen lassen. Ich habe das 22 Tage laufen lassen und einfach mit der Funkuhr verglichen: 22 Tage sind 1.900.800 Sekunden, angezeigt wurden 1.886.420 Sekunden.

    Zurückgerechnet sind das fast 11 Minuten Ablage pro Tag oder 7,6*10E-3, das ist grottenschlecht. Der Systemtakt liegt gerechnet bei 15,88 MHz anstatt der angegebenen 16 MHz – für ein Thermometer oder eine Modellbahnampel volkkommen egal.

    Natürlich der Hinweis: Das war ein Test an einem beliebigen Einzelstück, andere können abweichen.

    Antworten
  3. jens

    Hallo Martin,

    ich fange geradean mit den Arduino zu arbeiten.
    und dein Projet eignet sich zur Drehzahlerfassung für einen Turboladers.
    leider bekomme ich eine Fehlermeldung beim Konpelieren :

    „avr-g++: error: missing filename after ‚-o‘

    exit status 1
    Fehler beim Kompilieren.“

    diese Kennst du sicherlich und weißt sicher was da falsch ist.

    Antworten
    1. Thomas

      Ich habe zahlreiche C-Programme geschrieben und fange aber auch erst mit dem Arduino an. Leider ist ist die Anleitung nicht sehr zielführend und man bekommt beim compilieren nur Fehlermeldungen.
      Schade, dann muss man eiinfach im Netz nach besseren Anleitungen suchen oder sich mit der Registerprogrammierung beschäftigen.

      Antworten
  4. Manfred Bartel

    Hallo,
    vielen Dank für dieses übersichtliche Progamm zur Frequenzmessung.
    Ich wollte es mit dem „Giesomat-Sensor“ als Regensensor bei meiner Markisensteuerung verwenden. Leider harmoniert es nicht mit der Funkübertragung der Wetterdaten (Licht, Wind, Temperatur…) über VirtualWire .
    Der Giesomat-Sensor ist an Pin5 (Arduino Nano), der Sender ist an Pin8 angeschlossen.
    Der Nano bleibt einfach stehen (stürzt ab).
    haben Sie eine Idee?

    Antworten
  5. Max

    Hallo der Artikel ist zwar schon was älter, aber ich habe was ähnliches vor und bin deshalb beim Suchen drauf gestoßen.
    Konkret geht es bei mir um ein Bedienpanel mit meheren Tastern wo je nach Taster eine Rechteckspannung mit unterschiedlicher Frequenz ausgegeben wird. Der Bereich ist etwa von 3-7 kHz. Amplitude etwa 3-5 V

    Ich muss jetzt nicht auf jede Nachkommastelle genau die Frequenz auslesen sondern es würde schon reichen, zwischen 3-4 Frequenzen zu unterscheiden. Es soll ja nur bestimmt werden, welcher Taster jetzt gedrückt wurde.

    In anderen Kommentaten wurde ja die Genauigkeit vom Arduino bemängelt jedoch müsste die für meinen Anwendungsfall eigentlich ausreichen.
    Danke für den Artikel und ich werde das ganze mal in den nächsten Wochen testen. Falls hier Jemand noch Ideen hat, dann bitte gerne Antworten.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.