トレンド、最高および最低温度を備えた外部温度計
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
このプロジェクトについて
はじめに
私はこの温度計を楽しみのために作成しましたが、Arduinoソフトウェアの作成とLCDディスプレイの使用についても経験を積むために作成しました。それに取り組んでいる間、私はいくつかの機能を追加することにしました。測定された最高温度、最低温度、および温度の傾向を示すディスプレイ上の上下の矢印。プッシュボタンを使用して、表示されている最低温度と最高温度を現在の温度にリセットします。
作り方
それを構築することはかなり簡単です。スケジュールに示されているようにコンポーネントを接続します。 Arduino Unoの5V出力は、すべての+ 5V接続にリンクする必要があります(矢印)。また、すべてのアースピンを相互接続します。温度計は、Arduinoに接続された12 VDCの外部電源から電力を供給されます。スケッチをダウンロードしてArduinoにアップロードすれば完了です。
必要なもの:
- Arduino Uno
- LCDディスプレイ1602A
- 12 VDC電源装置
- B + B Thermo Technik TS-NTC-103(10kΩ)
- 金属皮膜抵抗器10kΩ、0.1%公差
- ポテンショメータ10kΩリニア
- 抵抗820Ω(許容誤差は重要ではありません。10%、5%以上で十分です)
- 抵抗10kΩ(許容誤差は重要ではありません)
- コンデンサ0.1uF(=100nF)16V(2個)
- Elco 470 uF 16V
- 押しボタン(通常はオフ)
- 組み込みたい場合はエンクロージャー
センサー、高精度NTC
私が使用しているNTCは、10kΩのB + B ThermoTechnikの精密温度センサーです。このセンサーは、25°Cで±0.5%の抵抗公差を持っています。シリーズTS-NTCのNTC温度センサーは、-60 ... + 150°Cの広い測定範囲を持っているため、現在、高価なプラチナ抵抗器が使用されていました。基本抵抗とB値の両方が±0.5%の許容範囲内にあるため、コンポーネントは温度校正なしで多くのアプリケーションで使用でき、再調整なしで交換することもできます。したがって、簡単な抵抗測定により、25°Cで±0.12Kの精度をこのように達成することができます。 -60 ... + 85°Cの温度範囲では、最大誤差は約±0.5Kです。他の高精度NTCを使用することもできますが、そのNTCに合うようにスケッチのSteinhart-Hart係数を変更する必要があります(Steinhart-Hart近似を参照)。
明らかに、高精度の温度測定では、NTCと直列に接続された分圧器の他の抵抗も低公差タイプである必要があります。私は10kΩ、許容誤差0.1%、0.6W、温度係数25ppmの金属皮膜抵抗器を使用しました。許容誤差が0.5%以下のその他の抵抗器でもかまいません。
NTCケーブルがノイズを拾う
NTCは家の外に配置されています。私の場合、数メートルのケーブルがあります。家の中の他の電気的に「ノイズの多い」機器からの干渉を避けるために、Arduino Uno(ピン14)のアナログ温度入力からアースへの0.1uFのデカップリングコンデンサを配置しました。その後も、オシロスコープはピン14でノイズを示していました。ノイズは1602LCDディスプレイの時計が原因でした。 LCDディスプレイのVDDとVssピンの間に0.1uFのデカップリングコンデンサを配置した後、それは消えました。このコンデンサは、できるだけ短いワイヤ(最大1cm)でLCDPCボードに直接はんだ付けする必要があります。
その後、オシロスコープはピン14の信号がクリーンであることを示しました。スイッチング電源からのノイズとリップルを回避するために、Arduinoの5Vとgndの間に470uFのelcoを配置しました
NTCの配置
誤った温度測定を回避するために、NTCとそのエンクロージャーが太陽の下に置かれることは決してありません。したがって、日陰に配置する必要があります。できれば家の北側(南半球にいる場合は南側)に配置するか、家から離れた場所に配置することをお勧めします。壁に密着していませんが、壁の外側は少なくとも数mmです。壁は外気よりも数度暖かい可能性があるためです。そして、できればガレージの壁のように背後に暖房のない壁が望ましいです。
<図>

ソフトウェアについて。
LiquidCrystalライブラリは、1602LCDコマンド用に含まれています。いくつかの定数と変数が宣言されています。詳細については、desketchのコメントをお読みください。 A、B、およびCは、私が使用するNTCのSteinhart-Hart係数です。他のNTCの場合、これらの係数を変更する必要があります。 17行目の整数間隔は、2つの連続する測定間の時間を定義します。これは3秒です。温度測定をスムーズに進めるために、30回の連続測定から移動平均が計算されます(22行目のnumReadings)。したがって、表示される温度は常に過去90秒間の温度の平均です。移動平均の計算には、配列が使用されます。readings[numReadings]、この場合は21行目のreadings [30]です。各読み取り値は0〜1023の整数です。
Steinhart-Hart近似
NTC(負の温度係数)は、温度に依存する抵抗を持つ抵抗器です。温度が上がると抵抗が低くなります。残念ながら、抵抗と温度の関係は直線的ではありません。ただし、R-T曲線は式で近似できます。実際には、2つの近似式が使用されます。いわゆるベータ式とスタインハート-ハート式。後者が最良の近似を与えるので、それが私が使用するものです。多くの場合、メーカーは両方の近似値を提供してくれます。ただし、TS-NTC-103は、摂氏-60 ... +150度の広い温度範囲で使用できます。私たちはそれを約のはるかに狭い範囲で使用しているので。 -10 ... + 30℃この範囲で特別に係数を計算すると、より良い近似値が得られます。動作範囲(-10、0、および+ 20℃)で、メーカーの仕様に基づく3つの抵抗-温度ペアを使用しました。 Stanford ReasearchSystemsのオンライン計算機を使用して係数を計算するのは簡単です。下の図には、ベータモデル近似とスタインハート-ハート近似のデータ(赤い点)が表示されています。右下隅では、抵抗値が10kの場合、概算温度は、Steinhart-Hart近似で摂氏25,0035度であり、これはかなり良好であり、ベータ近似で摂氏25,7716度であり、実質的に劣っています。 (NTCは摂氏25度で10kです)
<図>
NTCcalculatorへのリンク
コード
Arduino
バージョン1.4は、オフラインエディタでコンパイラエラーを引き起こしていた関数宣言PrintPG()の規則的な問題を解決しますが、Webエディタでは問題はありませんバージョン1.3には、トレンド矢印のヒステリシスが含まれています 回路図
製造プロセス