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

周期測定ライブラリを利用してリニア VCO の特性を自動測定する Pakurino (Arduino) 用のスケッチを作成し、LM331 についてデータを取ってみました。
結果のグラフを下に示します。
20 Hz から 20 kHz までの 10 オクターブの範囲で、誤差は ±4 セント程度になっています。

VCO には Timer1 の OC1B 出力を利用した 16 ビット PWM DAC でリニア CV を与えていますが、その LPF は、 TGmega の CV/ENVELOPE 出力用の LPF を改造したものを使っています。
この LPF は、シグマデルタ DAC の実験で、0.1 μF のコンデンサに 1 μF のコンデンサを並列に接続してカットオフ周波数を約 800 Hz にしたものの上に、さらに 10 μF のコンデンサを並列接続してカットオフ周波数を約 80 Hz にしたものを使っています。
下の回路図ではコンデンサの値が 10 μF になっていますが、親亀・小亀・孫亀状態なので、実際の値は 11.1 μF です。

VCO 側の回路は、2009 年 5 月 31 日の記事 (http://d.hatena.ne.jp/pcm1723/20090531) で LM331/NJM4151 を測定した回路を改造したものを使いました。
回路図を下に示します。

U1 は単純なシンク方向の定電流源です。
この方式では、この OP アンプおよび LPF の OP アンプのオフセット電圧の影響が避けられませんが、得られたデータに直線回帰を施し、求まった「y 切片」はオフセット成分が現れたものと見なして、データ処理上でキャンセルしています。
当初、LPF の OP アンプに LMC662 を使ったところ、結果の誤差の値が ±20 セント程度と大きくなり、悩みましたが、OP アンプを TLC272 に交換してみたところ、誤差が減りました。
LPF 回路は LM358 を使った場合に出力段が A 級動作をするように、ゲイン設定用の抵抗を 2.2 kΩ x 2 と低く選んであり、このような条件では LMC662 の出力電圧がグラウンドに近い場合にリニアリティが悪くなるのかも知れません。
定電流回路ではトランジスタの Vbe 分が加わり、OP アンプ出力電圧は 0.6 V 程度までしか落ちないためなのか、定電流回路の OP アンプは LMC662 でも TLC272 でも、誤差に違いはありませんでした。