公開日:2019/06/08
title.png

6th Season


#6-1 オペアンプ、の、前に香辛料

 トランジスタを電気的なスイッチ代わりには使ってきたのですが、本来の用途は増幅回路を作るための素子です。ところが、トランジスタを使って増幅回路を作ろうとすると、なかなかハードルが高い。アナログ回路は何だか小難しくてわかりません。
 ですが、オペアンプと言う素子がありまして、これを使うと、比較的容易に増幅回路を組むことができるのです。オペアンプを応用すると、増幅回路だけではなく色々な応用回路も組むことができて楽しそう。そう思って、オペアンプICを購入してみました。

 「簡単に使える」、そう思っていたのですが、実際に回路を組んでみると、思った以上に難しくて、実回路でのデバッグは困難を極めました……(1x_;)。

 いきなり実際の回路を作ってデバッグするのは大変だったのです。オペアンプを使おうが、結局はアナログ信号だし、どのノードにどんな信号が出てきて、どこにどのくらい電流が流れて、どんな結果が出て来るか?どれをとっても、デバッグ環境の乏しい筆者環境では困難の連続。……舐めてた……orz。

 せめて、実回路を組む前に、シミュレーションとかできると良いのだけど……。

LTspiceの導入

 検索してみたところ、ありました。なんと、無償で使用可能な回路シミュレータ「LTspice」。以下の検索リンクから、探してみてください。

  LTspiceを検索する(別ウインドウが開きます)

 筆者がダウンロード/インストールしたのは、アナログ・デバイセズ社のHPから、LTspice XVIIと言うバージョンのWindows x64版です。
 同ページから、使い方の説明書等もダウンロード可能です。

※spice→香辛料……タイトルオヤジギャグ。ゴメンネ。

 ダウンロードしたインストーラを実行すると、何の問題もなく、すんなりインストールは完了しました。もうこの状態で、回路(スケマティック)の入力もシミュレーションもできるようになっています。まずは、LTspiceを起動してみましょう。
 「Fileメニュー ⇒ New Schematic」を実行すると、真っ新な画面が開きます。「Editメニュー」の中の、「Capacitor」、「Diode」、「Component」、「Draw Wire」等々を駆使して、以下の様な回路を構築してください。

ar61_chgp_schem.png

 「こんな回路エントリするの面倒だわ」と言う方は、以下リンクから回路データをダウンロードして、LTspiceから開いてみてください。

  サンプル回路:charge_pump.zip

 回路のエントリが終了したら、「Simulationメニュー ⇒ Run」を実行してください。2枚目のサブウインドウが開きます。新しく開いたサブウインドウは放っておいて、元の回路ウインドウを選択します。カーソルを素子やノード(配線)に重ねてみてください。カーソルの形が変わるはずです。変わったところで左クリックすると、その波形が、さっき開いた2枚目のサブウインドウに表示されます。
 カーソルの形は、オシロスコープ等のプローブの形→電圧波形、電流プローブの形(わかり難い)→電流波形です。観測したいノードの電圧/電流波形を追跡することができます。

 作成した回路や波形の表示情報などはセーブすることができます。インストールすると、「Documents\LTspiceXVII」ディレクトリができています。回路例なども収められており、自分で作成した回路のセーブ場所として使っても良いのだと思います。
 尚、「Documents\LTspiceXVII\lib」ディレクトリには、LTspiceで使う素子のモデルなど、セルライブラリが収められています。

 基本的な使い方は以上です。もっと詳しい使い方は、アナログ・デバイセズ社のHPからダウンロードできるドキュメントなどで調べてください。

 素晴らしい!欲しかったのはこんなのです。アナログ・デバイセズ社様には感謝ですね。

アナログ・デバイセズ(別ウインドウで検索)は、高性能なAD/DA変換器など、アナログソリューションを中心に製品展開する半導体メーカさんです。当然、クライアントの利便性を第一にLTspiceを公開しているのでしょう。

チャージポンプ

 先程、サンプルとしてご覧にいれた回路は、「チャージポンプ」と呼ばれる回路で、電源電圧Vcc(=5V)の×2倍の電圧を作り出す回路です(×2倍という特徴から、ダブラとも呼ばれます)。まずは、シミュレーションで電圧波形を確かめてみましょう。

ar61_chgp_wave.png

 入力Viは、2ms周期デューティ50%の矩形波です。普通のデジタル信号なので、0〜5[V]フルスイングです。中間のVm点では、その矩形波がぐっと持ち上げられて、9.5V近辺まで上昇しています。最終的に出力Voには、9V程度の電圧が出ています。
 最初に説明した通り、この回路は理想的には、Vcc×2倍の電圧を出力可能なチャージポンプなので、本来はVo=10Vが理想的な値です。

 原理を追っかけてみましょう。まず、回路図中、V1と記載された「○に+/−」の記号が付いた素子が、Arduinoなどのデジタル出力だと思ってください。ここで2ms周期の矩形波を出力しています。0〜5[V]フルスイングの矩形波なので、基本的な状態は2状態です。0Vを出力する状態(1ms)と、5Vを出力する状態(1ms)の2状態。

矩形波に0V出力している状態

 最初に、矩形波が0Vを出力している状態の回路を考察してみます。

 以上まとめると以下図のように見ることができます。

ar61_chgp_puls0.png

 この回路では、電源VccからコンデンサCchgに電流が流れ込み、十分時間が経過すると、CchgはVchg=Vcc−Vfまでチャージされます。Vfは、ダイオードD1の順方向降下電圧です。

矩形波に5V出力している状態

 続いて、V1がVcc(=5V)を出力した状態の回路を同様に考察します。

 以上まとめると以下図のように見ることができます。

ar61_chgp_puls1.png

 この回路ではCchgから電流が流れて、コンデンサCoutがVout=Vm−Vfまでチャージされます。VfはダイオードD2の順方向降下電圧です。
 すなわち、出力Voは定常状態では、以下の値に漸近します。

  Vo=Vout=Vm−Vf=Vcc+Vchg−Vf=Vcc+Vcc−Vf−Vf
  ∴Vo=2×(Vcc−Vf)

 理想的なダイオードでVf=0Vの時は、Vo=2×Vccまで上昇する回路、と言うことになります。先ほどのシミュレーション波形で、出力Voが2×Vcc=10Vまで上昇していなかったのは、2×Vf分の電圧低下があったためだとわかりました。

 また、出力電圧はコンデンサの容量(Cchg、Cout)には無関係に決まっていることがわかります。影響するのは、電源電圧Vccとダイオードの順方向降下電圧Vfのみ。通常のシリコン(PN接合)ダイオードでは、Vf=0.6〜0.7[V]ですので、Vcc=5Vの場合にはVo≒8.8〜8.6[V]くらいまで上昇可能と言うことになります。

ショットキダイオード

 通常は、高電圧を出したくてチャージポンプを使うはずです。よって、目的に最大限近づけるため、Vfの小さいショットキ(金属−半導体接合)ダイオードを使うのが一般的です。

 LTspice回路図エディタのダイオード素子の所で右クリックして、ショットキダイオードモデルを選択すると、シンボルが変化します(下図)。

ar61_diode.png

 ショットキ(Schottky;人名)ダイオードは、Vfは小さいのですが、逆方向電流が大きいという欠点も持っています。モデルを変えると、シンボルだけでなく、シミュレーション結果も変わるので、再度シミュレーションを実行して、Voの最終到達電圧を確認してみて下さい。

※最終到達電圧値より、電力効率などを重視する場合は、敢えてPN接合ダイオードを使っておくのも良い考えだと思います。

 ご参考までにご覧に入れたツェナ(Zener)ダイオード(上図真ん中)は、逆方向の降伏電圧を使う、ちょっと変わったダイオードです。これも、シンボルが少し変わりますので、「なんだこの記号?」と、ならないように、頭の片隅に入れておきましょう。

負荷を繋ぐ

 ここまで、出力Voが無負荷の状態でシミュレーションしてきました。実際には、チャージポンプで昇圧した電圧を使って、何らかの回路を駆動するのが目的ですよね?そこで、出力に電流負荷をつけてシミュレーションしてみましょう。
 最初に示した回路で、右端に負荷抵抗Rl(=10kΩ)を浮かせてありました。これをVoに接続してシミュレーションしてみます(下図がそのシミュレーション結果)。

ar61_chgp_load.png

 無負荷のシミュレーションと見比べると:

 矩形波に0Vを出力中の回路図(以下、再掲)より、Voの負荷電流は、Coutにチャージされた電荷だけで賄われることがわかります。

ar61_chgp_puls0.png

 高校物理学でしたか?以下の関係式:

  電荷Q、容量C、電圧V → Q=CV
  電流 I=dQ/dt …… 電荷の時間微分

 以上より、電流負荷Rlに電流が流れる → コンデンサから電荷が流出 → コンデンサの電圧が低下 → Voにリプルが発生、という連鎖によって、出力に電圧リプルが生じます。
 電圧が上がり切らないのは、電流負荷に流れる電流値に対して、それを賄う電荷源であるコンデンサの容量が足りないためだと思われます。以下いずれかの方法で、昇圧電圧・リプル電圧共に対策することができます。

※実回路と違って、簡単に数値を変更して試してみることができるのが、シミュレーションの利点です。素子の上で右クリックして数値を変更し、シミュレーションで試してみてください。

 多少の対策はできても、「電流が流れる → 電圧が低下」の関係が成立する以上、この回路は大きな電流を取り出すのが難しい回路ではあります。一方、インダクタ(コイル)を使わず、コンデンサとダイオードだけで回路を構成できるので、手軽に高電圧を生成できる有用な回路でもあります。

※通常、FlashメモリやEEPROMなどの消去/書き込みには、ロジック電圧とは異なる高電圧が必要となります。これをLSI内部で作り出す為に、ATmega328にもチャージポンプが入っているはずです。上の回路はインダクタが必要ないので、LSI内部、Siウェハ(チップ)上に形成することが可能です。

負の電圧を出力する

 この原理を応用すると、負の電圧を作るチャージポンプも作ることができます(以下回路)。

ar61_chgp_schem2.png

 ×2倍チャージポンプの時と同様に、どうやって負の電圧を作り出しているのか、考察してみてください。下図はシミュレーション結果です。

ar61_chgp_wave2.png

 考察してみたところ、Vo=−Vcc+2×Vf でしょうか?シリコンダイオードだと、Vo=−4V(Vcc=5Vの時)くらいですね。理想的(Vf=0Vの場合)には−Vccが出力される回路です。


 今回ご紹介した回路は、教科書に載っているまんまの回路です。あくまで、シミュレーションのお試し用題材として取り上げました。実際の回路に応用する場合は、各自「設計」してお使いください。


btn_arduino.png

btn_prev.png btn_next.png

home