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
Pingback: Den Frequenzzähler mit LCD Display auf der Platine aufgebaut. | Shelvin – Elektronik ausprobiert und erläutert
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.
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.
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.
Hi,
bei
#include
ist ein kleiner Fehler.
#include
muss es heissen, dann läuft das.
Danke
Sorry, WordPress hat die Sonderzeichen nicht übernommen.
vor include ..FreqCounter.h ist ein Space-Zeichen zuviel.
Danke für das Programm.
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?
Hallo,
bin ich der einzige, dem die Bibliothek fehlt? ich finde sie nirgendwo zum Downloaden.
Bei dem unten angegebenen Link gibt es die Library mit den Dateien drin.
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.