• ベストアンサー

AD変換のLSB(量子化単位)の求め方。

AD変換のLSB(量子化単位)を求める式について質問があります。 8ビット分解能の場合、LSBの計算式は以下の式になるようですが、  LSB = Vref/256 (※Vref:リファレンス電圧) なぜ"256"で割るのか分かりません・・ 次のように"255"ではないんでしょうか。  LSB = Vref/255 例えば 8ビット分解能、Vref=255Vの場合、次のようなAD変換結果に なると思います。  0V = 00000000b  1V = 00000001b  2V = 00000010b    :  254V = 11111110b  255V = 11111111b この場合、LSBは1Vではないでしょうか。 となると、  LSB = Vref/x の計算式より  x = Vref/LSB = 255V/1 = 255 となり "255"で割ることが正しいのではないんでしょうか??

質問者が選んだベストアンサー

  • ベストアンサー
  • kaz_noko
  • ベストアンサー率100% (1/1)
回答No.6

LSBは最下位ビットによる変位幅なので、質問者さんの考え方であっていると思います。 私はそのように教わりました。 失礼ですが、参考文献に誤りがあるのではないでしょうか。 No1の方は256を主張していますが、カードの例えで1LSB=1=(3-0)/(2^2-1)から分解能nビットのAD変換について範囲を(2^n-1)で割るのが正しいことを証明していますね。

その他の回答 (5)

  • tatsu01
  • ベストアンサー率18% (292/1540)
回答No.5

No1です。 0から3まで書かれたカードを小さい順に並べた時 「1枚目」は0ですよね?カードは全部で「4枚」ですよね? 回答補足でも0Vに対して00bという値(データ)を与えていますよね。? つまり1番小さい値は0だと。 0は無いのではなく、0という値があるのです。

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.4
sima06029
質問者

補足

この植木算を参考にすると、 LSBは間の数になるのではないでしょうか。 なので 間の数 = 木の数-1     = 2^8-1     = 256-1 となりAnsは"255" となるのではないでしょうか??

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

私も以前同じ疑問を持っていました。 数学的な厳密さからいえば貴方のおっしゃるとおりです。 しかし量子化誤差という1ビット(未満)の誤差から見れば1/255と1/256の差は非常に小さいですね。 LSBというのはあくまでも精度を論じているわけです。 特に桁数が多くなると1/(2^n)の方が単純で判りやすいですね。 と私は理解しています。

sima06029
質問者

補足

う~ん・・ 結論は分かりやすいからですか・・ 何か納得ができません。

  • MOMON12345
  • ベストアンサー率32% (1125/3490)
回答No.2

1から数えるのではなく、0~255の256ステップだからです。 1から(つまり00hex=1decとするならば)数えたら1~256になるわけです。

sima06029
質問者

補足

御回答ありがとうございます。 しかしながら#1で補足した通り疑問点が御座います。 教えてください・・

  • tatsu01
  • ベストアンサー率18% (292/1540)
回答No.1

00000000~11111111は256段階ですね。 2の8乗=256です。

sima06029
質問者

補足

御回答ありがとうございます。 LSB(量子化単位)はアナログ電圧を?分割した値と認識しています。 ここで簡単に 分解能2ビットとした場合。 0V:00b 1V:01b 2V:10b 3V:11b となり分割数は"3"となると思います。 なので 2^2=4 ではなく "3" でアナログ電圧を徐算した値が、 LSBになるのでは?

関連するQ&A

  • AD変換精度に関して。

    組み込み系の質問なんですが、 マイコンの特性として、 ・10ビットAD変換の精度が±3LSB ・8ビットAD変換の精度が±1LSB のマイコンがあったとします。 このとき、10ビットAD変換を行い、その結果をシフトして、 上位8ビットで取り出すと、このときのAD変換精度は ・8ビットAD変換の精度が±0LSB と同じ考えとなるのでしょうか?

  • PIC18F4550でAD変換

    PIC18のAD変換を使用しているのですが わからない部分があるので質問させていただきます。 ・現象  リファレンス電圧は電源電圧+5V(Vdd)を使用し10bit分解能で行っているのですが90mV位(低い電圧のAD変換)の時の変換値がずれます。 ・測定方法  測定はテスターでPICのVss端子にGND、アナログ信号入力端子に+側を当て直接PICの足をさわっています。 ・結果  1023=5Vですので1=約0.0049V  0.097V=19を示して欲しいのですが17となります。  5V時は1023を示し2.5V時は511が出ており電圧を上げると計算通りに示します。  リファレンス(電源電圧)を意図的に変えてみたのですが低い電圧の時は変化がありませんでした。 上記点より低い電圧での変換では精度が出ないという事なのでしょうか。 またこのあたりの仕様が記載されている資料などありましたら宜しくお願い致します。

  • AD9244というAD変換器をマイコン(SH7144)に接続して使用し

    AD9244というAD変換器をマイコン(SH7144)に接続して使用しようとしているのですが、リファレンスをどのように接続していいかがわかりません。 データシートよりSENSE(内臓リファレンス制御)、VREF(内臓リファレンス)、REFB、REFT(内臓リファレンスデカップリング)というピンの接続の方法がわかりません。 どなたか教えていただけないでしょうか?

  • H8/3664FのAD変換について

    初めまして。 現在大学でH8/3664FでのAD変換を行っているのですが、 AD変換とその値に対する出力への動作が上手くいきません。 分かる方、ご教授お願いいたします。 現状は、1.7V程度の信号をADコンバータ端子(AN1)に入力しています。 AD変換を行い、条件として1V以上のときは出力に設定した 端子(P11)から5V出力しダイオードを光らせようと思っています。 プログラムは以下のように組んでいます。 おかしいところがあればご指摘お願いします。 void main(void){ IO.PMR1.BYTE=0x00; /* ポート1入出力ポート*/ IO.PCR1=0xff; /* ポート1出力*/ /*AD変換の初期設定*/ AD.CSR.BIT.ADST=0; /*AD変換機能停止*/ AD.CSR.BIT.SCAN=1; /*スキャンモード*/ AD.CSR.BIT.CKS=1; /*高速変換*/ TW.TCRW.BIT.CCLR=1; /* TCNTがGRAでクリア */ TW.TCRW.BIT.CKS=3; /* クロックφ/8 */ TW.GRA=40000; /* パルスの周期20ミリ秒 */ TW.TMRW.BIT.CTS=1; /* カウントスタート */ while(1){ /* 20ミリ秒間のカウントは約8880となる. */ if(TW.TSRW.BIT.IMFA==1){ TW.TSRW.BIT.IMFA=0; AD.CSR.BIT.ADST=1; /*AD変換機能開始*/ while(AD.CSR.BIT.ADF==0){}; /*AD変換終了待ち*/ AD.CSR.BIT.ADF=0; /*変換終了フラグクリア*/ AD.CSR.BIT.ADST=0; /*AD変換機能停止*/ x0=(int)(AD.DRA>>6); /*x0に値を格納*/ if(x0>100){/*1V以上の場合*/ IO.PDR1.BIT.B2=1; }else{ IO.PDR1.BIT.B2=0; }

  • AD・DA変換について

    いつもお世話になっております。 今回も皆さんのお力を借りたいと思います。。。 今回はAD・DA変換器について実験しました。 4bitDA変換と8bitDA変換と8bitAD変換をしました。 そこでなんですが・・・ (1)この三つの精度、変換速度、分解能はどんなものなのでしょうか?? (2)このほかには、AD,DA変換の方式はどのようなものがあるのでしょうか。 よろしくお願いします(>_<)

  • h8マイコンで AD変換ができなくて困っています

    マイコンでAD変換をしようと思っています>< #include<3048.h> void ioinit(); void adinit(); int i; int ADDRA; main() { ioinit(); adinit(); while(1){ AD.ADCSR.BIT.ADST = 1; // A/D変換スタート while(AD.ADCSR.BIT.ADF==1); // A/D変換終了まで待つ int i = ADDRA; // レジスタに格納された値をiとする if (i>=0xA5){ // 電圧が6.5vより高くなった場合 P5.DR.BYTE = 0x01; } else if (i<=0x19){ // 電圧が1vより小さくなった場合 P5.DR.BYTE = 0x02; } else if (0x19<=i<=0xA5){ // それ以外の電圧だった場合 P5.DR.BYTE = 0x03; } AD.ADCSR.BIT.ADF=0; //フラグクリア } } // I/OポートDDR設定 void ioinit() { P5.DDR=0xff; } // A/D変換設定 void adinit() { AD.ADCSR.BYTE = 0x33; } このプログラムでAD変換がまったくできません><電圧を変えていくことでP5につながっているLEDで変換結果を見たいと思っています。ADDRAのプログラムあたりがおかしいと思っています;;ちなみにポート7に電圧計とつなげています。その電圧値を変えていくことで結果を見ようとしています。0xA5は6.5Vのときの反応だから回路も分圧させたものにして10Vまでの対応にしました><どこがおかしいのか教えていただけるとてもうれしいです><助けてください;;

  • AD変換器(ADC08351)について

    現在、周波数2MHzの基準電圧が0VでVp-p=1Vの信号を、ADC08351を用いてAD変換したいと考えております。ただ、AD変換器について理解が不足しており、データシートを見てもよく分かりません。そこで、みなさんに私の仕様を確かめてもらいたいと思っています。 Vin=Vp-p=1V(基準電圧0V) Vref=1V /OE=0V(つまり常にHigh状態) CLK=48MHz(V=3.3V) VA=VD=3.3V AGND=DGND=0V とPIN接続を行おうと思います。これでよろしいでしょうか? ちなみに、よく分からない点として、アナログ信号入力は0.5Vp-p~0.68VAとなっているのですが、これはVA=3.3Vの場合、0.68VA=2.24Vとなり、Vp-p=0.5V~2.24Vという理解でよろしいのでしょうか?

  • Hブリッジ、AD変換

    この問題の考え方を教えて下さい 以下のようなトランジスタを用いたHブリッジ回路がある。 (1) 24Vで駆動するモータがある。このモータに流れる電流を監視するためにシャント抵抗を設けたい. 適切な場所はどこか? (2)モータの電流3Aまでを, 最大5Vの10bitのA/D変換で計測する。電流計測値の分解能は何Aか? シャント抵抗を0.1Ωとする。 (3)シャント抵抗の耐圧 (1)について モータの直後か直前に設けるのですか? (2)について 入力が3AのときAD値は1023*(3/5)=613.8になりますが, 3/613.8が分解能になるのですか? (3)について 3[A] * 0.3[V] = 0.9[W]で合ってますか? よろしくお願いします。

  • Sin波をAD変換ボードを通してAD変換したときの波形図。

    Sin波をAD変換ボードを通してAD変換したときの波形図。 AD変換ボードの操作に慣れようと思って、周波数発信機を用いて60Hz、600Hz、6kHz、60kHz、600kHzのsin波を測定しているのですが、60Hz、6kHzのときは、きれいなsin波が測定できるのですが、それ以外の周波数の場合には、sin波が測定できません。一応サンプリング周波数を変えてやってみたのですが、それでもダメでした。60Hzと6kHzの測定はサンプリング周波数1000Hzで取ることができました。こんな現象が起きるのにはサンプリング周波数以外にも何か理由があるのでしょうか? なお、供給する電圧は、2~3V程度の信号を使用しています。 使用しているAD変換ボード:分解能16bit、最高サンプリング速度100kSPS、バイポーラ:±10V 添付図は、電圧は違いますが同じ回路を使用した場合の60Hzと600Hzの波形です。

  • A/D変換について

    現在A/D変換の方法としてデュアルスロープ型を考えています ADCの電源に5Vを用いた場合8ビット出力だと分解能は     5[V]/256 = 20[mV] になるのはわかります でここで疑問なんですが、この場合ADCへの入力は分解能を考慮して5Vぐらいまで変化するような入力にしなくてはならないのでしょうか?(数mVではだめなのでしょうか?^^;) わかりにくくてすいません・・・