Frequenzzähler mit dem Arduino Uno Teil 2

Die Frequenz wird zu besseren Lesbarkeit mit Dezimalpunkten ausgegeben.

Anstelle von 123445566 Hz wird nun 123.445.566 Hz ausgegeben.

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 12.04.2014 Version 1.1

#include < FreqCounter.h>

long int rfreq, mfreq;               // rfreq=Rechenfrequenz, mfreq=Messfrequenz
int hz=0, khz=0, mhz=0;              // Hz, kHz und MHz je 3 Ziffern
char sfreq[15];                      // sfreq=Stringfrequenz

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

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 
  mfreq=FreqCounter::f_freq;           // Ergebnis lesen
  rfreq=mfreq;
  hz=rfreq-(int((rfreq/1000))*1000);   // Hz ermitteln
  rfreq=(rfreq-hz)/1000;               // kHz ermitteln
  khz=rfreq-(int((rfreq/1000))*1000);
  rfreq=(rfreq-khz)/1000;              // MHz ermitteln
  mhz=rfreq-(int((rfreq/1000))*1000);
  if(mfreq<1000)                       // Hz in String schreiben
    sprintf(sfreq,"        %3d Hz",hz);
  if((mfreq>=1000)&&(mfreq<1000000))   // kHz.Hz in String schreiben
    sprintf(sfreq,"    %3d.%03d Hz",khz,hz);
  if(mfreq>999999)                     // MHz.kHz.Hz in String schreiben
    sprintf(sfreq,"%3d.%03d.%03d Hz",mhz,khz,hz);
  Serial.println(sfreq);               // und ausgeben
}

von Matthias Busse

Hilfreiche Links
sprintf() Formatierung
< Frequenzzähler mit dem Arduino Uno Teil 1
> Frequenzzähler mit LCD Display

8 Gedanken zu „Frequenzzähler mit dem Arduino Uno Teil 2

  1. Max Katzberg

    Hallo Matthias Busse
    Diesen Frequenzzaehler würde ich gerne nachbauen aber in dem sketch finde ich
    keine Zahl 5 für den Eingang da ich Pin 5 für meine LCD Anzeige brauche
    muss ich für den Eingang einen anderen Pin nehmen.
    Es gibt ja hier so viele schöne Sachen aber ich bin ein ziemlicher
    Neuling für den Arduino.
    Viele Grüsse von Max Katzberg aus Moers

    Antworten
    1. admin Beitragsautor

      Hallo Max,

      Pin 5 muss hier der Eingangspin für die Frequenzzählung sein, das gibt die Library FreqCounter.h vor.
      Ggf. solltest Du das Displays auf einen anderen Pin legen. Das ist häufig gut machbar.

      Matthias

      Antworten
  2. Max Katzberg

    Danke für die Antwort den Pin 5 habe ich schon in 3 umgeschriben und
    das Gerät funktioniert wunderbar
    Grüße Max

    Ich habe immer in meinem Postfach nach einer Antwort gesehen
    jetzt weiss ich bescheid. Aber das ist ja ganz priema das man auch was in Deutsch
    hat was den Arduino betrifft,hier kann ich noch was lernen.Ich bin ja schon Rentner und
    72 Jahre und habe mit Arduino erst angefangen macht mir aber Spass.

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

  4. Marek

    Hallo,

    hat das einen Grund, warum hier vor FreqCounter.h bei dem include ein Space-Zeichen zuviel ist? (wie im Teil1)
    Ansonsten läuft mein C64 nun mit 985.3 Hz und das Bild springt bei meiner Hauppauge USB-Live2 nicht mehr.

    Danke

    Antworten
    1. admin Beitragsautor

      WordPress löscht ansonsten die Library Zeile wenn ich dort kein Leerzeichen schreibe, ich weiss nicht warum. Im Arduino Programm mußt Du es dann raus nehmen.

      Antworten
  5. Matthias Greiner-Petter

    Hallo, Herr Busse,

    ich hoffe, das Thema Frequenzzähler ist nicht erschöpft…
    Ich suche eine einfache Möglichkeit einen arduino nano oder uno für die Frequenzzählung im FM UKW Bereich einzusetzen (ein Braun Regie 450 soll eine digitale anzeige bekommen)
    Bisher habe ich nur Ihre geniale Seite gefunden, die aber halt nur bis 10Mhz zählt. Ich bräuchte min das 10 fache 😉 Vielleicht können Sie helfen?
    Besten Dank im Voraus
    Matthias

    Antworten
    1. Fritz

      Für hochfrequente Messungen im 3 stelligen MHz würde sich ein vorgeschalteter Frequenzteiler anbieten, denke ich. Den Teilungsfaktor dann einfach in die Berechnungen des Microcontrollers mit einbeziehen.
      Vielleicht war meine Antwort hilfreich für Sie oder sonst wen!
      Beste Grüße

      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.