Arduino 周波数/周期カウンタ (5)

前回とほぼ同じハードウェアで、XR2206 を自動測定してみました。
LM331 の結果と合わせてプロットしたグラフを下に示します。

青い線が XR2206 の場合です。
以前の測定と同様に、周波数が高くなるとピッチが低くなる傾向にあります。
100 Hz のあたりをピークとして、低いほうでは正の傾き、高いほうでは負の傾きになっていますが、100 Hz 以下で傾きが正になるのは測定回路の特性が現れているのかも知れません。
LM331 での結果も、約 100 Hz 以下の部分では誤差の出方の傾向が、それ以上の周波数の部分とは違っているように見えます。
この図のように、周波数をログスケールで、誤差を「音程」で表して、グラフが直線的になる場合は、リニア VCO の前段のアンチログ部のオクターブ・スパンの調整で誤差をキャンセルできる可能性があります。
VCO 部分の測定回路を下に示します。

この測定では、XR2206 の 11 番ピンの「SYNCO」出力の矩形波パルスで周波数を計測しているのですが、周波数で 100 Hz 程度、電流値で 3〜4 μA 程度の領域で、矩形波パルスの立ち上がりから 3〜2 μs 後の位置に「グリッチ」が乗って周波数をカウント・ミスするという現象がありました。
グリッチの位置は周波数が上がると (電流が増えると) 前に移動し、その「深さ」も変化します。
「SYNCO」出力はオープンコレクタで、プルアップして使用しているため、立ち上がりの波形は少しなまる傾向にあり、グリッチ波形そのものを正確に捉えることはできませんが、おそらくはグリッチ・パルス幅が変化しているものと思われます。
XR2206 は 2 個手持ちがあるのですが、どちらも同じ現象が現れました。
測定では、ミス・カウントを防ぐために、安直にコンデンサを接続して、波形をさらになまらせてグリッチを潰して行いました。