Arduinoと温度センサを利用した室温の取得に挑戦(LM61CIZ+Arduino)
こんにちは!
管理人のでぃすこです!
さて、今回の記事のないようなのですが、
動画ではあまり触れることのない電子工作的な内容でやっていこうと思います。
電子工作はネタとしてはいろいろあるのですが、
どうしても動画にしたときのインパクトが弱いので編集も難しいです。
なので、せっかくやった電子工作はブログを通じて発信できたら、
という考えのもと記事にしております。
今回使用するものは、
・Arduino(互換機だけど)
・温度センサ(LM61CIZ)
・ブレッドボード
・ジャンパーワイヤー
となります。
(上記のURLから購入できます)
で、今回使用するLM61CIZですが、
まずはデータシート内の記述から見ていきましょう。
データシートのリンクはこちら!
これは底部から見た各端子への割当の図です。
一番左がVin、次に真ん中がVout、最後に一番端がGNDとなっています。
このセンサデバイスは温度によってVoutの電圧が変動し、温度計測が可能になります。
Vinに関しては2.7V〜10Vまでと使い勝手の良い感じ。
Voutに関しては温度により300mV(-30℃)〜1600mV(100℃)
まで変動します。
実際にデータシート上でも温度に対応した電圧の表記があります。
0℃のときが600mVであることがわかりますね。
記載によれば、温度変化1℃に対して出力電圧は10mV変動するようです。
なので10℃の変化があれば100mV値が変わるわけですな。
今回はこの値を読み解き、温度に変換してシリアルモニタに表示させて行きたいと思います。
ではまずはArduinoと配線をしていきましょう。
本来はバスコンを接続すると良いようなのですが、
まあテストということで今回は削ってArduinoとLM61CIZのみで接続します。
はい、超ざっくりです。
簡単に説明するとVinと5Vを接続、VoutとA0を接続、
GND同士を接続するだけです。
A0につなぐ理由ですが、Voutから温度により変化した電圧が出力されるので、それをA0(アナログピン)でキャッチして数値を取得する。
という感じですね。
で、配線が終わったら実際にコードを書いて行こうと思います。
コードを書く上で、出力される電圧を温度変化させないといけないですね。
先程のデータシートから、0℃のときに600mVが出力されるということがわかるので、温度を求めたい場合はまずアナログ出力の値から600を引けばいいわけですね。次に10mVが1℃の変化に対応しているので、10で割る必要があります。
ということで、出てきたアナログ出力の値を温度に変換するには
Temp = (Vout – 600)/10
の計算をしてやればいいわけですね。
で、その他にもまあいろいろやらないと行けないわけなのですが、
一旦コードを見ていきましょう。
まずArduinoのアナログピンの仕様ですが、入力時に0〜5Vの電圧が、
0〜1023の数値に変換されます。
これは電圧値を10進数で取得しているのですが、まずはこいつを電圧に直してやり、なおかつV単位なのでmV単位に変換します。
analog = analogRead(0);
//電圧に変換しmv単位に修正
vout = (analog*5*1000)/1023;
//温度変化の計算式
temp = (vout - 600)/10;
そのため上記の部分で、アナログ入力を取得し、電圧に直し、mV単位に変換し、温度に計算するという処理を挟んでおります。
理論はいいよ!
という方は、私のコードをコピーすればおそらく動くはずなので、
ぜひ試してみてください。
Arduinoとセンサを接続し、スケッチを書き込んだら
早速シリアルモニタを見てみます。
どうやら無事に温度が取得できているようです。
指でつまむと温度は上昇し、指を離すと温度は降下しました。
最後は22.6で安定していたので、部屋の温度は22.6℃。
ということがわかりました。
まあLM61CIZよりもより高精度なセンサも購入してあるので、
いずれそっちも遊んでみたいとは思います。
ということで、何に使うかはさておき、
今回はArduinoと温度センサの組み合わせを勉強できました。
久々にArduino使ったけど便利だね。
こりゃ何するにもArduino使ったほうが便利だなぁ。