今岡通博氏による、組み込み開発に新しく関わることになった読者に向けた組み込み用語解説の連載コラム。第12回は、オペアンプをコンパレーターとして活用する事例を紹介する。
当初、組み込み技術者に向けたオペアンプの系統的な解説記事を書こうと思ったのですが、そのようなものは既に書籍やWeb上などで数多く出回っています。オペアンプの原理や動作などは他の情報ソースに任せるとして、筆者が過去に経験した事例を交え、組み込み技術者に役立つであろうオペアンプの活用事例を紹介したいと思います。
アナログ回路で2つの電位を比べることを考えてみましょう。電圧aより電圧bの方が高ければ1、また電圧aより電圧bの方が低ければ0を返す関数を考えてみましょう。
これをプログラム言語で表現すると以下のリスト1のようになるでしょう。C言語風に書いてみました。
int func(float a, float b){ if (a<b) return (1) else return(0) }
このようにアナログ回路の動作をプログラムで記述できそうなのですが、一つだけアナログ回路とデジタル回路では決定的に異なる点があります。それは、aとbの2つの電位が等しくなることが絶対にないことです。
このように比較するだけであればアナログ回路だけで行えるので、簡単な用途であればマイコンなしでシステムを構築できそうですね。
コンパレーターは比較器とも呼ばれ、2つの電位差入力の大小によって出力が1または0になるデバイスです。コンパレーター専用のデバイスもありますが、今回は汎用的なオペアンプをコンパレーターとして用います。
今回は最もポピュラーなオペアンプの一つである「LM358」を用います。開発元は旧ナショナル・セミコンダクター(National Semiconductor、NSまたはNSCと略記)ですが、現在は世界中の半導体メーカーで製造されています。
本来オペアンプは、アナログコンピュータ(現在はなぜかデジタルコンピュータが主流ですが)の演算素子として開発されました。デジタルコンピュータにその牙城を奪われてからオペアンプは、増幅器、信号発生器、フィルター、コンパレーターなどの用途に追いやられていきました。
図1に、LM358のパッケージに収められた回路のピンアサインを示します。
筆者は8ピンのDIPピッチのパッケージのものを使っています。1つのパッケージの中に2つのオペアンプが入っています。いわゆるデュアルオペアンプと呼ばれるものです。単一電源で動作し、3~32Vの電圧で動作させられます。オペアンプが出始めのころは、正電源と負電源の両方を用意する必要があったので大変でしたが、最近のオペアンプは単一電源とデュアル電源の両方に対応した品種が用意されています。このLM358も両方に対応しています。
信号を増幅できる周波数特性は最高で約1MHzまであり、オーディオ用途で使うのであれば申し分ない性能です。
汎用のオペアンプであるLM358をコンパレーターとして動作させてみます。図2を使ってオペアンプのコンパレーターとしての動作を説明します。
オペアンプ(今回はコンパレーターとして動作させる)には、2つの入力と1つの出力(out)があります。(+)の入力の電圧が(-)の入力電圧を上回ると出力は1となります。また逆に(-)側の入力電圧が(+)側の入力電圧を上回ると出力は0となります。この動作をコンパレーターとして用いる時は(+)側を基準電圧(ref)とし、(-)側を比較したい電圧の入力(in)とします。
例えば以下のような事例で考えてみましょう。部屋の温度がある値を下回ればヒーターをオンにし、その値を上回るとヒーターをオフにするシステムを考えてみます。温度センサーとしては、サーミスタという温度変化で抵抗値が変わる素子を使います。ヒーターのオンオフ制御は、コンパレーターの出力を基にトランジスタなどを使ってリレーで駆動するものとします。
抵抗と直列につなぐサーミスタの一方の端子にグランドを、もう一方の端子を正電源に接続します。この場合、サーミスタと抵抗の間から、サーミスタの抵抗値の変化に起因する電圧の変化を温度変化の値として取り出すことができます。
しかし、このままではヒーターのオンとオフを短い時間で繰り返す場合があります。周辺の環境によっては発振現象を起こす可能性もあり得ます。
ですので、コンパレーターに適切なヒステリシスを持たせて制御を安定させましょう。ヒステリシスとは、オンになる電圧とオフになる電圧のしきい値に一定以上の電位差を設けることです。この場合、オンになる電圧よりオフになる電圧を高めに設定すれば、制御系の動作を安定させられます。
図3は抵抗値からしきい値を求めるものです。
出力outが0から1に変わるしきい値は以下の式からも求められます。ただし、Vrefは基準電圧で2.0V、Vnは出力が0の時の電圧で0.620Vです。なお抵抗はR1、R2とも6.8KΩです。
しきい値(0から1)=(R1*Vref+R2*Vn)/(R1+R2)
この式を基に、出力が1から0に変わる場合のしきい値が求まります。ただし、Vpは出力が1の時、電圧で3.635Vです。
しきい値(1から0)=(R1*Vref+r2*Vp)/(R1+R2)
Copyright © ITmedia, Inc. All Rights Reserved.