多相発振器

シングルの発振器よりプッシュプルの発振器が好きでよく使うのですが、エンジンみたいに3気筒とか4気筒とかに相当する発振器というのはどんなもんだろうと思い、ここ数日考えてみました。

結論として、アナログ回路ではコイルとコンデンサ(またはオペアンプによる微積分回路によるシミュレーション)を使った動的な回転ベクトルは表現できますが、ある角度で止まっているベクトルを表すことができないのですね。それをするにはディジタル技術が最適です。DDSがまさにそれです。たとえば10ビットのレジスタなら1023の次が自然と0に戻るので、0から1024(=0)が0°から360°の角度とまったっく同じ性質で対応します。必要があれば角度からサインでもコサインでも作ればいいというわけです。

しかしアナログ技術にはまた別の意味でサイクリックな発振器というものがあります。リングオシレータです。

画像


ここで、論理回路のインバータのように描いてあるのはCMOSでなくてもいいですが、上下の対称性の良さからCMOSであるとしましょう。つまりスレッショルドが電源電圧の中心にあるインバータだとします。また、CMOSと同じような接続にしたバイポーラトランジスタ(ちょこまカーでも使っている)で実験することもできます。

画像


インバータの出力である矩形波がRC積分回路を通ると波形が鈍って次のインバータのスレッショルドを横切るには少し時間が遅れます。この遅れが段々に伝わって、もとのインバータに戻ってくると、こんどはもとのインバータが反転します。このようにして発振が維持されます。

ちなみに、RC積分ではなくRC微分でも可能です。ただし、矩形波(もちろん立上がり、立下がり時間はゼロではありませんが)をRC微分回路に入力すると出力は電源電圧を超えます。過大電圧に強い論理素子でないと壊れる可能性があります。

画像


★上の図で最大50パーセントまでと書いてありますが、これはちょっと間違いでした。グランドレベルが正負の電源の中心にあれば50パーセントですが、下側の電源とGNDが共通の場合は下側には100パーセント超える可能性があります

そういうわけで、実際上、あえて微分タイプを選ぶ必要もないので、ふつうは積分タイプが使われる思います。

ところで、リングオシレータを構成するインバータ(反転増幅器)とRC積分器のセットは普通奇数個です。偶数個ではすべてのインバータが1または0を出力して安定しているという状態なってしまいます。

画像


奇数個だとそういう状態が成立しません。3個のリングなら3相交流、5個のリングなら5相交流を発生します。

では少し理論的な解析をしてみたいと思います。積分型の3相リングオシレータがあるとします。いったい、発振の条件とはなんでしょう。それは信号がループを一周したときに完全に位相が元通り(つまり360°でも720°でもいいので回転して元の位相に戻ったとき)に、ループのゲインが1を超えている周波数があれば、その周波数で発振します。

そういう周波数(これをモードと呼んで良いでしょう)がもし複数あったらどうでしょう。ゲインが大きい方が振動の成長が速いので、ゲインの差が圧倒的であれば、ゲインの大きい方の周波数で発振することになります。偶数ループでは発振停止が安定というのは、見方を変えると一周して位相が元通りになる周波数のなかで、ゼロHzのモードがいちばんゲインが高いということです。

複数のモードでループゲインが近い場合は、どちらの周波数でも発振する可能性があります。いったんどちらかの周波数が成長すると、他の周波数の信号は成長しにくくなります。それは、次の疑問とも関係があります。

そもそも、振幅が安定しているということ、つまり振幅が大きくも小さくもならないということは、ループゲインが1ではないのか、という疑問です。理論どおり線形ならそのとおりなのです。実際の発振器では、振動が成長する過程ではループゲインが1より大きくなければなりませんし、温度や経時変化による変動を考えれば十分に大きいゲインを用意しておきたいものです。そして、いったん発振がスタートすると信服が成長していきますが、電源電圧の制限によって振幅が成長できなくなるまで成長します。この状態でやっとゲインが1に下がります。ただし、AGC(自動ゲイン調節)を付けた発振器の場合は、所定の振幅になったらゲインが1になるように調整されます。

電源電圧の制約で波形がつぶれると、つぶれている間は増幅器のゲインがほぼゼロに下がります。しかし1波長の中でもつぶれていないところでは本来のループゲインが回復しています。ですから、波形がつぶれて振幅が安定したということは、所詮線形じゃないのですが、1波長内の平均というような意味でループゲインが1になったと考えればいいでしょう。

もし、ある周波数で波形がつぶれるほど成長してしまうと、他の周波数に対するループゲインもその瞬間にはゼロに下がってしまいます。だから他の周波数が後から成長するのは難しくなります。複数のモードでループゲインが1よりちょっとだけ高いというような場合にだけ、あとから違うモードが取って代わったり、複数のモードが同時に立ったりすることができるわけです。

さて、ここで3相のリングオシレータをベクトル軌跡を使って解析してみようと思うのですが、まずRC積分とRC微分のベクトル軌跡を見てみましょう。入力信号の位相を基準(位相0°)とし、大きさも単位ベクトルとしたとき、線形回路を通った出力信号ベクトルの先端が、周波数を変化させたらどこを通るかを表示したのがベクトル軌跡です。ボード線図の周波数-振幅グラフと周波数-位相グラフをまとめて極座標表示に直し、周波数の軸は表現できないから曲線の脇にでも書き込んでおくというものです。自動制御の分野ではナイキスト線図と呼ばれているようです。

画像


積分の場合は周波数がゼロのときに1+j0からスタートし、複素平面の下側に半円を描き、周波数無限大のときに0になります。微分の場合は逆に周波数ゼロでは複素平面の原点にいて、周波数が上がるにつれて上側に半円を描き、周波数無限大のときに1+j0に収束します。

CのインピーダンスがRと同じ大きさになると位相が45°遅れ、振幅が1/√2に落ちますが、そのときの周波数が1次ローパスフィルタのカットオフ周波数です。もし動画でベクトルの動きを見ることができたとすれば、カットオフ周波数付近になるまでほとんどスタート位置から動かず、カットオフ周波数の1桁下あたりから急に動き出し、カットオフ周波数の1桁上あたりまでにはほとんど終点近くまで動いてしまいます。

では3相リングオシレータを考えます。ループを切ってみると、インバータでは振幅が増幅されて位相が反転します。位相の反転は180°の遅れまたは進みと同じですが、それが奇数回起こるので、けっきょく反転は1回だけとなります。振幅増幅はあとで考えるとして、RC積分の部分を3個まとめてベクトル軌跡を描いてみます。ただし、RC積分回路どうしの間に便宜上1倍のバッファを入れます。直結すると後段のインピーダンスが前段に影響して周波数特性が変わってしまいますので。

画像


ところで、上図を作るのに急遽Qucsをインストールしました。ブルーバックスに付いていたCircuitMakerのStudent版を愛用していたのですが、Proバージョン以外は極座標表示ができないということです。Qucsみたいな使いやすいソフトを只で配布されては商売しにくいだろうな。自分はハードウエア技術者でよかったよかった。

さて、これを見てわかるように、RC積分が1個のときは軌跡は第4象限に収まっていますが、2個、3個とつながると、第3、第2象限まで伸びていきます。ちなみに、3個のRC積分回路の時定数が等しいので、カットオフ周波数あたりベクトルがぐーっと動いて第2象限まで一気に動きます。もしそれぞれの時定数違っても軌跡の形は変わらず、ベクトルが急速に動く周波数が3つに分かれるだけです。

では3相リングオシレータのループを開いた等価回路で発振の条件を考えましょう。

画像


前述したようにインバータが奇数個直列になっているため位相反転が1箇所あります。そこで3相分のベクトル軌跡を複素平面の原点を中心に180°回します。そのとき、実軸の正の方向に交点が1箇所できます。この交点はRC積分3個だけだと1よりずっと小さい位置になりますが、インバータ3個分の振幅ゲインをかけたときに1を超えれば発振します。

このように考えるとかえって発振周波数がわかりにくいので、別の見方をするならば、奇数個直列になったインバータは位相遅れ180°分と見なし、残り180°の位相遅れを3個のRC積分で発生させればいいので、RC積分1個あたり60°の位相遅れが生じる周波数で発振するだろう、考えればいいです。5相、7相となると、RC積分1箇所あたりで発生する必要がある位相遅れがどんどん小さくて済むようになります。

ではなんでベクトル軌跡など描いたかというと、次のような疑問について考える手がかりになるからです。というか、今回ベクトル軌跡を手がかりに鳩歩堂自身理解を深めることができました。

まず、偶数ループではインバータによる180°遅れという「おまけ」がないわけですが、4相、6相と増やせば360°以上位相が遅れ、発振できるんじゃないだろうか、と思いませんか。

画像


4相の場合、周波数無限大になってベクトル軌跡が実軸と交差しません。考えてみればRC積分4個では位相遅れが360°以下なのでまだ足りないと言っているのと同じです。では6相ではどうか。軌跡が実軸と交差します。ところが、これは4相でも同じことなのですが、周波数ゼロのベクトル軌跡のスタート地点が実軸上の1+j0なので、必ずそっちの交点の方がゲインが大きくなってしまいます。結局インバータが交互に1と0を出力して停止している状態がもっとも安定ということになります。

では、ベクトル軌跡がゼロHzで、言い換えるとDCで実軸と交差できないように回路を変形したらどうでしょうか。つまりDCゲインをゼロにしてしまうのです。それには直列にコンデンサを入れればいいではないですか。ということで、積分回路に直列コンデンサを入れてみると、こんなベクトル軌跡になります。

画像


回路図でいちばん右のR3は実際の回路では必要ありませんが、これをつけておかないとシミュレータが変な答えを出してベクトル軌跡が上下非対称になるようです。ベクトル軌跡が上下対象に変化しました。ベクトルは周波数ゼロの時に原点にあり、軌跡の上を右回りし、周波数無限大でまた原点に戻ります。従って、実軸の正の領域との交差はDCではないある周波数で起こります。つまり、この周波数で発振するはずです。2角形、4角形、6角形と殖やしてみても、原点付近での螺旋の巻数が変わるだけで、実軸との交点付近はあまり変化しません。ですから、いちばん小さい2角形の発振器を作ってみるとこうなります。

画像


これを実際に作ってみるとちゃんと発振します。2角形なので2つのインバータの位相は180°です。では4つにしてみましょう。そうすると90°になるか、というと、なりません。180°の繰り返しになってしまいます。考えてみれば当然ですね。原点付近の螺旋の巻数が関係ないところで発振しているのですから。ですから、逆に2角形発振器ではRC微積分を1箇所にしても発振します。

画像


やっぱり偶数個のリング発振器は成立しないのでしょうか。

ところで、上図は積分回路をDCカットしたという意識で作りましたが、逆に微分回路のRに直列にCを入れたものと見ることもできます。RC微分回路のベクトル軌跡を思い出してみると、周波数無限大で実軸と交差します。微分型の2角形発振器は作れるのでは?しかし周波数無限大で発振するということはありえませんから、適当な周波数で軌跡が実軸と交わるように、微分回路のRと直列にCを入れて高周波側の周波数特性をわざと悪くしてやったものが、上の2角形発振器というようにも見られます。

しかし、よく考えると増幅器は無限大周波数では動作しません。従って、増幅器(インバータ)の周波数特性がどこかから下がっていくのを考えると、ただの微分回路でも2角形発振器ができるはずです。

と、そのとき問題になるのは、いままで自作の回路図ではグランドを下向きの白い三角形で描いてきましたが、これをロジックインバータの電源に対してどんな電位であると想定するかということです。ロジック回路では普通下側の電源(歴史的にVSSとかVEEと呼ぶこともありますが)をグランドGNDに接続しますが、もし微分のRを下側の電源に接続すると、どのインバータも入力がゼロ、出力が1になって安定してしまいます。そうならないために(発振がスタートできるように)Rはインバータのスレッショルド電圧付近に接続しておかなければなりません。

CMOSインバータにフィードバック抵抗をつけると、入力電圧がスレッショルド付近に固定されます。これは水晶発振器に使われるのでよく知られていますが、これを応用すると微分型2角形発振器ができます。

画像


はなしをどっちへもって行きたいかは、もうすぐわかります。RC微分回路の抵抗をどこにつなぐかの、もうひとつ巧妙な答えがあります。

画像


RC微分の抵抗をつなぐ先は、AC的な意味ではグランドでDC的にはスレッショルド電圧でなければならないのですが、上図のように時間平均がスレッショルド電圧で逆位相に振れているところ、すなわち前のインバータの出力につないでもいいわけです。発振周波数は変わるので抵抗の値は再調節する必要があります。じつは、この巧妙なアイディアは自分で思いついたわけではなく、上の上の上の図、すなわち2角形発振器のRC微積分を1箇所にした回路を見ていて気が付いたのです。CMOSインバータだけを使った安定なRC発振回路として、古くから知られている次のような回路と良く似ているのです。

画像


このCMOS発振器のR1は微分回路の抵抗ですが、ロジック回路のグランドがDC的にはスレッショルド電圧ではないので、位相が反対のところに接続して同じ効果を得ていると見ることができ、ここ数日考えてきたリング発振器から意外な定番回路に結びついたというわけです。

ちなみにR2は左側のインバータがラッチアップするのを防ぐ目的ですから、動作の解析には関係しません。CMOSの製造工程について鳩歩道は詳しく知りませんが、一つの基板にPチャネルMOSとNチャネルMOSを作る必要上PNPNという繰り返し構造ができてしいます。PNPNはサイリスタ構造なので、一旦トリガーされると電流が止まらなくなるという不具合が生じます。これがラッチアップで、昔のCMOSではしばしば発生して素子が壊れたりしました。電源電圧以上の電圧をかけるとラッチアップが発生しやすいので、CMOSの入力には電源に向けて逆並列に保護用のダイオードが入っています。電源電圧を越える入力電圧がかかって保護用のダイオードが導通することがわかっていても、その電流が寄生サイリスタをターンオンさせるほどの電流が流れないように抵抗で十分に抑えてやればラッチアップする心配はありません。つまり、R2はCMOSだから必要なのであって、別々に作られたNチャネルMOSとPチャネルMOSを組み合わせて使うなら必要ありません。

すでに相当長い記事になってきました。疲れました。しかしまだ面白い話が残っています。

リングオシレータはインバータが偶数個ではで成立しないのは定説です。RC微積分で発振する回路はできたものの、位相は2分割しかできないこともわかりました。しかしなんとかして偶数個のリングオシレータを作ってみたい。ちょっと考えていたらこんな回路を思いつきました。シミュレータにかけたら発振したではありませんか!ついに360°を偶数に分割する発振器が実現しました。

画像


しかもABCいずれの形式でも発振します。

画像


画像


画像


この方式で6角形でもなんでも発振します。もちろん3角や5角でも発振しますが、普通のリングオシレータより部品が多くなるのであまりメリットが無いでしょう。

この発振器がなんで成立するかは、つぎのように考ればいいです。ちょとトリッキーですが、まずリングオシレータが成立したと仮定してしまいます。今あるインバータを位相の基準(0°)とすると、次の図に示すように各インバータの出力は360°を4分割した90°毎の位相の信号を出力します。

画像


0°のインバータは、それ自身に位相反転能力があるので、RC積分でちょっと位相を遅らせたら180°になるところから信号をもらえば発振が成立します。この方式では90°遅れと180°遅れの信号を抵抗で合成しながら積分する回路になっているのです。つまり135°遅れ信号(ただし振幅がちょっと減っている)をさらに45度遅らせてフィードバックしていることになります。

ですから10角形とか12角形とか数が増えてくると90°と180°の間にインバータが複数あるので、どこから信号をとっても発振すると思われます。当然そのときのRCの値と発振周波数の関係は違ってきます。

"多相発振器" へのコメントを書く

お名前
メールアドレス
ホームページアドレス
コメント