はじめての電気とIoT (10) SPI経由でアナログ電圧測定 その3 基準電圧用TL431

■A-D変換の安定度を高める

 A-D変換は、基準の電圧に対して入力電圧をディジタルに変換します。基準電圧が変動すると、変換結果も変わります。

 MCP3008のVrefは基準電圧を接続する端子です。前回、電源につないで利用しました。ラズパイの3.3V電源は、マイクロUSBから5V電源を供給された後、ヒューズなどを経由して3.3Vやもう少し低い電圧を得る複数のレギュレータICに入ります。CPU(SoC)は5%程度の電圧変動などでは誤動作することはありません。

 3.3V用レギュレータICの出力はぴったり3.3Vの電圧を出力しているとはかぎりません。公開されている回路図から、NCP1117-3v3というICが使われていることがわかります。オンセミコンダクターのLDOです。データシートから、3.267~3.333Vの電圧がでます。つまり±1%の誤差があることがわかります。

 functionノードの変換式で、変換値に3.3を掛けていましたが、この値に±1%の誤差が含まれています。

Math.round(msg.payload*3.3*10000/1024)/10000

 10ビットA-Dコンバータの最小分解能は3.2mVです。3.3Vの1%は33mVです。具体的に、A-D変換で得たディジタル値が474だったとします。

  • 電源が3.267V:入力電圧は1.5123Vなのに、3.3Vで計算したので1.5275V
  • 電源が3.333V:入力電圧は1.5123Vなのに、3.3Vで計算したので1.5428V

 最大と最小で15.3mVの差があります。今回の実験に使っているラズパイは3.2915Vでしたので、誤差はそれほど大きくありません。

基準電圧の精度を上げる

 MCP3008は、基準電圧をつなぐVrefに電源ではなく、もう少し精度の高い電圧をこの端子につなげられます。

 アマゾンで検索すると、一番ポピュラな基準電圧用TL431が入手できます。

 製品情報には、可変と書かれていますが、単独で使うと、TL431Aだと2.495V±1%の電圧が得られます。TL431Bであれば、±0.5%なので精度を上げられるのですが。100本入りのほうを読むと、TL431Bとも書かれています。送られてくる製品を見ないと何とも言えないですね。購入時期によっても、タイトルにあるTL431Aが送られてくるかもしれません。

 ラズパイの電源電圧はCPUの仕事量によって変動します。瞬間に消費電流が変化します。そのため、A-Dコンバータだけの基準電圧を用意すればいつも安定にA-D変換ができることになり、これは大きなメリットです。また、気温は1年を通じて大幅に変化します。温度変化によって電圧が変化しにくいのが基準電圧ICの特徴です。

 基準電圧ICは、たとえばリニアテクノロジー社のWeb検索で、性能の良いものを探すために0.1%と入力したのがこのページです。ただし、アマゾンでこれらのデバイスは手に入りません。

TL431Aをつないで、変換式を修正

 TL431を使って2.495Vを得る接続です。

 Vref端子に基準電圧ICのTL431AのRef出力をつなぎます。5Vからの抵抗270Ωは、TL431に動作条件である1mA以上の電流を流すために入れてあります。10mA時の計算値(5V-2.495V/0.01A)で、4mAだと620Ωです。15mA流すとすれば150Ωなので、これらに近い抵抗値を選んでください。

 次の図はMCP3008が逆さの向きで配線しています。ピンの1番はICの下方にあります。

 上記のように接続して、node-REDの出力を見ると2.3Vと表示されてます。CH0に入力されている電圧をテスタで測ると1.68Vです。

 TL431のVrefの値は、テスタで測ると2.49V、桁数の多いDMMでは2.49513Vでした。

 functionノードの計算式を変更します。

msg.payload = ("ラズパイ入力電圧="+Math.round(msg.payload*2.49513*10000/1024)/10000+"V");
return msg;

 1.6862Vの表示が出ました。DMMで測ると1.6853Vです。

入力電圧の範囲が狭くなる

 基準電圧を2.495Vにすると、入力電圧範囲は0~2.495Vと、3.3Vのときより狭い電圧にしか対応できなくなります。

 半固定抵抗を回し切り、電源電圧をCH0の入力に与えます。

 テスタの表示は3.28Vですが、MCP3008の測定値は2.4927Vと表示され、基準電圧を超えられません。GPIOの端子は3.3Vの電圧まで耐えられるので、壊れません。しかし、基準電圧までしか変換できないのです。

 逆に分解できる最小単位1LSBの電圧は、

2.4927V / 1024 = 2.4mV

になります。Vref=3.3Vのときに3.2mVだったのに比べ、分解能が上がっています。

バックグラウンド

LDO;Low DropOutというレギュレータです。今でも現役ですが、各種レギュレータICが市販されていた時期に、TO-220というコンパクトなパッケージに収められた3端子レギュレータが衝撃的なデビューをしました。7805(5Vプラス電源)や7905(5Vマイナス電源)では入力と出力の電圧差が最低でも2~3V必要でした。この電圧差によって熱が発生します。その電圧差を少なくしたのがLDOです。発熱が抑えられるのですが、発振しやすい、負荷変動のレスポンスが悪いなど欠点がありましたが、最近はそれらを改善した対応製品も出ています。