公開日:2020/09/12
title.png

12th Season


#12-7 基準電圧源を作る

 「#12-4 LDOレギュレータを試す」、「#12-5 プログラマブルLDOレギュレータ」で作成したLDOレギュレータでは、基準電圧Vrefに対して出力電圧を可変に制御しました。この時のVrefには入力電圧Vinを抵抗分圧した電圧を用いたので、入力電圧が変化すると出力電圧も一緒に変化してしまいます。
 市販されている降圧電源回路や素子などには、入力電圧が例えば7〜12[V]の間で常に5Vないし3.3Vの出力を保証するものがあります。

 今回は、入力電圧によらず一定の電圧を出力する、基準電圧源を作ってみたいと思います。

バンドギャップリファレンス電圧

 一般に入力電圧によらない一定の電圧を出力する回路としては、バンドギャップリファレンス回路が使われます。

  バンドギャップリファレンス回路について調べる(別ウインドウが開きます)

 ただこの方式、基本的には同一シリコンダイ上に同じ特性を持ったトランジスタを作り込んで、熱特性などもそろっていることが前提となる回路であるため、ディスクリートで作成するのは困難です。しかも、ボルツマン係数やらなんやら使った熱電圧とかが登場して、敷居が高い。

 今回はバンドギャップリファレンスではなく、ディスクリートでもう少し扱い易いツェナーダイオードを使って基準電圧回路を作って見ようと思います。

ツェナーダイオード

 ダイオード記号(下図)の三角形を矢印に見立てて、矢印の方向には電流を流すけど、逆方向には流さない、のが、普通の整流ダイオードの動作です。

ar61_diode.png

 ツェナーダイオード(上図中央)は、矢印の逆方向に電流を流すことで、一定の電圧を示す素子となります。
 今回筆者が購入したのは1N5225Bという型番のツェナーダイオードで、出力電圧Vz=3.0V @Iz=20mAの素子です(下図)。

a127_zener.jpg

シミュレーションで動作を確認

 いきなり実回路を組んで動作確認するのはしんどいので、まずは、LTspiceを使ってシミュレーションしながら動作を理解したいと思います。
 筆者が購入したのは1N5225B(Vz=3.0V @Iz=20mA)なのですが、色々探しても1N5226(Vz=3.3V @Iz=20mA)のモデルしか見つかりませんでしたので、以下シミュレーションはVz=3.3Vの1N5226を使います。

 まずは、I-V特性を見てみましょう。そもそも、(ツェナー)ダイオードのI-V特性は、以下図の様になっています。

a127_zeneriv.png

 これからシミュレーションしようとしているI-V特性は、上図の第三象限に関する特性を見るための物です。

 以下回路図でシミュレーションします。

a127_zenivs.png


 すると、以下図の様な曲線が表示されます。

a127_zenivw.png

 横軸にはツェナーダイオードに流れる電流Iz、縦軸にその時の電圧Vzを取っています。
 注目すべきポイントは、「Vz=3.3Vのツェナーダイオード」と言いながら、ずいぶんと電圧値が変化していることです。そう。ここで「@Iz=20mA」と言う但し書きが活きてくるのです。図に引いた補助線の様に、ツェナーダイオードに流れる逆方向電流Iz=20mAになった時の出力電圧Vz=3.3Vな、素子なのです。

入力電圧を可変にしてみる

 普通に使う時は、以下図の様な回路となります。

a127_zenvvs.png

 前節の回路で定電流源だったところを5Vの電圧源に置き換え、抵抗R1=85Ωを通してツェナーダイオードを接続して使います。今、入力電圧Vin=5Vで、1N5226のVz=3.3Vですので、オームの法則より、Iz×R1=Vin−Vzの関係が成り立っています。ここから抵抗値R1を逆算して、R1=85Ω(∵Iz=20mA)としてあります。

 ここで、入力電圧がVin=5V固定ではなく、変化した場合はどうなるでしょうか?シミュレーションした結果が下図です。

a127_zenvvw.png

 横軸に入力電圧Vin、縦軸にその時ツェナーダイオードに流れる電流Iz(青線)と、電圧Vz(緑線)を取っています。
 当たり前ですが、抵抗R1は定電流源ではないので、入力電圧Vinが変化するとR1に流れる電流、従ってツェナーダイオードに流れる電流値も変化してしまい、上図の様に出力電圧Vzは大きく変動してしまいます。Vin=10Vでは、Vz≒4Vほどまで上昇しています。
 抵抗R1は、Vin=5Vの時にIz=20mAとなる様に決めた値(R1=85Ω)なので、上図補助線の様にVin=5V(横軸)の時だけ、期待通りVz=3.3Vを出力しています。

 入力電圧を固定できる時は、上の回路で終了です。ちゃんと、Vz=3.3Vが出力されますから。

 一方、「入力電圧5〜10[V]で常に出力電圧3.3Vとなる降圧電源回路」を設計しようとした場合は、上回路では全くダメです。シミュレーション結果の通り、Vin=5〜10[V]では、Vz=3.3〜4[V]程度まで変化してしまいます。Vzを基準電圧として使っても、出力電圧を3.3Vに固定することはできません。

 「ツェナーダイオードに逆電圧をかけておきさえすれば、一定の電圧を出力する」と言った様な、魔法の素子ではない、と言う事ですね。結局のところ、ツェナーダイオードに流れる電流を特定の電流Iz一定に調整できないと、Vzが狙い通りに出力されません。

定電流回路

 前節の検討(シミュレーション)によって、ツェナーダイオードで所望の出力電圧を得るためには、定電流Izを流す必要のあることが判りました。そこで、定電流回路について調べてみました。

  定電流回路を調べる(別ウインドウが開きます)

 その中から、フィードバック型の以下回路を使ってみようと思います。

a127_ccurrs.png

  定電流回路の動作原理:

 この回路は素子D1のノードに一定の電流を流す回路です。その電流値は抵抗Rcの値で制御します。上回路図の様に、LEDなどをD1位置に接続することで、一定の電流値でLEDを光らせることが出来るのです。

 抵抗Rcに流れる電流Ir≒0.6V/Rcだと解りました。D1に流れる電流If=Ic1は、いくらでしょうか?

 そう、この回路は、電源電圧や負荷に依存せず「一定の電流」を流せる回路、ではあるけれど、「特定の電流値(例えば10mA等)」で一定の電流を流すことのできる回路、ではありません。

※ある特定のトランジスタ(個体)を使う前提では、狙い通りの電流値を流すことは可能ですが、定数が異なるトランジスタ(別個体)に差し替えると、狙いの電流値からずれてしまいます。

 今回のツェナーダイオードの様に、「ピッタリ20mA流したい」と言ったところで、そうは問屋が卸さない回路なのでした。ただ、この電流値誤差に関してはある程度許容して使えると思いますので、次の検討に進みます。

ツェナーダイオード+定電流回路

 前節の定電流回路を使って、ツェナーダイオードに流れる電流値を20mA一定にしてみましょう。
 基準電圧出力Vrefを生成する回路は、定電流回路の電流負荷LED D1をツェナーダイオードに変更して、以下図の様になります。

a127_zvrefs.png

 まず、左側に前節の定電流回路が見えます。LED D1の位置にツェナーダイオードが接続してあります。ツェナーダイオードに約20mAの電流を流すため、Rc≒0.6V/20mA=30Ωの抵抗を設定してあります。
 Rcの消費電力P≒Vbe×Iz≒0.6V×20mA=12mWですので、普通の1/4[W](=250mW)抵抗で充足します。もっと大電流を流したい場合には、抵抗の定格電力にも注意が必要となります。

 この定電流回路は引き込み型のため、ツェナーダイオードの出力がGND基準ではなく、Vcc基準で出力されてしまいます(以下、模式図)。

a127_vccgnd.png

 基準電圧はGND基準で出力したいため、ゲイン×(−1)倍の反転増幅回路を使ってVcc基準の電圧をGND基準に変換する回路が右側のオペアンプ(LM358)を使った回路となっています。
 反転増幅回路に使用する抵抗値の公差や発熱による変動などの影響も受けて誤差となってしまうので、出力電圧の精度が重要な場合は、反転増幅回路に使用する抵抗(Rs,Rf,Rb1,Rb2)にも公差が小さく熱変動の小さい抵抗器を使用するようにしてください。

※折角定電流回路で20mAを狙って電流を流しても、D1とQ1の間から引き出した出力ノードに電流が流れてしまうとツェナーダイオードに流れる電流に誤差を生じてしまうので、入力インピーダンスの高いオペアンプU2(ボルテージフォロア)で受けています。

 シミュレーション結果は以下図の通りです。

a127_zvrefw.png

 横軸に入力電圧Vccを取って、その時のVcc基準ツェナーダイオード出力電圧Vout(緑線)、GND基準出力電圧Vref(青線)を縦軸に取っています。
 肝心な基準電圧Vref(上図青線)は、Vcc>4.5V辺りで安定してVref≒3.29Vを示しています。Vcc=10Vまで上げると、Vref≒3.31Vまで上昇しますが、許容範囲でしょう。

 この他に、トランジスタの個体差でVbeが変動する場合の誤差を考えておきます。

 以上のシミュレーション結果より、入力電圧によらず一定な基準電圧を作るというテーマに対しては、合格でしょう。トランジスタの個体差(ばらつき)に関しても、誤差±1%程度に抑えられそうです。

 ただ実用的には、Iz=20mAは流し過ぎです。電源が流す電流値(上図赤線)を見ると、Vref≒3.3V一定となる使用状態では20mA以上の電流が必要なことが解ります。UNOの動作電流でさえ60〜70[mA]なのに、基準電圧源だけで20mAも流すのは反則でしょう。
 後でちょっと触れますが、今回はたまたま安かったツェナーダイオードを買っただけなので、Iz=20mAのツェナーダイオードでした。もっとIzが小さいツェナーダイオードもあるみたいなので、ちゃんとスペックを確認してIzの小さなツェナーダイオードを購入すれば、消費電流を抑えることは可能です。

実験

 前節の回路をブレッドボード等を使って構築します。ただし、シミュレーションは1N5226(Vz=3.3V @Iz=20mA)を使っていましたが、筆者が購入したのは1N5225B(Vz=3.0V @Iz=20mA)ですので、ツェナーダイオードには1N5225Bを使いました。
 入力電源電圧Vccを変化させても、一定のVref=3.0Vを出力する回路であることを確かめたいので、Vcc入力には、昇圧電源モジュール(下図)を使います。

ar63_stepup.jpg

 また、基準電圧出力Vrefの電位を確認するため、UNO+Logiscopeを立ち上げてGNDを共有、かつVrefをアナログ入力A0に接続しておきます。ついでに、トランジスタのVbeを測定しておこうと思いますので、Vb2ノードをA1端子に接続してください。以下、実験中の様子です。

※Voutの方は、Vcc>>5Vを入力した時、Vout>5Vとなって、UNOの絶対最大定格を超えてしまうのでモニタできません。間違って接続してしまわないように注意、UNOが壊れてしまいます。

a127_expr.jpg

  実験サンプル:【 】内はLogiscopeからの送信データ
  【ina,0】 …… Vref端子の電位
  OK: analogRead(0)=599, 2.92V

  【ina,1】 …… Vb2ノードの電位(≒トランジスタQ2のVbe)
  OK: analogRead(1)=116, 0.57V

 ねらい目としてはVref=3.0Vに対して、ちょっと低め(Vref≒2.92V)に出てきました。考えられる要因は以下です。

 ひっくるめても誤差約−2.7%なので、「ほぼ、期待通りの出力が得られた」と言って良いかもしれません。


 入力電圧Vccを変化させながら測定したデータを以下図に示します。

a127_vrefvbe.png

 横軸に入力電圧Vcc[V]、左縦軸にVref[V](青プロット)、右縦軸にVbe[V](オレンジプロット)を取っています。
 以下雑感です。

 ねらい値Vref=3.0Vからの誤差についてこれ以上の検証を進めることは、ブレッドボードでの回路構築では無理そうです。接触起因で正しい電圧を示さないケースが何度かあり、ダマシダマシ実験していたためです。
 ブレッドボードって、素子やジャンパ線を挿そうとすると硬くて挿せない時がある一方で、ピンセットなどで中の金具を広げてしまうと、今度は緩くてスカスカになってしまう時が有ったりと、曲者ですよね?あくまで試作用の治具なのだから仕方ないのでしょうけどね。今回みたいに微妙なアナログ値を扱う時には、万能基板に半田付けしないとダメなのかも??

今回のお買い物

 今回のお買い物は、以下の通りです。

 実は、Arduino DUEと一緒に購入してありました。DUEって、Amazonで購入価格1,999円だったのですが、Amazonの場合「2,000円以上で配送料無料」なので、そのまま購入してしまうと配送料が400円ほどかかってしまいます。ツェナーダイオードが110円で売っていたので、これを追加して1,999+110=2,109>2,000円と、配送料無料で配送してもらいました🚚
 何だか、必要もないものを追加購入させられてしまっただけの様な、Amazonの戦略に嵌まっているだけの様な気もしますが、まあ、配送料(400円ほど)を取られるところに110円の追加費用でツェナーダイオードが入手でき、こうして使ってみることが出来たのだから、個人的には満足しています。


 今回作った基準電圧源回路を「#12-4 LDOレギュレータを試す」のLDOレギュレータの基準電圧Vrefに接続すると、入力電圧が変化しても一定の電圧を出力するLDOレギュレータを作成することが出来ます。Vref≒3.0Vですので、Vdd=3.3Vが必要なら、Vdivの抵抗分圧回路に於いて抵抗比R1:R2=(Vdd−Vref):VrefにすればOKです。


btn_arduino.png

btn_prev.png btn_next.png

home