この投稿は、建築発明工作ゼミ2009 『温度センサ』をもとに、新しく書き直したものです。 |
デュアルオペアンプLMC6032IN オペアンプを使って、温度センサの最大出力電圧1Vを5V、五倍に引き上げてみます。 簡単に言うと、1℃につき10mV出力であったのを、回路をいじって1℃につき50mVの出力にしてやるということです。アナログ入力値1に対する分解能は、 100℃ / 1024 = 0.0976... つまり、0.09℃単位で計測できるようになります。 |
||||||
|
||||||
図1のように、オペアンプは基本的に5つのピンを持っています。
入力された電圧の増幅率(ゲイン)は、二つの抵抗値の比によって決まります。 オペアンプは、自身に入力される電源よりも高い電圧を出力することはできません。 例えば、オペアンプのプラス電源に5V、マイナス電源をGNDに接続するとします。入力が1V、増幅率を10倍に設定しても、理論的には出力は5Vまでしか増幅されません。 しかし、オペアンプの増幅率は105倍というような大きさのため、差動入力電圧がわずかでもあると出力は+か−の最大値しか出力できません。 実用的に使用するには、ネガティブフィードバックという方法を使います。 オペアンプの回路には、大別して「反転増幅回路」と「非反転増幅回路」の二種類があります。 非反転増幅回路は入力された電圧をそのまま増幅(プラスだったらプラス、マイナスだったらマイナス)して出力します。 反転増幅回路は入力された電圧を反転増幅(プラスだったらマイナス、マイナスだったらプラス)して出力します。 反転増幅回路を組む時はマイナス電源が必要になる(マイナス電源ピンに回路のGNDを基準としてマイナスの電圧をつなぐ)ため、簡単には回路を組めません。 非反転増幅回路をプラスの単源源で使用すれば、マイナス電源は回路のGNDに接続すればよいので扱いやすくなります。 図2は非反転増幅回路です。 プラスとマイナスの差動入力ピンの電圧差を極性をそのままに増幅して出力しますが、出力の途中で抵抗R1を通し、出力信号をマイナス差動入力ピンにフィードバックしています。 これにより、差動電圧差がなくなるように働き、結果として二つの抵抗R1とR2で設定した増幅率に落ち着きます。
温度センサLM35DZとオペアンプLMC6032INを使用し、回路を組んでみます。 |
||||||
図3 オペアンプはLMC6032を使用しました。 図3の通り、このLMC6032INには二つのオペアンプが内蔵されています。V+ピンは共通のプラス電源ピン、V-は共通のマイナス電源ピンです。今回は一つしか使いません。 回路図 |
||||||
考え方としては、まず計測温度範囲を決めます。0℃〜100℃とします。 温度センサLM35DZは1℃あたり10mV、100℃でちょうど1Vです。Arduinoのアナログ入力最大電圧5Vまでで、フルレンジで使いますから増幅率は5倍です。とすると、上記の式に当てはめて、 5V(出力電圧) = (1 + (R1 / R2)) × 1V(差動入力電圧) これを解くと、抵抗の比は R1 : R2 = 4 : 1 となります。 LM35DZの+VsピンとLMC6032のV+ピンに5Vの電圧をかけます。C というのはコンデンサです。電気を溜めて吐き出す役割があり、上下する不安定な電気の流れを安定化させるバイパスコンデンサとして機能します。 抵抗R0は、R1とパランスをとるために使っています。この回路では、オペアンプのマイナス入力端子をGNDにつないでいるので、入力も出力もGNDとの電圧差が基準となります。 スケッチ |
||||||
|
||||||
シリアルモニタで表示してみると、以下のようになりました。 |
||||||
だいたい0.1℃単位で変化しているので、おおむね精密になったと思います。 ついでに、以下のようなスケッチも試してみます。 1秒ごとに摂氏温度を計測し、10秒ごとに平均摂氏、最大摂氏温度、最小摂氏温度をシリアルモニタに出力します。 日付時刻も表示するために、Datetimeライブラリを使ってみます。 DateTimeライブラリは標準でArduinoIDEにインストールされていないので、以下のスケッチをコピーして実行しようとするとエラーになります。 以下のリンクからDateTimeライブラリをダウンロードして解凍し、指定のディレクトリ内に配置しなければなりません。 こちらからダウンロード ダウンロードして解凍したら、DateTimeというフォルダができます。 その中のDateTimeフォルダとDateTimeStringsフォルダを、以下の場所にコピーします。 (Macの場合) ○○○(ユーザディレクトリ)/書類/Arduino/library/ スケッチ |
||||||
|
||||||
DateTimeライブラリは、
の部分で初期値をセットしなければなりません。スケッチを実行するごとに新しく日付を記述し直し、アップロードさせます。 また、Arduinoの水晶振動子で物理的にカウントしているため、一日に数秒のずれが出るそうです。 |
||||||
|
2 コメント:
質問です。
回路図と写真では、少し違うように見えます。青のピンやLM35DZのGNDから伸びている謎のピンは何なのでしょうか?
教えてください。
これは、積層セラミックコンデンサですね。回路図には入れていません。
バイパス用途に組み込んでいるようですが、今回の回路にはあまり意味を持たないため、組み込みは必須ではありません。
コメントを投稿