「迷走の果て・Tiny Objects」というブログに掲載されている、レシプロカル式周波数カウンタを試しました。
レシプロカル式つまり、逆数式というのは、信号の周期Tを測定して、その逆数を計算し、f=1/Tより周波数を求める方式です。
このスケッチは、外部割り込み0を使いますので、信号はD2に入力します。それに伴い前回の周波数カウンタのLCDへの接続を変更します。
信号の立ち上がりで、割り込みを発生させて周期をマイクロセカンド単位で測定します。
setup()の中の、attackInterrupt(0,periodIrq,RISING);で割り込み方法を指定します。
回路図です。ここでは、「あちゃんでいいの」を使っています。
1000Hzを測定してみました。
正確に表示されました。
上限は、約50KHzまででした。下の方は、自作SGの下限周波数10Hzまで測定できました。
ただ、100Hz以下になると表示がブレます。信号源の自作SGの安定性が低い周波数であまりよくないせいかもしれません。
普通のカウンタでは、低い周波数はゲートタイム1秒が必要ですが、このレシプロカル式カウンタの場合は、非常に短い時間で周波数を測定することができますので、チューニングメータなどへの応用が可能だと思います。
工夫次第でもっと高い周波数まで測定できると思います。低い周波数での安定表示には、移動平均をとるなどすればいいのかもしれません。