A/Dコンバータ その1

PIC16F88やPIC12F683などA/Dコンバータが内蔵されたPICは便利です。
A/Dコンバータとは、簡単に言うと入力端子の電圧をマイコン内部にデジタルな数値として読み取る回路です。

PIC内蔵A/Dコンバータのハードウェア的な詳細は、fitDESIGN超初心者向けPICハードウェアマニュアル第7章 A/Dコンバータが分かりやすいです。
記のサイトではPIC16F87XのA/Dコンバータについて書かれていますが、PIC16F88やPIC12F683でも基本的な部分は同じです。(ハードウェア的にはPIC16F88の方がPIC16F87Xよりも柔軟な構成が取れるように改良がされていますが、その代わりレジスタ構成が変化しているため87X用のソースコードを流用するときには若干の変更が必要です。)

さて、fitDESIGNのサイトの7-4 入力回路
には、ハードウェア的に考慮しなければならない点として以下を挙げています。

A/Dコンバータの入力回路はその計測仕様や信号源側の条件によって様々な考慮をする必要があります。以下にその考慮すべき要件を列挙しました。

● 信号源の出力抵抗はPICの仕様を満たしているか?
      (PICの仕様: 許容信号源抵抗 10kΩ Max)
● 計測信号のノイズのレベルや周波数成分は? また計測したい最大周波数は?
● 計測信号はPICの仕様の入力電圧範囲を超える可能性があるか?

今回はこれらの一番目「信号源抵抗」について書きます。

結論から書くと、信号源抵抗に制約があるのはA/Dコンバータの入力インピーダンスが高くないからです。そのため、信号源の出力インピーダンスが高いと正確な電圧が計測できないことになります。どの程度入力インピーダンスが低いのかを考えるためには、PICのA/Dコンバータの内部回路(実際はA/Dコンバータではなく、その前段のサンプル&ホールド回路)を考える必要があります。

この図は、PIC16F88のデータシートにあるアナログ入力モデルです。



これを元に、LTspiceでモデルを作ります。



RicはPIC内部のアナログマルチプレクサのオン抵抗でしょうか。最悪値としてRic=1kと選びました。
Ileakageは±500nAの間でばらつきますが、さしあたって正の値を選びました。
Rssはサンプリングスイッチのオン抵抗です。電源電圧に応じて変化することがグラフから読み取れます。電源電圧とオン抵抗には以下の関係があります。
Rss=17k-2k*(VDD-VSS)
VDD=5V,VSS=0Vと考えてRss=7kとしました。

このモデルに対して、2.5Vのステップ入力を与えたときの応答を信号源抵抗の値を変えながら確認します。


上の回路図は、信号源抵抗Rs=10kのものです。

信号源抵抗Rs=1Ωのとき。


信号源の出力インピーダンスが非常に低い場合。計測対象の信号源の電圧V(VS)とPICの入力端子電圧V(ADC)は、ほぼ完全に一致。実際にPICに読み込まれるホールドコンデンサの電圧V(HOLD)も若干の遅延が見られますが、最終的な値はほぼ一致。

信号源抵抗Rs=1kのとき。


V(VS)に対してV(ADC)がわずかに遅延しているが、V(ADC),V(HOLD)ともに最終的な値はV(VS)とほぼ一致。

信号源抵抗Rs=10kのとき。


V(adc),V(hold)ともにV(vs)から少し遅延。


また、定常状態に入ったときのV(vs)とV(hold)の差(すなわち誤差)は5mV程度。

信号源抵抗Rs=100kのとき。


遅延の量もかなり大きくなっているのが分かる。


さらに定常状態に入った後での誤差も50mV程度まで大きくなっている。

まとめると、信号源抵抗が大きくなることによって被る影響は以下の2点になります。
・サンプリングコンデンサへの充電時間が長くなる
・定常状態での誤差が大きくなる

とはいえ、これらの2点の原因は見てのとおりです。

サンプリングコンデンサへの充電時間が長くなる理由は、信号源抵抗RsとホールドコンデンサCholdがローパスフィルタを構成するからです。(経路上にある他の抵抗やコンデンサも寄与しますが、RsとCholdの影響が支配的です。)

一方、定常状態での誤差は、Ileakageによる信号源抵抗Rsの両端での電圧降下が原因です。Rs=10kのときはオームの法則V=R*Iより10k*500nA=5mVの誤差、Rs=100kのときは100k*500nA=50mVの誤差とシミュレーション結果に一致します。
fitDESIGNのA/Dコンバータの基礎の表から、5Vを10bitでA/D変換した際の1LSBは4.9mVに相当します。信号源抵抗Rsが10kのときの誤差は5mVであるので、まぁ、ちょっと1LSBを超えていますが、10bit精度のA/D変換を確保するためには信号源抵抗Rsが10k以内でなければならないというのはこういった理由からだと思います。


tag: LTspice PIC A/Dコンバータ 

comment

Secret

FC2カウンター
カテゴリ
ユーザータグ

LTspiceAkaiKKRmachikaneyamaScilabKKRPSoC強磁性CPAPICOPアンプecalj常微分方程式モンテカルロ解析状態密度トランジスタodeDOSインターフェース定電流スイッチング回路PDS5022半導体シェルスクリプト分散関係レベルシフト乱数HP6632AR6452A可変抵抗トランジスタ技術温度解析ブレッドボードI2C反強磁性確率論数値積分セミナーバンドギャップバンド構造偏微分方程式非線形方程式ソルバ熱設計絶縁ISO-I2Cカオス三端子レギュレータLM358GW近似マフィンティン半径A/DコンバータフォトカプラシュミットトリガLEDPC817C発振回路数値微分直流動作点解析サーボカレントミラーTL431アナログスイッチUSB74HC4053bzqltyVESTA補間電子負荷アセンブライジング模型BSch量子力学単振り子2ちゃんねるチョッパアンプLDA開発環境基本並進ベクトルFFT標準ロジックブラべ格子パラメトリック解析抵抗SMPMaxima失敗談ラプラス方程式繰り返し位相図スイッチト・キャパシタ熱伝導状態方程式キュリー温度gfortranコバルトTLP621不規則合金Quantum_ESPRESSO六方最密充填構造ランダムウォーク相対論ewidthスピン軌道相互作用FETQSGWVCAcygwinスレーターポーリング曲線GGA仮想結晶近似PWscfシュレディンガー方程式LM555ハーフメタル固有値問題NE555最小値ガイガー管QNAPUPS自動計測ダイヤモンドマントルTLP552格子比熱最適化MCU井戸型ポテンシャル最大値xcrysdenCIF条件分岐詰め回路フェルミ面差し込みグラフスーパーセルfsolveブラウン運動awk過渡解析起電力三角波第一原理計算FXA-7020ZRWriter509Ubuntuテスタ熱力学データロガーTLP521OpenMPubuntu平均場近似MAS830LトランスCK1026PIC16F785PGA2SC1815EAGLEノコギリ波負帰還安定性ナイキスト線図MBEOPA2277P-10フィルタCapSenseAACircuitLMC662文字列固定スピンモーメントFSMTeX結晶磁気異方性全エネルギーc/a合金multiplotgnuplot非線型方程式ソルバL10構造正規分布等高線ジバニャン方程式初期値interp1fcc面心立方構造ウィグナーザイツ胞半金属デバイ模型電荷密度重積分SIC二相共存磁気モーメント不純物問題PWgui擬ポテンシャルゼーベック係数ZnOウルツ鉱構造edeltquantumESPRESSOフォノンリジッドバンド模型スワップ領域BaO岩塩構造ルチル構造ヒストグラム確率論マテリアルデザインフラクタルマンデルブロ集合キーボードRealforceクーロン散乱三次元疎行列縮退化学反応関数フィッティング最小二乗法Excel直流解析PCTS-110TS-112日本語パラメータ・モデル等価回路モデルcif2cell入出力陰解法熱拡散方程式HiLAPW両対数グラフCrank-Nicolson法連立一次方程式specx.fifort境界条件片対数グラフグラフの分割円周率ヒストグラム不規則局所モーメントGimpシンボル軸ラベル凡例線種トラックボール

最新コメント
リンク

にほんブログ村 その他趣味ブログ 電子工作へ