SSブログ

ATmarquinoでMhysicalna(身近な)コンピューティング 差動入力なら、、、すっごい良くなった [ATmarquino Arduino]

※やけに続くよこのシリーズ。すでにArduinoの話ではなくなって来ている気もするけれど。
IMG_1205.JPG
arduino_004.png
またまたのりたんさんのアドバイスに従って従来のシングルエンド入力ではなく、ディファレンシャル(差動)入力としてLM35DZの出力を受ける事とします。
イメージとしては2枚目の回路図の様になります。アナログ入力の0番は従来通りLM35DZのVOUTに接続されますが、アナログ入力の1番はLM35DZのGND端子と接続します。

また、従来LM35DZのGND端子とAVRのGND端子は共通でしたが、間にダイオード(ショットキバリアダイオード)を挟む事でGNDレベルから若干浮かしている状態です。どれ位浮いているかはLM35DZに流れる電流に依存しますが、実測では138mV程度でした。

ここにダイオードを挟むことでAD入力のダイナミックレンジが小さくなってしまいますが、例えば仮に400mV位浮いたとしても計測範囲が400mV~1100mV、つまり0℃~70℃までの範囲となる訳です。今までは0℃~100℃の計測範囲でしたが、まあ室温が70℃も上がってしまったらそこにいる人はみんな死んでしまいますので、70℃でも十分でしょう。

差動入力のメリットは、今回の様にマイコン内部の共通インピーダンスで発生したオフセットエラーをキャンセルして計測できる点です。アナログ入力0も、アナログ入力1も同じだけGNDレベルから浮いているので、引き算すればそれはキャンセルされ、純粋に入力信号そのものを計測できます。
デメリットは回路が高級?になってしまう点ですね。貴重なAD入力を2つ使って実現している訳ですから。

実際に計測してみた所、例えばアナログ入力の0番と1番間の電圧が181.7mVであれば、変な補正も入れずにシリアルの出力も181と表示しています。※小数点以下は切り捨てとなってしまう為。

いやー良いですね。絶大な効果があります。ちなみにこれだけ計測精度を出している訳ですが、LM35DZの精度自体は25℃で±0.6℃なのですでにオーバースペックとなっています(笑)。

今回のスケッチの一部を紹介しておきます。
static unsigned short ADRead( void )
{
  unsigned short ad;
  ad = analogRead( 0 ) - analogRead( 1 );  //A/Dコンバーターの変換値を取得する
  return ad;
}

要するに前回のADを読む関数で、アナログ入力0番からアナログ入力1番を引き算して、その値を返しているだけです。一々LEDを消灯する事も行っていません。

是非のりたんさんが愛用しているフリースケールのマイコンも電子工作のパートナーとして思い出してあげて下さい。

HCS08 Unleashed: Designer's Guide to the HCS08 Microcontrollers

HCS08 Unleashed: Designer's Guide to the HCS08 Microcontrollers

  • 作者: Fabio Pereira
  • 出版社/メーカー: Booksurge Llc
  • 発売日: 2007/11/13
  • メディア: ペーパーバック






nice!(0)  コメント(3)  トラックバック(0) 

nice! 0

コメント 3

Sim

おおっ、これはすごい。まるでドラマのような感動のエンディングですね。
色々なマイコンで汎用的に使えるテクニックなところもすごいです。それにしても、ちゃんと追求して解決しちゃうところがすごいです。とても楽しませていただきました。ありがとうございます。

by Sim (2009-04-01 00:33) 

hamayan

いやもう、なにもかも、あれもそれも、あのお方のお蔭ですから。
北の方に足を向けて寝れません。
by hamayan (2009-04-01 01:06) 

noritan

出来ましたですね。

A/D入力の上限が1Vになっているのに気が付きませんでした。整流用シリコンダイオードなんか使ったら、ダイナミックレンジがなくなっちゃうところでした。危ない危ない。

私の方は、電流を流すタイミングとA/D変換するタイミングを同期させるほどCPUに余裕が無いので、悩ましいところです。さて、どうするかな。

by noritan (2009-04-01 02:59) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。