※本記事にはプロモーション(広告)が含まれています。
コンパレータのヒステリシスは、出力から+入力へ抵抗で戻し(正帰還)、しきい値を上と下で変えて出力のバタつきを止めるしくみです。抵抗の値は4ステップで計算でき、3.3V・0.90V/0.85V の例では R1 62kΩ・R2 22kΩ・RH 1.1MΩ になります。
コンパレータは、温度・明るさ・電池の電圧などが「決めた値を超えたか」を知らせるときに使う部品です。ところが、しきい値を1つにしたまま使うと、境目の近くで出力が何度も切りかわる「バタつき」が起きます。
この記事では、抵抗を1本足して2つのしきい値を作る方法を、目標の温度から抵抗の値を決めるところまで、かけ算と割り算だけで進めます。

この記事で作るもの:40℃で知らせ、35℃まで下がったら戻す
この記事のゴールは、温度センサの電圧をコンパレータでくらべ、39.9℃(0.899V)を超えたら出力を L にし、35.2℃(0.852V)まで下がったら H に戻す回路です。
温度センサ MCP9700 は、0℃で0.5V、1℃上がるごとに10mV(0.01V)上がる電圧を出します。40℃なら0.90V、35℃なら0.85V です。
コンパレータ LM393 の−入力にこの電圧を入れ、+入力には抵抗で作った「しきい値の電圧」を入れます。出力が L になったら、マイコンがファンを回す、といった使い方を考えます。
| 部品 | 使うもの | 役目 |
|---|---|---|
| 温度センサ | MCP9700(3.3V) | 温度を電圧に変える(10mV/℃) |
| コンパレータ | LM393(3.3V) | センサーの電圧としきい値をくらべる |
| R1・R2 | 62kΩ・22kΩ | しきい値のもとになる電圧を作る |
| RH | 1.1MΩ | 出力から+入力に戻し、しきい値を2つにする |
| RPU | 10kΩ | 出力を 3.3V に引き上げる(プルアップ) |
つまり、しきい値を2つ(0.899V と 0.852V)にして、その間(幅 約48mV)ではノイズで出力が切りかわらないようにします。

コンパレータの基本:+と−をくらべて、HかLを出す
コンパレータは、+入力が−入力より高ければ H、低ければ L を出します。途中の電圧は出さず、どちらかに切りかわります。
| 入力 | 出力 |
|---|---|
| +入力 > −入力 | H(高い電圧) |
| +入力 < −入力 | L(ほぼ0V) |
LM393 の出力は「オープンコレクタ」です。中のトランジスタが ON すると出力を GND につなぎ(L)、OFF すると出力が浮きます。浮いた出力を H にするには、外の抵抗(プルアップ抵抗)で電源につなぎます。
この記事の回路は、センサーの電圧を−入力に入れます。そのため、温度が上がってセンサーの電圧がしきい値を超えると、出力が L になります。
出力が「浮いている」とはどういう状態か、プルアップ抵抗の値の選び方がわかる
つまり、コンパレータは「くらべて H/L を出す」部品。LM393 は L しか自分で出せないので、プルアップ抵抗が必要です。

出力がバタつく原因:ゆっくり変わる信号にノイズが乗っている
しきい値が1つだと、入力がその近くをゆっくり通るとき、乗っているノイズのたびに入力がしきい値を上下にまたぎ、出力が何度も切りかわります。
温度はゆっくり変わります。一方、センサーの電圧には、電源や周りの回路から入る小さなノイズが乗ります。ここでは例として、上下に20mV(p-p)のゆれが乗っているとします。
抵抗2本だけでしきい値を1つ(0.864V)にすると、温度がその近くにある間、ノイズの山が超え、谷が下回るたびに出力が H と L を行き来します。
TI の資料でも、ノイズや信号のゆれ、ゆっくり変わる信号では、しきい値が1つだと出力に望まない切りかわりが出ると説明されています。
スイッチの接点がはねる「チャタリング」は、抵抗とコンデンサで細かいゆれを消す方法もあります。コンパレータの入力でもフィルタは役に立ちますが、ゆっくり変わる信号では、しきい値を2つにするヒステリシスが基本の対策です。
スイッチのチャタリングを、抵抗とコンデンサの値でどう消すかがわかる

ヒステリシスで止める:しきい値を上下で変える
ヒステリシスは、入力が上がるときのしきい値(0.899V)と、下がるときのしきい値(0.852V)を変えることです。一度切りかわると、しきい値がノイズでは届かない所まで逃げるので、出力は1回だけ切りかわります。
つまり、幅(約48mV)がノイズ(20mV)より大きければ、ノイズでは出力が戻れません。

入力と出力の関係は「ループ」になる
横軸に入力、縦軸に出力をとると、ヒステリシスのある回路は四角いループを描きます。温度が上がるときは右へ進んで0.90V で下に落ち、下がるときは左へ進んで0.85V で上に戻ります。
ループの中(0.85〜0.90V の帯)では、入力が同じでも、出力は「今の状態」によって H にも L にもなります。これがヒステリシス(前の状態を覚えている性質)です。

しきい値が動くしくみ:出力から+入力へ戻す(正帰還)
出力から+入力へ抵抗 RH を戻すと、出力が H のときは RH が 3.3V 側に、L のときは GND 側につきます。そのぶん+入力の電圧(しきい値)が上下に動きます。
+入力の電圧は、R1(3.3V へ)と R2(GND へ)の分圧で決まります。ここに出力からの RH が加わります。
| 出力 | RH がつながる先 | +入力の電圧(しきい値) |
|---|---|---|
| H(3.3V) | 3.3V 側(R1 と並ぶ) | 高くなる:0.899V |
| L(0V) | GND 側(R2 と並ぶ) | 低くなる:0.852V |
出力が H のとき、RH は RPU を通って 3.3V につながります。RPU は RH と直列になるので、計算では RH+RPU として扱います。出力が L のとき、出力は GND につながり、RPU には別の電流が流れるだけで+入力には効きません。
出力から+入力に戻すので「正帰還」と呼びます。オペアンプの増幅回路は出力を−入力に戻す「負帰還」で、向きが逆です。
つまり、RH が「出力の状態を+入力に知らせる」ことで、しきい値が2つになります。

しきい値の式:出力がHのときとLのときで2回計算する
しきい値は、分圧の式を2回使って計算できます。TI の資料(SNOA997A)と同じ考え方です。「∥」は並列の合成抵抗(a×b÷(a+b))を表します。
この記事の値を入れます。R1∥(RH+RPU)= 62kΩ∥1.11MΩ ≒ 58.72kΩ なので、VH = 3.3 × 22 ÷(22+58.72)≒ 0.8994V。
R2∥RH = 22kΩ∥1.1MΩ ≒ 21.57kΩ なので、VL = 3.3 × 21.57 ÷(62+21.57)≒ 0.8517V。
R1∥R2 = 16.24kΩ なので、幅 ≒ 3.3 × 16.24 ÷(16.24+1100)≒ 48.0mV。2つの式の差(47.7mV)とほぼ同じです。

抵抗の決め方の4ステップ:40℃でL、35℃でHに戻す
目標のしきい値2つ(VH・VL)から抵抗を決めるには、①k ②Vth ③R1 ④RH の順に計算します。かけ算と割り算だけで、二次方程式は要りません。
考え方の土台は1つです。RPU を無視すると、+入力の電圧は「R1・R2 の分圧の電圧 Vth」と「出力の電圧」を、1−k と k の割合で混ぜたものになります(k=R1∥R2 ÷(R1∥R2+RH))。出力が3.3V と0V で変わるので、幅は 3.3V × k、下のしきい値は Vth ×(1−k)です。
R2 の22kΩ は、R1 の計算結果が E24 の値(62kΩ)に近くなる組み合わせとして選びました。R2 を10kΩ にすると R1 は約28kΩ で、近い E24 の27kΩ と30kΩ のどちらでも少しずれます。R1 と R2 の大きさは、分圧に流れる電流(ここでは約39µA)と、入力の電流の影響のバランスで、目安として10k〜100kΩ の間から選びます。
オペアンプの「負帰還」の使い方と、正帰還との向きの違いを確かめられる

確かめ:E24の値とRPUを入れて、式に戻す
最後に、E24 に丸めた値と RPU 10kΩ を、しきい値の2つの式に戻して確かめます。
| 組み合わせ | 上がるとき VH | 下がるとき VL | 幅 |
|---|---|---|---|
| 目標 | 0.900V(40.0℃) | 0.850V(35.0℃) | 50mV |
| R1 62k・R2 22k・RH 1.1M(採用) | 0.899V(39.9℃) | 0.852V(35.2℃) | 48mV |
| RH だけ 1.0MΩ にすると | 0.903V(40.3℃) | 0.850V(35.0℃) | 52mV |
| RH なし(ヒステリシスなし) | 0.864V(36.4℃) | 同じ | 0mV |
温度は MCP9700 の式(0℃で0.5V、10mV/℃)で換算しました。センサー自体にも誤差があり、MCP9700A は0〜70℃で±2℃、MCP9700 は±4℃です(データシート)。抵抗の誤差(±1% など)とコンパレータのオフセット電圧でも、しきい値は少しずれます。
LM393 の入力の電流(最大250nA)が、+入力側の抵抗(R1・R2・RH の並列、約16kΩ)を流れると、最大で約4mV(約0.4℃)ずれます。気になるときは、入力の電流が小さい LM393B(最大25nA)などを選びます。

幅の決め方:ノイズのp-pより大きく、でも広げすぎない
ヒステリシスの幅は、入力に乗るノイズの p-p(山から谷まで)より大きくします。広げすぎると、元に戻るまでの温度の差が大きくなり、反応が遅くなります。
DigiKey の技術フォーラムの記事では「ヒステリシスの量は、システムで予想されるノイズの最大の p-p より大きくする」と書かれています。TI のブログでも、幅は入力のノイズとバタつきやすさに合わせて決めるとしています。
| 幅 | 結果 |
|---|---|
| ノイズより狭い(例 10mV) | ノイズの谷が戻るしきい値に届き、まだバタつく |
| ノイズより広い(この例 48mV) | ノイズでは戻らない。1回だけ切りかわる |
| 広すぎる(例 200mV = 20℃) | 40℃で入って、20℃まで下がらないと戻らない |
ノイズの大きさは、オシロスコープで入力を見て、上下のゆれ幅を読みます。この記事の20mV は計算のための例です。実際の回路で測って、その値に余裕を足して幅を決めます。
オシロスコープの画面から、電圧の大きさ(p-p)や周期を読み取る方法がわかる
つまり、幅は「ノイズの p-p より大きく、目的の温度差より小さく」。この例ではノイズ20mV に対して約48mV(約4.8℃)にしました。

早見表:RHと幅(R1とR2の並列が10kΩのとき)
R1 と R2 の並列(R1∥R2)が10kΩ のときの、RH と幅の目安です。答えだけ欲しいときに使ってください。
| RH | 幅(Vcc 3.3V) | 幅(Vcc 5V) |
|---|---|---|
| 100kΩ | 300mV | 455mV |
| 220kΩ | 143mV | 217mV |
| 470kΩ | 69mV | 104mV |
| 1MΩ | 33mV | 50mV |
| 2.2MΩ | 15mV | 23mV |
R1∥R2 が20kΩ なら幅はほぼ2倍、5kΩ ならほぼ半分です。表は RPU を無視した目安で、幅の中心(2つのしきい値のまん中)も少し動きます。最後は2つの式で確かめます。

プルアップ抵抗RPUも、帰還の一部になる
オープンコレクタ(オープンドレイン)の出力では、出力が H のとき RPU と RH が直列になります。RPU は RH よりずっと小さく(目安は20分の1以下)します。プルアップ先の電圧も、上のしきい値を変えます。
| プルアップ | 上がるとき VH | 温度 |
|---|---|---|
| 10kΩ を 3.3V へ(採用) | 0.899V | 39.9℃ |
| 330kΩ を 3.3V へ(大きすぎ) | 0.892V | 39.2℃ |
| プルアップ先を 5V に | 0.924V | 42.4℃ |
RPU が大きいと、H のときに RH へ届く電圧が下がり、上のしきい値も下がります。TI の資料でも、オープンドレインの場合は RPU(資料では R3)を RH と直列に入れて計算しています。
プルアップ先を、コンパレータの電源(3.3V)と違う電圧(5V など)にすると、H のときに RH を押す電圧が変わり、しきい値がずれます。計算の Vcc を、プルアップ先の電圧に置きかえて計算し直します。L のとき RPU に流れる電流は 3.3V ÷ 10kΩ = 0.33mA で、LM393 の出力で十分に流せます。
つまり、RPU は小さめ(RH の20分の1以下)に。プルアップ先の電圧を変えたら、しきい値も計算し直します。

オペアンプとの違い:コンパレータの代わりに使うときの注意
コンパレータとオペアンプは記号が同じ三角形ですが、作られた目的が違います。くらべるならコンパレータ、増幅するならオペアンプが基本です。
| コンパレータ(LM393) | オペアンプ(LM358 など) | |
|---|---|---|
| 目的 | 2つをくらべて H/L | 負帰還で増幅・フォロワ |
| 帰還のかけ方 | 正帰還(ヒステリシス) | 負帰還(出力を−入力へ) |
| 出力 | オープンコレクタが多い | 自分で H も L も出す |
| 切りかわりの速さ | 速い | 遅め(増幅で安定させる作りのため) |
TI の LM324・LM358 の設計ガイドでは「オペアンプは一般にコンパレータに向かない」としたうえで、使わない回路が余っている・速さが要らない、といった理由で使うことはある、と書かれています。
代わりに使うときは、①速さが足りるか、②+と−の入力の間にダイオード(入力保護)がないか、③出力の H・L の電圧がつなぎ先に合うかを、データシートで確かめます。TI のブログでは、入力の間にダイオードがある品種は、差が約0.7V を超えると片方の入力がもう片方を引っぱり、正しくくらべられないと説明しています。

ブレッドボードで組む:LM393と抵抗4本
温度センサの代わりに可変抵抗で2番(−入力)の電圧を動かし、しきい値を確かめます。LM393 は溝をまたいで挿し、8番を 3.3V、4番を GND につなぎます。
RH は1番(出力)と3番(+入力)をつなぎます。2番(−入力)につなぐと正帰還にならず、ヒステリシスが付きません。抵抗の色は、62kΩ が青・赤・橙、22kΩ が赤・赤・橙、1.1MΩ が茶・茶・緑、10kΩ が茶・黒・橙です。
LM393 の資料では、電源ピンにバイパスコンデンサを入れること、出力の配線と−入力の配線を並べないこと(発振を防ぐ)がすすめられています。

組んだら測る:可変抵抗を回して、切りかわる電圧を読む
テスターの黒を GND に当てたまま、赤を2番(可変抵抗の真ん中)に当て、可変抵抗をゆっくり回します。1番の電圧が切りかわる所を見ます。
| 測ること | 計算の値 |
|---|---|
| ① 2番を上げていき、1番が L になった所 | 約0.90V |
| ② そこから下げて、1番が H に戻った所 | 約0.85V |
| ③ ①−②(幅) | 約48mV |
| ④ 3番(+入力)の電圧:出力 H のとき・L のとき | 0.90V・0.85V |
テスター1台で測るときは、2番と1番を交互に当てるか、1番に LED(抵抗つき)を足して切りかわりを目で見ます。④で3番の電圧が出力に合わせて動けば、正帰還が効いています。数値は計算の値で、抵抗の誤差で少しずれます。

よくある失敗4つ:帰還の向き・プルアップ・入力範囲・幅
ヒステリシスが効かないときの原因は、帰還の向き・プルアップ抵抗の忘れ・入力の電圧の範囲・幅の狭さの4つが代表です。
失敗1:RHを−入力に戻す
RH は必ず+入力に戻します。−入力に戻すと正帰還にならず、しきい値が2つになりません。
失敗2:プルアップ抵抗を忘れる
LM393 はオープンコレクタなので、プルアップ抵抗がないと出力が H になれず浮いたままです。ヒステリシスの計算も成り立ちません。
失敗3:入力の電圧の範囲を超える
LM393 が正しくくらべられる入力の範囲(同相入力電圧範囲)は、0V〜電源−1.5V(25℃)、全温度では0V〜電源−2V です。3.3V なら1.3V(全温度)までに収めます。この記事の0.85〜0.90V は範囲の中です。
失敗4:幅がノイズより狭い
幅10mV でノイズが20mV なら、まだバタつきます。ノイズの p-p を測って、それより広くします。
同相入力電圧範囲やオフセット電圧が、データシートのどこに書いてあるかがわかる
つまり、バタつきが止まらないときは「3番(+入力)の電圧が、出力の H・L で動くか」を最初に測ると、原因を早くしぼれます。


