ArduinoにLCDキャラクタ・ディスプレイ・モジュールを接続する(5)温度をLCDに表示
■超小型LCDキャラクタ・ディスプレイ・モジュールをArduinoで使う(2)測定した温度をLCDに表示する
●半導体温度センサLM35
次に示す半導体温度センサLM35DZは、TI (テキサス・インスツルメンツ)に吸収されたNS(ナショナルセミコンダクター)が開発販売していた使いやすい温度センサです。現在、TIから供給されています。
このセンサは温度の変化に対して10mV/1℃感度で、0℃の出力が0Vを原点とする線形の出力が得られます。そのため、センサから読み取った電圧値が小数点の移動だけで温度の値になります。
●プラス電源だけでは2℃から150℃まで
電源がプラス電源だけの場合は、2℃から150℃までの範囲が測定範囲です。
- 2℃のとき20mVの出力
- 150℃の時は1500mVの出力
となります。
マイナス2Vくらいの電源があると-50℃までの氷点下の温度も測定できます。
●LM35DZをブレッドボードにセット
LM35DZを次に示すようにブレッドボードにセットし、LM35DZのVoutとArduinoのA1端子を接続します。+Vはブレッドボードの5Vに、GNDはブレッドボードのマイナス電源(GND)に接続してLM35DZのセットは完了です。
●Arduinoのアナログ入力でセンサの出力を読み取る
LM35DZの出力は、仕様上は-500mVから1500mVの範囲の電圧です。今回はマイナス電源を用意していないので20mVから1500mVの電圧となります。この出力電圧を、Arduinoのアナログ入力ポートA1で受け取ります。
センサとアナログ入力ポートA1との接続は、次に示すように黄色のジャンパ線で行いました。
●入力値をLCDモジュールに表示する
Arduinoのアナログ入力ポートは入力電圧を、基準電圧の1/1024の電圧でディジタル化します。LCDキャラクタ・モジュールには次の値を変数名の見出しと共に表示します。
- アナログ入力ポートから読み取った値 int型 aind
- 読み取った値を電圧値に変換した値 float型 aindv
- 換算し得られた温度の値 float型 tmp
●テスト・プログラム
テスト・プログラムは次のようになります。最初にライブラリLiquidCrystalを利用するためのヘッダ・ファイルの読み込み、LiquidCrystal型の変数(オブジェクト)lcdの定義とピンの割り当てを行います。
その後、変数の定義を行い実際の関数を記述するための準備を行います。
◆初期化処理 setup()
setup()関数では、今回はlcd.begin(16,2)の表示範囲を設定する処理だけです。アナログ入力処理は初期化の処理は必要ありません。LCDモジュールとの処理のためのディジタル・ポートの初期化は、LiquidCrystalライブラリの中で行っています。
◆メインの処理 loop()
メインの処理は、最初にアナログ入力ポートA1からセンサの出力をaindに読み取ります。読み取った値に基準電圧の電源電圧5000.0mVを1/1024した値をかけて電圧値 aindv を求めます。aindは整数ですが5000.0は実数なので、計算結果は小数点以下の値も格納できる実数のfloat型の演算を行います。
◆温度の算出
mV単位のセンサの出力電圧を1/10にすれば、摂氏の温度の値になります。
◆LCDモジュールへの出力
LCDモジュールへの出力は、lcd.home()関数で表示をクリアして次の表示位置を上段の左端にセットします。次はlcd.print()関数で見出しと変数を表示し、lcd.setCursor()で次の表示位置を指定して三つの変数を表示します。その後500msの時間を待ちします。以上を繰り返し次のように表示します。
次回、センサのアナログ入力時に必要となる基準電圧について、ほかの方法も検討します。
(2016/4/11 V1.0)
<神崎康宏>
バックグラウンド
基準電圧の1/1024;ArduinoUNOは10ビットの分解能をもつA-Dコンバータが搭載されています。2^10=1024です。基準電圧は、GNDの0Vと電源電圧の5Vを指定しています。
int型;読み取ったデータは整数です。
float型;小数点を含む数値は実数を使います。
ヘッダ・ファイル;プログラムにライブラリなどを利用するときに記述するのがヘッダ・ファイルです。この中身もテキストなので、自分で読むことができます。
基準電圧;Arduino Unoのデフォルトは電源電圧が指定されます。5Vといっても、少しの誤差があります。マイコンATMega328の内部には1.1Vの基準電圧があります。より正確を期する場合は、AREFピンに変動のとても少ない安定した電圧を加えて基準電圧として利用します。