【デジタル電圧電流計の概要】
18ビットの精度を持つデルタシグマA/DコンバータをPIC24Fと接続して
使ってみました。このA/DコンバータはI2Cインターフェースですので
他のPICでも問題なく接続ができます。
このA/Dコンバータはデルタシグマ方式なので、ちょっと遅いですが
18ビットという非常に高い分解能を持っています。
さらに高精度電圧リファレンスもい内蔵していますので、外付け部品が
必要なく、2Vフルスケールを10μV単位で無調整で高精度の計測が可能です。
この高精度電圧電流計の外観は下図のようになりました。
【機能仕様概要】
今回製作した高精度電圧電流計の概略仕様は下表のようになっています。
基本的な電圧と電流だけの計測に絞ってしまっていあmすが、電圧だけは
1倍と10倍のレンジ切替を設けました。
項 目
仕 様
備 考
電源
バッテリ 3V〜4V
50mA以下リチウムイオン充電池
を使用するDC/DCコンバータで5V生成電圧測定
スケール1倍
最大2.047V 分解能約16μV
スケール10倍
最大20.47V 分解能100μV精度±0.1%
精度±0.5%電流測定
最大2.04A 分解能100μA
精度±0.5%
表示出力
液晶表示器 16文字×2行
測定値を1秒間隔で表示基板に直接実装
レンジ切替
外付けスイッチによる手動切替
ロータリースイッチ
4回路4接点を使用
これを実現する全体構成は下図のブロック図のようにしました。
PICには小型の28ピンを使い、直接I2CでA/Dコンバータを接続します。
電圧、電流と電圧倍率切り替えは外付けのロータリスイッチで行うこととします。
4接点4回路のスイッチを使って状態を区別するための信号も一緒に作成するようにします。
電圧測定の倍率切替は分圧抵抗を外付けとし、2個の抵抗をロータリスイッチに
直接はんだづけしています。
電流測定は、0.1Ω 2Wの抵抗を測定回路に直列に挿入して、抵抗の電圧降下分を
測定することにします。これで、20Aのとき2Vということになりますから、フルスケール
としては20Aになりますが、直列抵抗が発熱に耐えられませんので2Aを最大測定電流
とします。このとき0.2V×2A=0.4Wが直列抵抗の発熱ですので2Wの抵抗なら十分発熱
に耐えられます。
電源にはやはりリチウムイオンバッテリを使って、携帯できかつ長時間使用ができる
ようにします。内部は液晶表示器に5Vが必要ですので、DC/DCコンバータを使って5Vを
生成しています。
PICなど周辺IC用の3.3Vの電源はこの5Vから3端子レギュレータで生成しています。
【回路】
回路図は下図のようになります。
PICマイコンにはPIC24FJ64GA002の28ピンを使いました。プログラムサイズは
小さいのでPIC24FJ16GA002でも問題なく動作します。
A/Dコンバータの実装では、18ビット分解能という非常に高精度のアナログ信号を
扱いますからノイズ対策が重要です。
まずA/Dコンバータ用の電源は3.3Vですが、PICマイコンと同じ電源となりますので、
PICからのノイズを避けるため、コイルとコンデンサのフィルタを経由して供給しています。
またI2Cのラインも直接ではなく330Ωの抵抗を経由してやはりノイズの影響が出ない
ようにしています。
A/Dコンバータの入力は直接でも構いませんが、高い電圧を加えてもすぐ壊れることが
無いように1kΩの抵抗を直列に挿入しています。
1kΩ 1%の抵抗R11が電源から接続されていますが、抵抗計の機能を組み込む場合の
オプションですので、今回は使っていません。
【基板組み立て】
A/DコンバータやDC/DCコンバータが表面実装
なので部品目にはPIC24Fと液晶表示器くらい
という簡単な構成になります。
はんだ面には表面実装部品がいくつかあります。
左下側の小型ICが18ビットデルタシグマA/Dコンバータ
です。このアナログ回路周りは独立のパターンとして
周囲のデジタル回路とは分離しています。
右側がDC/DCコンバータ部で、バッテリの3.7Vから5V
を生成しています。
【MCP3421の使い方】
ここで使用したA/Dコンバータは、マイクロチップ社のデルタシグマ型のA/Dコンバータで、
型番がMCP3421となっています。6ピンのSOT23という米粒ほどの小型のパッケージと
なっています。 下記のような特徴を持っています。
・18ビットデルタシグマA/Dコンバータ
・差動入力
・変換ごとに内部オフセットとゲインを自動補正
・電圧リファレンス内蔵 2.048V±0.05%
・可変ゲインアンプ内蔵 ゲイン=1,2,4,8
・発振器内蔵
・変換:1回ごとまたは連続
・低消費電流:145μA(Vdd=3V動作時)
・単電源:2.7V〜5.5V
・動作温度範囲:-40℃〜125℃
内部の構成は下図のようになっていて、ゲイン可変のアンプと2.048V±0.05%という
高精度のリファレンス電圧を内蔵しているのが特徴です。
これで外付け部品は特に必要がなくなりますから、ピン数が6ピンで足りることになります。
ただし、I2Cのデバイスアドレスは内部で固定になっていて、ICを注文するときにアドレスを
指定する必要があります。
このMCP3421はI2Cによるコマンド送信で内部コンフィギュレーションレジスタを
書き換えることで各種の動作モードを設定します。
したがってI2Cの通信では送信と受信両方の動作があります。
(1) コンフィギュレーションの設定方法
I2CでPIC側からデータを送信してコンフィギュレーション設定を行います。
このときのデータフォーマットは下図のようにします。
まずマスタとなるPIC側からWriteモード、7ビットアドレスで1バイトのデータを送信します。
アドレスは「0xD0」が標準となります。下位3ビットは工場出荷時に設定可能ですので
注文で指定します。指定しない場合は「000」というアドレスになります。
続いて送信する1バイトのデータがコンフィギュレーションデータで図のような構成と
なっています。これでA/Dコンバータの動作モードが決まることになります。
チャネル選択は、今回使用したMCP3421は1チャネルしか実装されていませんから
無関係です。
(2) データの読み出し
変換結果のデータを読み出す場合には、分解能によってビット数がことなりますから
読み出すデータバイト数も異なってきます。
この読み出しフォーマットを下図に示します。
まず18ビット分解能の場合は図の(a)のようにデータ部が3バイトとなります。
最初のバイトは上位2ビット分が右詰でセットされ上位6ビットには最上位ビット(D17)の
符号と同じ値がセットされます。
2バイト目はデータのD15からD8までの8ビット分がセットされています。
3バイト目はD7からD0の8ビットがセットされています。
これで変換結果のデータは取得できますが、その後のバイトにはコンフィギュレーションの
データがセットされています。
この中のレディービットをチェックするためです。さらにマスタ側がNACKを返さないと永久に
コンフィギュレーションのデータが繰り返し出力されますので、最後には必ずNACKをマスタ側
から返送する必要があります。逆にNACKを返送すればそのバイトで通信が終了となります。
16ビット以下の分解能の場合は、データ部が2バイトで構成できますから、出力データも
2バイトとなります。14,12ビット分解能の場合の上位のあいたビットには、データの最上位
ビットの符号と同じ値がセットされています。
【プログラム製作】
プログラムはすべてMPLAB C30コンパイラで製作しています。
まず、最初の部分でコンフィギュレーションで内部クロック動作、I2Cを代替ピン使用として
います。I2Cはピン割り付けはできませんので注意して下さい。
共用体(union)の定義がありますが、これは18ビット長のA/D変換データを4バイトのchar型と、
32ビットの符号付long型の両方で扱えるようにするためのものです。
★★★ プログラムダウンロード