3.3 V 化 CMOS 555 VCO (1)

これまで、555 を使ったタイプの VCO については、あまり注目してきませんでした。
その理由は、ソース方向のアンチログ出力電流が求められるため、通常は、PNP トランジスタによる構成でアンチログ回路を実現する必要があるからです。
トランジスタ・アレイを使って、アンチログ以外にも温度補償のための回路を同一パッケージ内のトランジスタで構成しようと思っても、ダーリントン接続やパワーデバイスでない小信号用単体トランジスタで構成された PNP トランジスタ・アレイは一般的ではなく、手に入りにくいのです。
アンチログその他は NPN トランジスタ・アレイで実現して、PNP カレント・ミラーで電流の向きを折り返してソース電流を得る方式でも良いのですが、約 1000 倍に渡る電流レンジ内でカレント・ミラーが精度良く実現できるかどうか、不安も残ります。
前回の実験で、555 を使ったリニア VCO 部は電源電圧 3.3 V でも十分動作することは分かったので、アンチログ部はともかく、3.3 V 動作での リニア VCO 部の特性を測定してみました。
測定回路を下に示します。 (3/9 追記: TRIGGER 端子 (2 番ピン) と THRES 端子 (6 番ピン) の配線が入れ替わっていた誤りを修正しました。)

アンチログ出力電流範囲を 1 μA 〜 1 mA 程度に想定しており、その電流値で 20 Hz 〜 20 kHz を発振するように、タイミング・コンデンサの値を「223」、つまり 22 nF = 0.022 μF に選んでいます。
このコンデンサの値では、さすがにディスチャージに要する時間が大きくなり、555 の SR-FF が反転するまえに放電しきることは不可能になります。
そのため、555 の 2 番ピン (TRIGGER 端子) 側に独立した時定数回路 (4.7 kΩ + 270 pF) を設け、3 番ピン (OUTPUT 端子) でドライブして、リセット時間を一定に保つようにしてあります。 その時定数は計算上で、約 1.3 μs です。
入出力レイル・ツー・レイルの OP アンプ NJU7043 と 2SA1015 を使って定電流回路を構成しています。
差動増幅回路の構成になっていますが、エミッタ抵抗 470 Ω の分だけバランスが崩れていて、正確な差動にはなっていません。
測定には、以前と同様に、Arduino (Pakurino) のスケッチとして実現したレシプロカル・カウンタを利用した周波数自動測定システムで行っています。
レシプロカル・カウンタのための TIMER1 を利用した 16 ビット PWM 出力を、VCO のタイミング・コンデンサの充電電流を決定する定電流回路への入力として使っています。
Arduino 側では、16 ビット PWM 出力を 3 次ベッセル・トムソン・フィルタで平滑すると同時に、電圧レベルも 0 〜 3 V の範囲に減衰させています。
555 VCO では、のこぎり波は 0 〜 2/3 Vdd の範囲で振動しますから、3.3 V 電源では 0 〜 2.2 V となり、定電流回路側に残された電圧は 1.1 V しかありません。
2SA1015 の Vbe を 0.6 V 程度と見込むと、トランジスタが飽和しない範囲では、エミッタ抵抗での電圧降下は 0.5 V 程度しか得られないことになります。
アンチログ出力電流範囲は 1 μA 〜 1 mA 程度を想定しているので、定電流回路の最大出力電流を 1 mA 程度にするために、エミッタ抵抗は 470 Ω に選んであります。
一方、最小電流の 1 μA では、470 Ω のエミッタ抵抗両端での電圧降下が約 0.5 mV となり、回路的には電源電圧変動がモロに効くこともあり、後の結果に示すように、低電流側では精度のとれない回路となっています。
Franco の補償の抵抗値を 0、つまり補償なしの「裸」の場合の結果を下に示します。

赤い線が測定結果で、「理想周波数」を横軸に、縦軸に誤差量を「セント」単位で表示しています。
青い線がリセット時間を 1.5 μs とした場合の誤差量の理論値です。
測定結果を「直線回帰」して得られた直線を「理想特性」と見なしています。
回帰直線のあてはめに使うデータは、誤差が大きくなる部分を除いた、100 Hz 〜 数 100 Hz の範囲のものを使っています。
前述のように、約 100 Hz 以下の領域では誤差が大きくなっています。
20 セントの誤差は約 1 % の誤差に相当しますから、最小電流 1 μA の 1 % は 10 nA 程度となり、この程度は仕方ないかなとは思います。
大電流側では、リセット時間を 1.5 μs に選んだ理論値と、ほぼ一致しています。
リセット時間 1.5 μs に対応する Franco の補償の抵抗の計算値は、
1.5 [μs] / 22 [nF] = 68.2 [Ω]
となりますが、少し大きめの 75 Ω を使った場合の結果を下に示します。

青い線で 0.15 μs のリセット時間に対する誤差の理論値を示してあります。
赤い線の測定結果のほうは、10 kHz 程度まではマイナス方向に誤差が増えていますが、10 kHz を超えるあたりから誤差が減る傾向にあります。
リセット時間に起因する誤差とは違う原因の誤差が表れているようで、定電流回路の飽和の影響かも知れません。
いずれにしろ、大電流側 20 kHz 程度までの範囲で、誤差が 2 〜 3 セントにおさまっているわけであり、Franco の補償をかければ、十分実用的な精度が得られることが分かりました。