MCUを使用した安価な温度検出


13

MCUで温度を検出するための安価なソリューションを探しています。私の要件は次のとおりです。

  • 2チャンネル
  • 温度範囲:30-35°C
  • 温度分解能:1-2 K
  • ケーブル距離(MCU->センサー)10cm-2mは許容範囲
  • 2つのチャネル間の相対温度で十分であり、絶対温度は必要ありません

私の出発点は、熱電対アンプを備えた2つの熱電対ですが、これは私のアプリケーションにとってはやり過ぎのようです。熱電対はRadiosparesでは10ドル、アンプは5ドルで動作し、温度を推定するだけで30ドルかかります。

より安価なソリューションを探すための良い方向は何ですか。NTC?


2012年7月18日編集

stevenvhがNTCで得られる高度の線形性を示すために答えを拡張した後、NTCがより良い解決策ではないかどうかを再考するために時間を費やしました。

しかし、半導体チップと比較して安価でNTCを使用して取得できるエラーについて、彼の推論でstevenvhをフォローできるかどうかはわかりません。

NTCで温度を取得するには、次の機能が働きます:

  1. 伝達関数 の抵抗に、周囲温度を変換しますHTaRNTC(R25,B25/85
  2. 分圧器によって生成される電圧HRNTCVVeバツctatonRNTCRln
  3. AD変換HVbtsVVrefσconverson
  4. 線形曲線近似:HbtsTestbtsσapproバツ

したがって、私が見るエラーの原因は次のとおりです。

  1. NTC値誤差:1%各及びB 25 - 85の値:合計約2%R25B2585
  2. 線形抵抗の抵抗値に対して1%、励起電圧源に対して0.5%としましょう
  3. PIC16F1825の場合、ADCに使用される内部基準電圧の不確実性は6%です。さらに、ADC自体には、それぞれ1.5 lsb程度の積分誤差、微分誤差、オフセット誤差、およびゲイン誤差があります。10ビットでは、後者の合計は最大で0.5%です。
  4. stevenvhが彼の答えで示したように、線形近似の誤差は関心のある範囲でわずか0.0015%です。

したがって、温度の推定誤差は、ADV電圧リファレンスの誤差と抵抗値の誤差に支配されます。明らかに6%を超えます。stevenvhが指摘したように、線形近似による誤差はまったく無視できます。

300ケルビンで6%の不確実性は、18Kの温度誤差に相当します。温度チップには約1Kの誤差があります。300Kでは、これは0.3%の不確実性に相当します。

NTCでこれを打ち負かすことは、非常に慎重なキャリブレーションとパフォーマンス検証を行わなくても問題ないように思えます。個別に見た線形抵抗、励起電圧、ADCの不確実性により、NTCソリューションの不確実性がこれを上回っています。または、推論に大きな間違いがありますか?

現時点では、NTCは高精度の温度検出ソリューションであると確信していますが、安価では、NTCの性能は暗闇でのショットになると思われます。

回答:


12

1-2度は簡単な解像度です(精度を意味する場合でも、これは同じではありません!)。私はLM75とそのさまざまなクローン、またはDS1820 / 18S20 / 18B20 / 1822を検討します。Microchipには、LM75クローンを含む多くの温度センサーが 1ドル未満で搭載されています。電圧出力バージョンは安価ですが、デジタル版を好むでしょう。


この質問で受け取ったすべての回答は非常に役に立ちました。LM75クローンの使いやすさからこれを受け入れました。私の場合、線形化などを心配する必要はありません。
ARF

好奇心が強い:なぜデジタルセンサーを好むのですか?
m。アリン

5
参照、線形化、A / Dコンバーターの構成、およびハードウェアについての心配はありません。欠点は、プロトコルを処理する必要があることです。
ウーターヴァンOoijen

15

はい、NTCと言います。これはDigikeyで見つけることができる最も安いです。約半額で、ほぼ同じ精度の温度センサーICよりもはるかに安価です。NTCの利点は、マイクロコントローラで直列抵抗とADC入力のみを必要とすることです。これは、現在ほとんどのものを備えています。

低価格には不利な点もあります。NTCは線形ではありません。その伝達関数を使用する必要があります(指数関数が含まれているため、気に入らない場合もありますが、ルックアップテーブルを使用する場合は、与えられた範囲に対して最適な解決策となる場合があります)。

ddを編集します。2012-07-13
Bah、悲惨なLM75にbeatられました。私はこれを許可しません。:-)

このNTCシリーズの* 103 * MT *を使用します。最初に伝達関数:

R=10kΩe13.4096+4481.80T150522T2+1877103T3

T

有望そうに見えませんが、実際には0℃から100℃の間では曲線は次のようになります。

ここに画像の説明を入力してください

私が言ったように、線形以外の何か。これを線形化することはできますが、抵抗分割器を作成し、線形でもないことを忘れないでください。したがって、線形化は直列抵抗によって台無しになります。抵抗器から始めて、何が起こるか見てみましょう。3.3 Vの電源があり、Vccへの5.6kΩ抵抗を選択すると、出力は

ここに画像の説明を入力してください

悪くない、全く!紫色の曲線は、対象範囲である30°C〜35°Cの接線です。ズームインしてグラフをプロットすることもできますが、2つの一致する線が表示されるため、エラーを見てみましょう。

ここに画像の説明を入力してください

見た目も良くありませんが、垂直スケールを見る必要があります。これにより、30°C〜35°CのNTC特性と比較した線形近似の相対誤差が得られます。エラーは15 ppm未満、つまり0.0015%です。

Mathematicaは、ほぼ完全な線形近似の方程式は

VOUT=0.0308 T 1V/°C+2.886 V

これにより、それぞれ609および561のADC測定値が得られます。10ビットADCの場合。これは、5°Cの差が48の範囲、つまり約0.1°Cの分解能です。NTCと抵抗器だけです。

LM75が必要なのは誰ですか?



ddを編集します。2012-08-13

事実:NTCソリューションにはキャリブレーションが必要です。

Arikにエラー計算に戻ることを約束しましたが、それは思ったよりもはるかに複雑であり、データが不完全なため完了できません。たとえば、NTCの伝達関数の係数には非常に正確な数値があります(7桁の有効数字は既に丸められています!)が、その精度に関する情報はありません。しかし、いくつかのコメント。

ββ

±

PICのADCリファレンスには、6%の許容誤差があります。Arikによれば、300ケルビンで6%の不確実性は18 Kの温度誤差に相当します。簡単なチェックを行いました。20℃の温度で分圧器の出力を計算しました。それに6%を追加し、NTCの抵抗値と計算される温度に計算し直しました。エラーは18°Cではなく、1°C、つまり0 Kを基準とした0.5%未満です。

それでも、6%の誤差はまったく関係ありません!抵抗分割器にADCの基準電圧を使用する場合、その電圧は計算にも現れません。エラーが50%であったかどうかは気にしません。不正な内部参照がコントローラーの外部で利用できない場合は、別の参照を使用します。3.3 V電源、または同じように任意の他のDC電圧、あなたが転がってきました。

キャリブレーションは1回限りのプロジェクトに必要なものではありませんが、量産の場合は特に心配はありません。特にセントカウントが必要な家電製品では、高価なLM75よりもNTCを見つける可能性が高くなります。


3
専門家に尋ねることの良い点は、すべての答えが得られることです(アナログ対デジタル)。今では、Arikは専門家の間で選択する専門家を必要としています:)
Wouter van Ooijen

約半ドル?これはあなたが言及したものと同じものではありませんか?100個あたり0.15ドルです。そして MCP9701Aは約0.25ドル/ 100個です。うわー、私はデジタルのものがそれぞれ2ドルまたは3ドルのように、とても高価だと思いました!
アブドラカーラマン

2
@abdullah-すべては相対的です。優れたエンジニアは、おそらく直列抵抗1%の許容値と100 ppm /°Cの温度係数を指摘するでしょう。いずれにせよ、読み取りエラーがある場合は、近似によるものではありません!:
stevenvh

1
@stevenvh延長された回答により、元の評価を修正する理由が得られました。しかし、安価でNTCを使用して高精度の測定に到達する方法を完全に理解しているのかどうかはわかりません。編集された質問を見て、推論に欠陥があるかどうかを教えていただければ幸いです。助けてくれて本当にありがとうございます!
ARF

1
@Arik-回答を更新しました。特に、18 Kのエラーには対応が必要だと感じました:-)
stevenvh

6

これは、サーミスタ、またはより正確には2つのサーミスタの仕事のように聞こえます。3つの異なる温度状態を区別するだけで、相対的な温度だけを探しているので、2つのサーミスタを接続して単一のアナログ信号を作成できます。これは、マイクロに組み込まれたA / Dで測定できます。ほとんどのマイクロはA / Dを備えているため、これ以上費用はかかりません。おそらく、ノイズを減らすために、ローパスフィルターとして抵抗とコンデンサをいくつか追加します。

1つのサーミスタはグランドからアナログ信号に、もう1つのサーミスタは電源からアナログ信号になります。キャリブレーションが必要な場合がありますが、温度範囲が狭く解像度が低いため、空想を得る必要はありません。おそらくゼロ差電圧を保存し、それを将来の読み取り値から差し引くだけで十分です。


分圧器構成で2つのサーミスタを使用して相対電圧を測定することに関するヒントをありがとう。私はそれを考えていなかっただろう。
ARF

@Arik-直列の2つのサーミスタは、抵抗が温度に対して線形に変化する場合にのみ機能するため、必ず確認してください。(私は私の答えでした。)
stevenvh

@stevenvh:はい、あなたは正しいですが、非常に狭い温度範囲と低解像度に注意してください。一度、範囲の中央付近で等しい温度の場合に較正された2つのサーミスタで十分に機能するはずです。一方が他方から5℃以上離れることはありません。
オリンラスロップ

@Olin-すべて正しい。「もっと広い温度範囲で測定したい場合」を追加すべきだったと思います。
-stevenvh

5

温度測定のステップダイオード電流デルタ電圧法に気付いておらず、温度の測定に興味がある場合は、これを読む必要があります- 温度測定のアイデアを変えるかもしれません


私はパーティーに少し遅れています。
これまでに答えが利用されていたので、かなりのメリットがあるが、離散形式では驚くほどほとんど使用されていないように見える代替方法の大部分を概説するだけです。

この方法は、IC温度測定ICで一般的に使用されていますが、予想されるほど知られていません。

シリコン(たとえば)ダイオードに2つの既知の電流が交互に供給される場合、電流の変化に伴うデルタ電圧の変化は絶対温度に関連しています。

この方法は、(少なくとも)TI LM82、LM83、LM84、LM87およびLTC3880、LTC3883、およびLTC2974センサーで使用されます。

この方法は、温度を推測するために所定の電流で絶対ダイオード順方向電圧降下を測定する通常の方法とは異なることに注意してください。この方法はかなり正確であり、センサー固有のキャリブレーションを必要としません。

約0.1度C(またはK)の精度を達成できます。
解像度は測定方法に依存します。

その結果、デバイスのキャリブレーションは不要です。
結果は、基本的なダイオードタイプ(シリコン、ゲルマニウムなど)のみに依存します。
ます。たとえば、1セント未満の1N4148シグナルダイオードを使用する場合、これを別の1N4148に変更し、再キャリブレーションなしで同じ精度を得ることができます。

使用する2つの電流を設定する精度は結果の精度に明らかに影響しますが、利用可能なリソースに合わせて選択できるため、結果は非常に良好です。

この方法は、すべてではありませんが一部のオンダイプロセッサ温度測定システムで使用されます。通常、このシステムを使用する場合、技術的な説明の詳細は非常に軽く、多少不明瞭になります。つまり、1960年代半ばにWidlarが機能していたとはいえ、秘密にしておきたいようです。

この方法は、NTCサーミスタまたはPT100などのプラチナ抵抗器などを使用して、非常に競争力のある複雑さと難易度で合理的な注意を払って達成できる精度に匹敵します。


この優れた199 Analog Deviceのアプリケーションノートは、コンピューターチップの温度を高速かつ正確に測定することにより、この手法が新しいものであると主張しています。それらが正しいかどうかはまったくわかりませんが、それは確かに有用であり、期待されることはあまり知られていません。

IおよびNIの電流および電流1でのダイオード電圧降下Cv1および電流2でのVd2について、上記の論文(わずかに書き直し)から

Vd1 – Vd2 = DVd =(kT / q)ln(I / NI)=(kT / q)ln(1 / N)

N、k、およびqはすべて既知の定数であるため、
T =(定数)(DVd)

_

優れたTIアプリケーションノート複数のリモートダイオード温度検出

ウィキペディア-シリコンバンドギャップ温度センサー

[LT AN137外部PNジャンクションを 使用した正確な温度検出] http://cds.linear.com/docs/Application%20Note/an137f.pdf
LTC3880、LTC3883、LTC2974などで使用されます。


3

サーミスタ(10K)B25 / 100 = 4300を使用した非常に単純な温度(Celcius)測定子この記事で読んだ上記のコメントからインスピレーションを得ました。

DigiKey 10Kからサーミスタを5%ずつ1ドルで購入しました。浮動小数点演算や複雑な演算なしで、公正な温度測定を取得したかったのです。次のようにArduinoに接続します:Vref to 3.3v; 10K抵抗器と3.3vを介したアナログ0 A0。; グランドへのサーミスタA0。Celciusの温度は次のように取得します。部分的なコード:analogReference(EXTERNAL);
ADC = analogRead(0);
Th = 10000 /(1023 / ADC)-1; // 10000は除数で使用される修正抵抗です。
T =(775-Th)/ 10;

精度は、25°Cで+ 1、20°Cで+ 0、0°Cで-1、-20°Cで+2です。775定数を、希望する欲望範囲により近い値に変更します。たとえば、775の代わりに765を使用して、25C付近で0エラーを取得します。これは整数演算であるため、10で割って丸める前に5から770を追加しました。

サーミスタ、ADC、温度、計算結果の関係を表示


1

LM35DZを使用しています温度範囲は0℃〜100℃、リニア出力、低インピーダンスです。私はこれをPIC ADC入力に直接接続して使用してきましたが、これまでのところ非常にうまく機能しています。

1ユニットのコストは約3米ドルです。


3
そして、彼はそれらのうちの2つを必要とします。私にとって安価なソリューションのように見えません。私の偉大なNTCとは違います!:
stevenvh

私もLM35チップを使用しています(そして、私はそれらが好きです)が、この質問には少しやり過ぎだと思います。
ヨハン

0

サーミスタを使用した非常に単純な温度(Celcius)測定...各1ドル。

STM32F0チップはどうですか?ADCモジュールには、内部温度センサー、2つの温度ポイントでの較正値、および内部Vrefジェネレーターの較正値が含まれています。

これらすべてを組み合わせれば、広い電圧範囲で非常に正確な温度センサー(12ビットADC、シグマが1 lsbをわずかに超える)として使用できます。

また、専用の温度センサーとしてプログラムすることもできます。ほとんどの場合、スリープ状態で起きて温度を読み取り、データを送信してからスリープ状態に戻ります。

これらすべてを少量で1ドル未満で。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.