Memorandumの小部屋
本ページは金銭授受を伴う行為を含むAuctionや商用Web
Pageからの無断リンク・無断参照を禁じます。
無断リンク・無断参照が判明した時点で然るべき処置をとらさせて頂きます。
ちょっとだけ電圧ロガー(その1)
1.背景
電池電圧の消耗測定に「8CH10ビットデータロガーキット (K-02168)」を使用しています。 しかし以下のように測定器として使用するには問題があります。
入力レンジが0〜4.6V前後と狭い。
測定結果のノイズが大きい。 例えば下図のように青色の乾電池の電圧測定で50mV程度のノイズだらけ。 信じることのできる測定結果でいえば7ビット分解能相当。
0V付近の測定精度が全くない。
このようにあまりの性能の悪さにとてもデータロガーとは思えません。 しかし、文句を言いながらも、これに代わるものがないため、諦めてこれを使い続けています。 お仕事でまともな測定器を使っているので高望みしすぎるのかもしれませんがあまりにも落差があります。
あまりの酷さにとうとう耐えられずこのキットを改善しようかと思い「8CH10ビットデータロガーキット (K-02168)」を秋月電子通商で購入しようとしましたが、既にこのキットを販売していないようです。
ここで、改善はあきらめて、独自に製作することにしました。 ここはアマチュアレベルということで、部品入手性を重要視し、本気の回路設計は止めて、ちょっとだけ真面な回路設計の電圧ロガー、チャンネル数が少ないちょっとした電圧ロガー → ちょっとだけ電圧ロガーを製作することにしました。
なお、今回の製作は以下の3段階を予定しており、少なくとも(その2)までは仕上げるつもりです。 (その3)は後回しになるのではと予想しています。 今回は下記の(その1)の公開です。
その1 : ADコンバータ回路の製作、データ収集はパソコンで実行。
その2 : SDメモリにデータを保存する機能を追加。 但し、データの吸い上げはRS−232C経由。
(いつどこGPSロガー4と同様にEEPROM的な使用方法。)
その3 : ロギング設定をスタンドアロンでできるようにマンマシンIF用LCD、操作スイッチを追加しマイコンを追加。
2. ちょっとだけ電圧ロガーの設計
2.1 仕様概要
一番重要視したのは入力レンジです。 どうしても0V付近をそれなりに真面目に測定したいので±入力を必須とすることにしました。 また、レンジ切替えをすると、レンジ間のキャリブレーションが気になり調整が増えますのでレンジ切替えは諦めます。 とはいえ、1mVレベルの測定も行いたいと思います。 入力レンジを±10Vで1mV分解能となると、少なくとも15ビット(約32000LSB)の分解能が必要となりますのでADコンバータは16ビット以上となります。 こうなるとおもちゃレベルで使用(入手)できるADコンバータの選択の余地が狭まりますし、部品も途端に高価となります。
このようなプロユースに近い用途の部品はDigi−Keyで捜すに限ります。 ここで調べるとやはり高価な部品ばかりですが、16ビット品でありながら1個単位で購入できて1000円以下の部品が有りました。 Cirrus Logic IncのCS−5511が745円でした。 データシートを調べると20ビット品であるCS−5513もありましたのでこれを調べると1個単位で購入できて単価825円でした。 変換スピードがIC任せというのは気になりましたが、この値段には魅力的でしたので、今回の製作はCS−5513を採用することにしました。
分解能20ビットと当初の16ビットを上回るADコンバータを採用するのは良いのですが、こんなに分解能があると0点調整やゲイン調整をするための測定器がありません。 よって、調整は全てソフトと運用で逃げることにします。 外部から適当な複数の電圧を入力し、この電圧を少しはまともに測定できるディジタルテスタで読みとり、また同時にこの電圧をAD変換した値を読み取ります。 これらの値を突き合わせてと0点とゲインを算出する方法をとります。
この方法を使用することで、ADコンバータ入力のオペアンプ回路の設計がとても楽になります。 入力段のゲインは固定抵抗で固定化し、0点も適度な範囲に収まるように概略調整で済ますことができます。 あとはソフトお任せとします。
入力チャンネルは多いに越したことはありませんが、分解能を上げるとその分マルチプレクサのセットリング時間を確保しないといけなくなります。 また、マルチプレクサだけのセットリング時間だけを考慮してもだめで、周辺回路全体の充放電回路部品の状況を考慮しないといけません。 プロの製品でもこれを全く考慮せず、アナログ信号切替え部品のセットリング時間だけで設計しているものを数多く見ています。 とんでもない話です。
マルチプレクサを使用すると安価に仕上がりますが、各チャンネルの時間軸の同期がとれない、前記のセットリング時間の問題、測定する信号の電圧源(出力インピーダンス)の問題など、電圧ロガーとしての本質的な問題を抱えた設計となります。 個人的にはプロユースでは12ビット、アマチュア用とでは8ビットを越える分解能の精度、再現性を要求する回路にマルチプレクサを使用する勇気はありません。 よって、今回は1CH毎にADコンバータを設け、マルチプレクサを使用しないことにします。 こんな贅沢ができるのも単価825円のCS−5513を選定できたからです。
2.2 ちょっとだけ電圧ロガー仕様
上記仕様概要決定過程を基にした「ちょっとだけ電圧ロガー」の仕様を下記します。
No |
項 目 |
仕 様 |
||||||||||||||||||||||||||||||
1 |
入力チャンネル |
4CH |
||||||||||||||||||||||||||||||
2 |
入力レンジ |
−10V〜+10Vを測定できること。 |
||||||||||||||||||||||||||||||
3 |
入力インピーダンス |
1MΩ |
||||||||||||||||||||||||||||||
4 |
変換回数 |
10回/秒以下 (今回のソフトでは10〜13回で一定間隔ではない。) |
||||||||||||||||||||||||||||||
5 |
変換同期性 |
各チャンネル非同期 (CS−5513内蔵発振回路によるため。) |
||||||||||||||||||||||||||||||
6 |
分解能 |
20ビット (意味のある20ビットではなく、単なる分解能力のみ。) |
||||||||||||||||||||||||||||||
7 |
データ保存機能 |
現状は無し。 |
||||||||||||||||||||||||||||||
8 |
データ通信 |
RS−232C 9600pbs (EEPROM設定で変更可能) |
||||||||||||||||||||||||||||||
9 |
フィルタ |
オペアンプ入力段 フィルタ有り。(回路図参照) |
||||||||||||||||||||||||||||||
10 |
データ出力 |
下記回路図に示すようにADコンバータ入力段のオペアンプは反転回路を使用しています。 このため、正負が逆になります。 CS5513のデータシートのOutputCodingに準じて記載すると下記のよう0になります。
|
2.3 回路図
上記仕様を基にして検討した回路図を下記に掲載します。
(上記をクリックすると原寸大の回路図をダウンロードできます。)
【 回路図 】
基準電圧は当初TL431を考えていましたが分解能20ビットに恐れをなしてMAX6325CSAを採用しました。
基準電圧用のオペアンプは手持ちオペアンプのなかから低ノイズ性能を比較して選定しました。 試作回路で比較したところ、NJM4580DDが最も低ノイズの 結果を得ましたのでこれを採用しました。
信号バッファー、レベル変換用オペアンプは低ノイズが要求されますのでNJM4580DDを採用したいところですが、オフセット電圧、入力バイアス電流など面で使用するのに躊躇いがあります。 分解能8ビット程度では気にはなりませんが、ここでも20ビット分解能に恐れをなしてNJM4580DDを使用する勇気はありませんでした。 ここは入手性を考えてOPA2277PもしくはAD706ARを採用することにしました。 試作回路では若干AD706ARの方が良さそうに思えましたが、今回は回路図上はAD706ARとし、製作品にはそれぞれ2個を実装して継続的に比較する予定です。
今回は抵抗、コンデンサ、インダクタンスには注意が必要です。 下記掲載表の注意点を参照願います。
今回の手持ち部品以外の新規購入部品は秋月電子通商、鈴商、Digi−keyで入手しています。
該当部品番号 |
注意点 |
R11,R21,R31,R41 |
下記の製作例では1/6Wの抵抗を使用していますが、できる限り1/4W以上の外形寸法の大きい抵抗を使用することが望まれます。 |
R12,R13、R22,R23、R32,R33,R42,R43 |
これらの抵抗の絶対値はあまり意識する必要はありません。 R12とR13、R22とR23、R32とR33,R42とR43の抵抗値比が重要です。 各抵抗は、できる限り同位置ロット品を使用して下さい。 |
VR51 |
多回転のポテンショメータを使用して下さい。 決して1回転のVRを使用しないで下さい。 |
C11,C21,C31,C41 |
入力信号フィルタ用です。 |
C12,C13,C14,C22,C23,C24,C32,C33,C34,C42,C43、C44 |
基準電圧信号フィルタ用です。 静電容量はばらついても構いませんので周波数特性の良いセラミックコンデンサで、できる限り静電容量の大きいものを使用します。 また、使用電圧も5V以下ですので耐電圧も10Vあれば十分です。 |
C81,C82 |
±15V用電源低周波域用フィルタを目的とした電解コンデンサです。 電源入力部に実装します。 |
C51,C83,C84 |
±15V用電源高周波域用フィルタを目的としたセラミックコンデンサです。 オペアンプ電源端子近傍に実装します。 耐電圧は25V以上が望ましいです。 静電容量は1μF以上あれば十分です。 |
C52,C53 |
データシートに準拠して2.2μFを使用しています。 耐電圧16Vと思われます。 コンデンサの種類は特に問いませんが、周波数特性は良いコンデンサが望ましいので電解コンデンサは適さないと考えます。 |
上記以外のコンデンサ |
0.1μFのコンデンサは一般的な積層セラミックコンデンサ(リード線、チップいずれでもok。) |
L81,L82 |
電源用インダクタを使用して下さい。 電流容量200mA以上で、できる限り電流容量の大きいものを使用して下さい。 インダクタンスは100μH以上を使用するのが目安だと考えます。 |
L11,L21,L31,L41 |
ADコンバータ用の電源ライン用インダクタです。 電流容量100mA以上で、できる限り電流容量の大きいものを使用して下さい。 インダクタンスは10μH以上を使用するのが目安だと考えます。 |
2.4 電源
今回の回路に使用する電源は±15電源と+5V電源の合計3電源が必要です。 最近ではスイッチングレギュレータが蔓延しておりますが、ここでも20ビットの壁が立ちはだかります。 当方の実力では20ビットの分解能に耐えうる電源ノイズ除去技法がありませんので、ここは最も安易なシリーズレギュレータを使用します。
2.5 PICマイコンソフト
(1) PICマイコンのプログラムを下記に掲載します。 AD変換値を下記フォーマットで垂れ流しにするだけです。
jsk49a2.hex(クリックするとダウンロードできます。) (2010-02-28 Bug fix and Update)
(2) データフォーマット
Line1 復帰改行(&h0D+&H0A)送信
Line2 メッセージ「Logger Start.」 + 復帰改行(&h0D+&H0A)送信
Line3以降
データライン送信。 以下を1行にして延々と送信。 具体例は4.動作例を参照。
最初の4バイトデータ 送信回数 (各データ間にスペース&h20を追加)
次の3バイトデータ CH1のADコンバータ出力データ (各データ間にスペース&h20を追加)
次の3バイトデータ CH2のADコンバータ出力データ (各データ間にスペース&h20を追加)
次の3バイトデータ CH3のADコンバータ出力データ (各データ間にスペース&h20を追加)
次の3バイトデータ CH4のADコンバータ出力データ (各データ間にスペース&h20を追加)
復帰改行(&h0D+&H0A)送信
(3) PICマイコン内のEEPROMのデータ設定を下記に記載します。
アドレス |
データ内容 |
デフォルト |
$00 |
AD Convert 有無設定 CH1=bit2 CH2=bit3 CH3=bit4
CH4=bit5 AD Convertを4回路未満で使用する場合、上記のビットを0にすることでプログラムを動作させることができます。 |
’3C’ |
$01 |
RS−232C通信速度設定 (19200bps相当) SPBRGレジスタの値(20MHz、BRGH=1) |
’40’ |
$02 |
AD変換間隔設定 データ送信後の待ち時間設定。 AD変換終了後、10msタイマー×設定値の待ち時間をとった後、次のAD変換を開始する。 |
’09’ |
3 製作例
3.1 基板製作例
上記回路図をもとに製作した事例を下記に示します。 将来のチャンネル数増加も想定してAD変換部分とマイコン部分を別々にすることにしました。
マイコン基板の上にAD変換基板を搭載しています。
【 完成基板外観 】
オペアンプはAD706AR(左側)とOPA2277P(右側)を各2個実装しています。
アナログ部分とディジタル部分を明確に分けて実装しています。
【 AD変換基板 部品面 】
立体的な配線をして信号のクロストークを低減しています。
【 AD変換基板 部品面 斜視図 】
GNDラインは銅板を使って低イーダンス化を図っています。
【 AD変換基板 ハンダ面 】
GND面積を確保できない部分は銅板を縦に実装しています。(中央左部分)
【 AD変換基板 ハンダ面 斜視図 】
【 マイコン基板 】
3.2 動作例
(1) 実際に動作させたときのRS−232Cデータを下記に掲載します。
【 RS−232C 通信データ 】
(2) 入力に何も接続しない状態(0V相当)での変換値の変化を記録した結果を下記に掲載します。
通電開始直後は徐々に変換値が変動しています。
【 AD変換結果 変動例 CH1 (通電開始初期) 】
通電開始後10分以上経過すると下図状態のように変動が低減して安定化しています。
約16LSBの幅で変動しており、目標14ビットはいけそうです。 思ったより小さくできているようです。
【 AD変換結果 変動例 CH1 (安定状態) 】
4 動作確認1
4.1 立ち上げ用ツール
上記製作例を立ち上げる際にEXCELでツールを作成しましたので、これを下記に掲載します。 本ツールのVBAにはEasyComm(Copyright(c) 2000-2004 T.Kinoshita)を使用させ頂きました。 この場を借りて感謝の意を表します。
ちょっとだけ電圧ロガー 立ち上げツール jsk49_r2.xls (LHAで圧縮)
ツールの概要を下記します。
【 ちょっとだけ電圧ロガー 立ち上げツール 】
上段左にデータ格納用ファイル設定、データ収集方法などを設定するエリアです。
上段右にデータ数値モニタ、キャリブレーション操作エリアです。
中段は波形表示エリアです。
下段は受信データ表示エリアです。
【 データ数値モニタ、キャリブレーション操作エリア 詳細 】
モニタ数値はLSB表示、及び、電圧表示の両方を表示しています。 なお、DEC2HEX関数を使っていましたが、この関数の負荷は想像以上に重いようです。 この関数の使用は止めて、現在は上記の表示にしています。
ノイズの影響確認のために最大、最小を記録できるようにしています。 途中から再度判定できるようにリセットボタンを設けています。
キャリブレーションは+側、0V、−側のそれぞれを全チャンネル一括もしくは個別項目毎に校正できるようにしています。
4.2 立ち上げ手順
今回の立ち上げ手順例を下記します。
全チャンネルの入力をGNDに短絡します。
[ばらつき具合は上記の「データ数値モニタ、キャリブレーション操作エリア]の+VOLT行(水色背景セル)に 0 を入力します。
[通信開始]ボタンを押してデータ収集を開始します。
変換をしながら、全チャンネルの数値が524300を中心にしてばらつくように基板上のVR21を調整します。 [ばらつき具合は上記の「データ数値モニタ、キャリブレーション操作エリア 詳細]を参考にして下さい。
VR21の調整が完了した後、[ALL 0V]ボタンを押して下さい。
入力に009P乾電池と、手持ちのデジタルテスタ(電圧測定)を接続します。 006P乾電池は+電圧入力となるように接続して下さい。
接続した状態のデジタルテスタ電圧読み値をMax Conv. Dataの+Voltセル(水色背景セル)に入力します。
[ALL +]ボタンを押して下さい。
006P乾電池は−電圧入力となるように接続して下さい。
接続した状態のデジタルテスタ電圧読み値をMin Conv. Dataの-Voltセル(水色背景セル)に入力します。
[ALL −]ボタンを押して下さい。
006P乾電池とデジタルテスタを取り外して下さい。
4.3 判明している問題点
現在の回路では4個のADコンバータを同時に読み出そうとしています。 しかし、このADコンバータは内蔵のクロックで動作していますので場合によっては4個同時に変換できない可能性があります。 このため、取得データのなかで、変換データが&HFFFFFFと上位の4ビットが&HFとなっているデータがあります。
本来、全ADコンバータ読み出しが可能な場合まで待つようにプログラムしているつもりですが、なぜかこれをすり抜けて&HFFFFFFのデータ、つまり、読み出し不可状態にもかかわらず読み出しをしてるようです。
現在、この原因は不明です。 たまにしか発生しない現象ですので、このデータを取得した場合は読み値を更新しないようにして使用しています。
4.4 電源方式の影響
今回は最初からSWレギュレータの使用を止めていましたが、手持ちのACアダプタを使用して、シリーズレギュレータとSWレギュレータの違いを確認しました。
シリーズレギュレータ 自作電源 トラッキング電源キット
SWレギュレータ 秋月電子通商 NP12-1S0523 NP12-1S508
この結果を下記に示しますが、基板自体は電源方式の違いはほとんど無いことがわかりました。 意外な結果です。 AD変換方式、デバイスの性能のおかげも大きいのでしょう。
信号源の出力イーダンスが高い場合は低い場合は配線への誘導起因でノイズが急増します。 安心料と実装面も含めて考慮すると、最終的な組み込み時は、当初のようにシリーズデギュレータを採用することにしました。
End of This Page.