アンチログ回路を学ぶ

published_with_changes 更新日:

labelLTspice labelVCO label発振器

univasal
ブレッドボードで自作したVCOをオシロとスピーカにつないで、目と耳で遊んでいたのですが、そのとき思ったことがあります。
  • 低い周波数の設定がやりずらい。(ポテンシオでの低電圧の微調整になる)
  • 変更できる周波数域をもっと広くしたい。

Googleで見て回っていると、アンチログ回路というものを見つけました。入力に対して出力が指数関数的に変化する特性を持っています。これはシンセサイザに利用されている回路らしいです。音は1オクターブ上がるごとに周波数が倍になるので、4オクターブの楽器は24=162^4=16(*1)の周波数変化をしています。こういった要求を満たすための回路のようです。
*1: C3 のドは130.813Hzで、その5オクターブ上のC8のドは32倍の4186.009Hzです。

残念ながら、バイブルにしている”定本シリーズ”には載っていませんでしたので、ネット情報を収集して学習します。

アナログシンセの VCO ブロック (3) -- アンチログ回路(2) - シンセ・アンプラグド

アナログシンセの VCO ブロック (3) -- アンチログ回路(2) - シンセ・アンプラグド

実際のアンチログ回路としては、ふたつのトランジスタを差動対の形で組み合わせ、OP アンプで定電流回路を構成したものが使われます。 まず、トランジスタ Q1, Q2 のエミッタは接続されているので、 より、 が成り立ちます。 これで、前述の の式の指数関数の引数に表れる の差と を結びつけることができました。

目次
  1. アンチログ回路とは
  2. シミュレーション
  3. 実験と評価
    1. DC解析
    2. 過渡解析
  4. VCOをつなげて周波数スイープの実験
  5. まとめ

アンチログ回路とは

指数が"exponential" だとダイレクトで分かりやすいのに、なぜが、"antilog" と言われているようです。その流れで、"Anti-Logarithmic amplifier" とかの言い方が使われています。

下記の図は、BJTトランジスタのベース-エミッタ間電圧とコレクタ電流(*2)の特性が微小な電流域では指数関数的であることを利用しています。特性図を読むと、VBEV_{BE} 0.1Vで2桁の電流の変化を扱う回路だとわかります。
*2: コレクタ電流はベース電流に比例(IC=hFEICI_C=h_{FE}\cdot I_C)しているので、ICVBEI_C\,- \, V_{BE} 特性は IBVBEI_B\,- \, V_{BE} 特性と同じ形になります。
引用:2SC1815 データーシート

実際のアンチログ回路としては、ふたつのトランジスタを差動対の形で組み合わせ、OP アンプで定電流回路を構成したものが使われます。
引用元:アナログシンセの VCO ブロック (3) -- アンチログ回路(2)

図と説明がわかりやすかったので引用させていただきました。


コレクタ電流は上図の記号を使って次式で表せます。 Iout=VrefRrefexp[VinqkT](1) \begin{aligned} I_{out}&= \cfrac{V_{ref}}{R_{ref}}\cdot \exp \left[ V_{in}\cdot \cfrac{q}{kT}\right] \tag1 \end{aligned}  
ここで、 
  •  q : 電子の電荷 1.6e-19 [C] 
  •  kk : ボルツマン定数 1.38e-23 [J/K] 
  •  TT : 絶対温度 [K] 
kTq\cfrac{kT}{q}VTV_T (thermal voltage) と呼ばれ、常温 (T=300KT=300K) で約 26mV26 mV です。 

さらに、アンチログ回路の特性をVinV_{in}が 1V 増加するたびに IoutI_{out} は2倍になる特性とすると、式(1)は次のようになります。
 Iout=Irefexp(181000VinVT) (1’) \begin{aligned} I_{out}=I_{ref}\cdot \exp \left(\cfrac{18}{1000} \cdot \cfrac{V_{in}}{V_T}\right) \tag{1'} \end{aligned}  
ここで、181000\cfrac{18}{1000} は入力1Vあたり周波数が2倍になるための定数で、
A=ln(2)26[mV]=18[mV]A=\ln(2) \cdot 26[mV] = 18[mV] です。つまり、VCO ブロックへの 1V/Oct の VinV_{in}入力を 18/1000 倍して、アンチログ回路へ入力するとスケールが合うことになります。
出力に電源電圧VrefV_{ref}RrefR_{ref} が影響することに注意が必要です。

シミュレーション

前項の考え方を回路に置き換えると下図になります。回路の定数はこのブログを参考にしました。(lm358を使った自作シンセサイザーのブログです。)
DIY Synth Series Part 1 — The Exponential VCO - Projects

DIY Synth Series Part 1 — The Exponential VCO - Projects

Build a 1V octave voltage-controlled oscillator (VCO) module and create your own analogue synth sounds.

このアンチログ回路はよくある基本的な回路だそうで、NPNトランジスタQ2のベースに電圧を加えると、Q2のコレクタ電流が得られる原理です。カレントミラーになっているQ2のベースに正電圧を加えることと、Q1のベースに負電圧を加えることは同じことなので、反転増幅で作った負電圧を使える回路図の構成になっています。

左からの入力を18/1000倍に反転増幅したsignをアンチログ回路に入れると、Q2にコレクタ電流が流れます。これを測定するため電圧ゼロVの定電源を置きました。そして、オペアンプを使って電流を電圧に変換しています。


入力のQ1ベース電圧sign と出力のQ2コレクタ電流I(V6) の関係をシミュレーションで示します。I(V6)をリニア軸と対数軸でグラフにしてみました。理論どおり指数関数的にコレクタ電流が変化しています。signがマイナスなので右肩下がりの減少する特性です。

この特性を使って制御電圧(0-5V)の範囲でDC解析を行い、コレクタ電流I(V6)と出力電圧V(Antilog) が指数関数的に変化していることを確認しました。


実験と評価

ブレッドボードで組んだ回路で実験を行いシミュレーションとの比較をします。


回路の定数は表の内容です。シミュレーションのオペアンプにLM358を使うと収束しないケースがあったのでUnivarsalOpAmp2 を使っています。

素子SimulationExamination測定器
VCC [V]9.08.98OWON B35T
R1 [Ω]100k99.3kOWON B35T
R2 [Ω]1.8k1.787kOWON B35T
R5 [Ω]1k0.986kOWON B35T
R6 [Ω]1M0.995MOWON B35T
R7 [Ω]10k9.91kOWON B35T
C1 [F]1n0.98nOWON B35T
OPAMPUnivarsalOpAmp2LM358P

DC解析

図のように両者は良く一致していると言えます。

電圧が1V増加するたびに出力が2倍になることを見るため、上記で得られた近似式を使って1V刻みのAntilog出力を計算して、その倍率を求めてみました。

1Vの出力を基準にしたとき、1Vから5Vへ4オクターブ変わると、24=162^4=16倍になっています。

Key Voltage [V]Calculated [V]倍率
00.0900.50
10.1791.00
20.3582.00
30.7163.99
41.4307.97
52.85715.93

さらに、近似式の係数を理論式(1')と比較してみます。式(1)に実験で使った各定数を当てはめると、
 Iout=Irefexp(181000VinVT)=8.980.995×106exp(181000Vin261000)=9.03×106exp(1826Vin) \begin{aligned} I_{out}&=I_{ref}\cdot \exp \left(\cfrac{18}{1000} \cdot \cfrac{V_{in}}{V_T}\right) \\&=\cfrac{8.98}{0.995 \times 10^6}\cdot \exp \left(\cfrac{18}{1000} \cdot \cfrac{V_{in}}{\cfrac{26}{1000}}\right) \\&=9.03 \times 10^{-6} \cdot \exp \left( \cfrac{18}{26} \cdot V_{in} \right) \end{aligned}
ここに、1826\cfrac{18}{26}0.693=ln(2)0.693=\ln(2) です。また、近似式はオペアンプU3 で電流を電圧に変換したV(AntiLog)V(AntiLog) との関係ですので、その変換を行います。すると、式(1')はこのようになります。
V(AntiLog)=R7Iout=10×1039.03×106exp(0.693Vin) =0.0903exp(0.693Vin) \begin{aligned} V(AntiLog)&=R7\cdot I_{out}\\&=10 \times 10^3 \cdot 9.03 \times 10^{-6} \cdot \exp \left( 0.693 \cdot V_{in} \right)  \\&= 0.0903 \cdot \exp \left( 0.693 \cdot V_{in} \right) \end{aligned}
一方、近似式は、
V(AntiLog)=0.0898exp(0.692Vin)V(AntiLog)=0.0898 \cdot \exp \left( 0.692 \cdot V_{in} \right)
ですので、両者の一致が確認できました。

過渡解析

入力の制御電圧として、2とおりの定電圧 KEY:0V/1Vとのこぎり波 TUNE:10Hz 5Vp-p を考えます。それらを反転増幅オペアンプで加算して制御電圧とします。モデルと解析結果を下図に示します。

のこぎり波のスロープに応じて、指数関数的にAntilog出力が発生しています。さらに、KEY電圧の大きさによって、Antilog出力のゲインが指数関数的に変わります。

実験でもシミュレーションと同様の波形が観察できました。シミュレーションに使った記号で表せば、KEY:紫色の 1V、TUNE:水色の 5Vp-p、AntiLog:黄色の 5Vp-pです。

のこぎり波 TUNE:水色は、既報で作ったのこぎり波発振回路からの出力です。

Antilogの出力電圧が5Vp-pとシミュレーションよりもわずか小さくなっています。VT=kTqV_T=\cfrac{kT}{q} に含まれる温度や各種定数の違いが影響しているものと思われます。


VCOをつなげて周波数スイープの実験

既報のVCOにアンチログ回路をつなぎ、周波数が変わる状況を実験します。まず、シミュレーションにて動作確認を行います。

KEY:1V, TUNE: 5Vp-p 10Hz のこぎり波、VCC: 9V VEE: -9V の条件でシミュレーションを行いました。VCOの積分コンデンサC2: 0.1uFとしています。スピーカにつないで音確認の実験も行うつもりですので、可聴域の発振周波数を狙った設定です。

アンチログ回路の出力電圧が180mVから5.8Vで、VCOの周波数は20Hzから522Hzまでスイープする結果が得られました。


実験した回路図は下図に示すように今まで作ってきた個々の回路をつなげたものです。のこぎり波回路ではオペアンプにLT1364を使っていますが、他のオペアンプはLM358です。


下図はシミュレーションと同じ条件での実験波形です。AntiLogの出力5Vp-pに対して、25Hzから526Hzまでスイープしています。


25Hz

526Hz

次に示すのは、VCOの積分コンデンサC2を10nFに変えたときの周波数スイープです。トリガをうまくかけることができずぴったりの測定できなかったのですが、AntiLogの出力5Vp-pに対して、だいたい200Hzから2.5KHzをスイープしています。


まとめ

  • アンチログ回路を使うと、周波数を4オクターブ以上(20倍程度)可変できることが確認できました。
  • ポテンシオの抵抗変化に対して指数関数的に変化する制御電圧なので、低周波数域の調整も比較的やりやすくなりました。
  • 手元のポテンシオ操作で周波数が変わるスピーカからの音を聴いていると、簡単なシンセサイザだと思います。(引用元のブログタイトルは”DIY Synth Series ....”です。)
参考に、入力を色々いじったときのオシロ波形と音を動画にしてみました。



未実験ですが、入力を工夫すると下記のような波形も得られます。




Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down