FreqCounter Libary auf Arduino Micro

Hallo, ich versuche die FreqCounter Libary von http://interface.khm.de/ zu benutzen..... zunächst bekam ich schon einen Sack Fehlermeldungen beim kompilieren, bis ich kapiert habe das das durch die enthaltene doppelte Codedatei .pde kommt und ich die gelöscht habe. Ging dann leider immer noch nicht :.. Ich glaube es liegt daran das die PIN - Zuweisung nicht passt. Ich verwende eine Arduino Micro, und die kleinen Arduinos basieren auf einem ATMEGA32U4, und da ist der wichtige Controller T1 Pin nicht Board-D5 sondern Board-D12. Also hab ich entsprechend umgesteckt, nützt aber auch nichts. Vermutlich müßte die Libary an ein paar Ecken angepasst werden. Irgendwie scheint allerdings grundsätzlich was nicht zu funktionieren, denn ich bekomme über seriell nicht mal die Überschrift "Frequenzy Counter" angezeigt, die ja vor jeglicher Zählroutine erscheinen sollte. Die Serielle Verbindung ist in Ordnung, ich kann problemlos ein anders Programm laufen lassen mit serielle Übertragung bei 115200 Baud.

Hat jemand einen Frequenzzähler im Bereich bis 500kHZ laufen und kann Tipps geben?

Danke Poehli

Hai,

wenn ich Deinem Link folge, sehe ich nichts, was mit Frequenzen zählen zu tun hat :~

Gruß, Ralf

Full completly :-)

http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library/

Also, wenn ich mir dieses Pinout ansehe http://www.pighixxx.com/pgdev/Temp/microb.png, finde ich T1 an Pin 26, PD6.

Kannst Du Dir das mal ansehen und evtl. ausprobieren?

Gruß, Ralf

Das ist richtig, genau das habe ich auch so gesehen. Wie ich sagte, T1 ist an ARDUINO BOARD D12. Das ist eine der erforderlichen Anpassungen bei der Nutzung der Libary, das hab ich bereits gemacht. Nützt aber nichts. Ich vermute die Libary muss angepasst werden, denn es kommt ja nicht mal die Überschrift.

Hast du auch den Link unten auf der von Dir verlinkten Seite gesehen? Da kannst Du evtl. direkt mit dem Autor der Lib Kontakt aufnehmen und fragen. Der müsste es ja eigentlich wissen. Ist vielleicht einen Versuch wert. Ich habe leider keinen Micro und kann es deshalb nicht probieren.

Gruß, Ralf

Also ich habe es auf dem Micro nicht zum laufen bekommen, er scheitert vermutlich weil die libary nicht für den Atmega Typ spezifiziert ist.

Aber ich möchte Feedback geben über den Einsatz auf dem UNO. - Die Libary hat einen Fehler in der Anzeige. Sie initialisiert in der Grundeinstellung mit minimum 10 Hz, die Ausgabe ist dann aber 1 Hz. Dh. man muss für die Anzeige frq*10 verwenden damit es stimmt.

Dann hab ich mal einen Performancetest gemacht mit einem professionellen Fluke Frequenzgenerator und einem positiven Rechtecksignale mit 50:50 Verhältnis. Die Frequenzmessung erfolgt korrekt bis 7,0 MHz, was ziemlich ordentlich ist. Den Fehler kann man vernachlässigen, ist irgendwo in der 4 Stelle. Vorsicht bei Frequenzen mit pos und neg Halbwellen, dann gibts nur Zahlensalat, die Welle muss schön im positiven laufen. Als minimale Vpp konnte ich 2,5V ermitteln.

Solong...

Hallo,

Du solltest den Arduino aber schon ein wenig gegen Wechsel- und Überspannungen schützen. Sie angehängtes Beispiel.

Gruß,
Ralf

Einen Frequenz-Zähler zu programmieren ist auch per Hand nicht schwer. Da braucht man nicht unbedingt eine Lib. Man betreibt dabei einfach einen der Timer über einen externen Takt (deshalb der T1 Pin). Dann zählt man eine bestimmte Zeit die Impulse und hat damit die Frequenz. Wenn man eine Sekunde lang zählt hat man direkt die Frequenz. Bei 500ms, muss man den Wert mit zwei multiplizieren, usw. Die einzige Schwierigkeit ist vielleicht das Zeit-Fenster an die zu erwartende Frequenz anzupassen.

Ich nehme mal auf dem Atmega32u4 sind die Timer anders als beim Atmega328 und dass es deshalb nicht geht. Da müsstest du mal ins Datenblatt des Prozessors schauen.

Serenifly: Die einzige Schwierigkeit ist vielleicht das Zeit-Fenster an die zu erwartende Frequenz anzupassen.

Das Zählen ist sicherlich mit dem Arduino kein Problem. Ich sehe die richtige Schwierigkeit darin, die Torzeit bei der Zählung genau einzuhalten, den die Zählung wird nicht genauer als die Zeitmessung. Da ist mit dem Quarz auf dem Arduino kein Staat zu machen. Besser wäre ein ausgeschlachteter OCXO oder Rubidium-Standard.

Gruß, Ralf

Serenifly: Die einzige Schwierigkeit ist vielleicht das Zeitfenster an die zu erwartende Frequenz anzupassen.

der Teufel liegt wie immer im Detail. Wenn die Frequenz sehr niedrig ist, müßte das Zeitfenster sehr groß werden (und inzwischen könnte sich die Frequenz ändern) Dann muß die Routine so intelligent sein und auf Periodendauermessung umsteigen :)

Gruß Gerald

Es kommt auch darauf an wie schnell man das haben will, bzw. was man mit dem Messwert überhaupt macht. Ich habe sowas mal auf einem 8052 in Assembler programmiert. Für Frequenzen bis ca. 12kHz. Das war bei einer halben Sekunde gut brauchbar. Da ging es aber nur um darum, dass man den Wert auf einer Anzeige grob ablesen konnte.