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

4 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

Schreibe einen Kommentar

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