オペアンプで作るコンパレータ
コンパレータ
コンパレータとは、オペアンプの非反転増幅回路において、増幅率を無限大にしたものである。よって、0V〜5Vまで変化するアナログ信号があったとして、それをコンパレータに通すと0Vか5Vのどちらかの信号を出力するようになる。つまり、アナログ信号をデジタル信号のHighかLowへと変換するので、一種のADコンバータとも言える。また、HighかLowへ振り分ける判断(しきい値)は、反転入力に接続する電位で決めることができる。
回路図
さて、今回は低電圧でも動作するようなコンパレータ回路を組んでみた。こちらがその回路図である。上段のオペアンプがコンパレータで下段がバイアス回路である。 この回路図では電源電圧の丁度半分をバイアス電位としている。また、非反転入力の信号もバイアス電位が基準となるため、結果として入力信号がプラスの時にHighとなり、マイナス以下ではLowとなる。
解説
オペアンプは低価格な4558でも良いが、4.5V以上の電源が必要である。3.3V電源でも動かせるようにしたいため、低電圧駆動のオペアンプ022を採用した。また、4558などの普通のオペアンプだとLowの出力が0Vにならないが、022はちゃんと0Vまで下がってくれる。
今回もまた、ブレッドボードで使いやすいようにモジュール化してみた。このコンパレータとSeeeduino XIAO(Arduino互換機)を組み合わせて周波数カウンタを作ってみた。
他にも、コンパレータはこんな使い方があるので参考に。
コンパレータの高速化
コンパレータを使うことで、アナログ信号がHIGH/LOWのどちらかに変換されるため、デジタル入力のインタフェースとして使うことができる。つまり、コンパレータは一種のアナログデジタル変換器とも言える。Arduinoで周波数カウンタを作ろうと思ったのだが、100kHz以上の高周波になるとコンパレータの速度が問われるようだ。そこでコンパレータの高速化を図ってみた。
回路図
解説
前回のコンパレータと基本は同じでオペアンプを変えただけ。高速化の秘訣はズバリ、スルーレートの高いTL072を使ったこと。Arduinoで作る周波数カウンタのインタフェースに使う予定なので、超低周波(0.1Hz)の入力も想定してカップリングコンデンサの値を大きくした。また、Arduinoのデジタル入力へ接続できるようにするには、0Vか3.3V(または5V)の信号でなければならない。そこで、出力にはクランプ回路と呼ばれる回路を入れてある。このクランプ回路を入れることで、この場合だと基準電圧が0Vへ持ち上がり、上限3.3Vの幅で信号が振れるようになる。
さて、この回路を組んでモジュール化してみた。オペアンプを変えられるようにICソケットを取り付けてある。オシロスコープで波形を確認することで、オペアンプの性能測定にも使えそうなモジュールである。
出力波形
よく使う手持ちのオペアンプ072・4558・5532・022を入れ替えて、コンパレータの立ち上がりの波形を観察してみた。写真は、オペアンプTL072を使ったコンパレータに約130kHzの正弦波を入力した時の波形だ。 他にも5532でもキレイな矩形波を確認できたが、4558や022では矩形波自体が出力されなかった(もしかしたら、カップリングコンデンサの値が大きすぎたのかも)。 ちなみに発振器はコルピッツ発振回路を使ったもの。詳しくはこちらを参考に。
各オペアンプのスルーレート(立ち上がり速度)は次の通りである。
オペアンプ | スルーレート(V/μs) |
---|---|
072 | 13 |
4558 | 1 |
5532 | 8 |
022 | 0.5 |
表を見ても分かる通り、072や5532が矩形波の再現に優れている。TL072はFET型の入力で、安く購入できるのでかなり使えるオペアンプである。