人間でいう感覚器官のようなものここまでの技術部では、LEDの点灯制御、PWM制御による明るさ制御などを扱ってきました。ステップアップということで、センサを扱ってみたいと思います。センサとは?センサ(sensor)は、人間でいうと目、耳、鼻などの感覚器官の役割を果すもので、身の回りの様々な現象を感知することができます。自動ドアで人間を感知するものや、暗くなると自動的に点灯する街灯などがイメージしやすいですね。人間には感知できない情報を捉えるセンサもあります。赤外線センサや超音波センサなどです。センサとマイコンを組み合わせることで、電子制御の幅が大きく広がります。今回の技術部では、LM35という温度センサを用いてArduinoで温度測定をしてみます。LM35LM35の外観です。見た目はトランジスタとそっくり(というか同じ)なので、混同しないように注意が必要です。秋月電子などで100円程度で購入できます。LM35はArduino関連の書籍などにもよく登場するセンサで、その扱いやすさが特徴です。上の秋月のページからデータシートも見られますが、重要と思われる部分をピックアップしてみます。・4~20Vの電源電圧で動作(つまり5Vで動く→Arduinoからの電源供給で使える)・出力電圧は0mV+10mV/°C(気温0度で0mV、以降1度上昇毎に10mVづつ増加→リニアでわかりやすい)・-55~+150°Cまで測定できる(ただし精度は0.5°C程度→精密な測定には不向き)というかんじです。ようするに値段が安くてデータの処理がわかりやすくてある程度広い範囲の温度が測れるよってことです。電子制御で気温を測ってみるにはちょうどいいセンサといえると思います。100円で買えるので、間違って破壊しても精神的ショックが少なくすみます(重要)また、データシートをみるとわかりますが、このLM35は様々なパッケージのものがあって、金属制のものやICチップ状のもの、色々です。形状によってピンの配置が違うので逆電圧をかけないようによく確認して下さい。細かい話このセンサ、気温1度毎に出力電圧が10mVずつ上昇するので、出力電圧の値をArduinoで読み取ってやればそこから気温が計算できる、という仕組みです。いうことは、Arduinoでやることは「電圧の大きさを読み取る」ということになります。A/D変換Arduinoで電圧の大きさを読み取るためには、A/D変換という方法を使います。(アナログ-ディジタル変換)読み取る電圧はアナログ量、一方Arduinoマイコンが扱うのはディジタル量であるので、変換してやらないとArduinoで扱うことが出来ない、ということですね。ArduinoのA/D変換は、0~5Vの電圧を10ビットの分解能で変換します。1111111111という範囲ですね。1111111111を10進数に直すと1023になるので、簡単に言い換えると、ArduinoのA/D変換は、0~5Vの電圧を1024個に等分して読み取るということになります。4.9mVなので、Arduinoでは4.9mV以下の電圧変化は検出できない、という事になります。使ってみるプログラムではどう記述するかArduinoでA/D変換を行う場合、analogRead関数を利用します。対応いているピンはA0~A5ピンです。analogRead(0);こうすると、A0番ピンの電圧を読み取って整数型の変数valに格納します。出力電圧を読み取るそれでは、LM35の出力電圧をArduinoで読み取るとどんな値が見えるのか試してみましょう。配線このように配線を行います。前述の通り、ピン配置はパッケージによって異なるのでよく確認して下さい。delay(1000);}A0ピンの電圧を読み取って、そのままシリアルモニタに表示しているだけのプログラムです。シリアル通信については、以前の記事を参照してください。※A0~A5ピンについては、pinModeの設定は必要ありません。プログラムを書き込んでシリアルモニタを表示すると、A/D変換された電圧の値が表示されます。この値は、「5Vを1024等分した最小単位何個分か」、を意味しているので、ここから出力電圧を計算するには、以下の計算が必要です。