- ベストアンサー
PIC18F4550でAD変換の問題
- PIC18F4550でAD変換を行う際に、低い電圧の変換値がずれる現象が発生しています。
- リファレンス電圧を変えても低い電圧での変換は精度が出ないようです。
- 仕様についての詳細な資料を探しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
毎度JOです。 投稿内容を観る限り希望の数値が得られそうな物ですが、 逐次比較型のADコンバータでは1LSBが保障されていますから、誤差1LSBになります 誤差1LSBを許すかどうかの問題の前に、今回の事例では常にこのレベルでの変換をするのでしょうか? AD変換では、OPアンプ等で増幅し「なるべく大きな信号を変換する」事が肝要です 数値19で1LSBの誤差では誤差5%ですが、信号を数値511近辺まで増幅させれば1LSBの誤差は1.9%まで低下します 安定したサンプリングを得る為には複数回のサンプリングを平均化する手法も取られます 今回の場合に当てはめると、OPアンプ等で16倍に増幅し16回のサンプリングを1/256すれば安定します サンプリングする信号にノイズ等が混入する恐れが有ればLPF等も必要になり、複数回サンプリングは有効な手法です サンプリング間隔が、変換時間+アクイジションタイムでギリギリのサイクルタイムで無ければ 複数回のサンプリング+OPアンプによる増幅をお勧めします 毎度JOです。 >>16倍に増幅し16回のサンプリング これは計測数値データーが256倍される事を示します 10BITデーターですから、保存すると2バイトのメモリを必要とします、 これを16回加算して行くとキャリが出ます、尚且つ元の数値が16倍されていますので 全体では3バイトのメモリを確保します、計算結果の上位2バイトは自動的に平均化された数値が格納されます プログラムで平均化する場合、1/100とかにすると計算に時間が掛り、高速サンプリングでは間に合わない可能性もあります そこで上記手法を取れば、加算のみで除算の必要が有りません 8BITCPUでは1/256は例外的に除算しなくて済みます 8BITの内上位と下位の4BITを入れ替える命令も有りますので1/16の除算も楽ですね 10BITから12BITへ変更すれば誤差は1/4になりますが、これはノイズ等無く安定したサンプリングが出来る事が前提です
その他の回答 (1)
10bitの計測精度を検討したいのでしょうか? であれば、もう少し正確な数値を記述しましょう。10bitは10進数で1023なので、有効数字として3~4ケタが必要です。 > リファレンス電圧は電源電圧+5V(Vdd) 5.000V でしょうか? > 0.097V 9.700 mV でしょうか? > 5V時は 5.000V でしょうか? > 2.5V時は 2.500V でしょうか? このあたりを明確にしないと(ちゃんと測定しないと)1bit精度が実現されてるかどうか? の検討ができないと思います。 いかが? 回答1) にもあるように、数10mVオーダの計測ではそれなりの工夫が必要です。
お礼
ご回答ありがとうございます。 申し訳ありません。文章不足でした。 一応、AD変換に影響のない部分(1=約4mV)は0という値です。 5Vですと5.004V以下でしたのでこのように書いてしまいました。 今後気を付けます。 やはり低い電圧ではナイーブみたいですね。 このレベルのADは始めてでしたので確立しておきたいです。 参考になるご指摘ありがとうございました。
お礼
早々のご回答感謝いたします。 1LSBの許容差があるのは存じあげませんでした。 やはり大きな信号にすることが安定へとつながるわけですね。 今回機器側の出力が0-5Vの為にこのような状態になっておりました。 機器の中でも1-5V(4-20mA)出力の物もありそちらは安定して取れます。 無知で申し訳ないのですがサンプリングの「16」と言う数字はどのような意味を持つのでしょうか。これくらい取れば安定すると言う基本数値的なものでしょうか。 機器の方は変更が難しいので、考えた対策は上記条件と関係なくなってしまうのですが分解能を10bitから12bitへの変更で誤差を低減させるというやり方ですがこういう考え方は邪道ではないでしょうか。 勉強不足で申し訳ないですがご教授お願い致します。