Contents
入力インターフェース回路
1.アナログ信号変換(ADCに接続する前に考慮すべき内容)
アナログ信号を大別すると、「電圧」の信号と「電流」の信号に大別できます。最初に、「電圧」の信号処理について解説します。アナログ出力のセンサの出力信号を扱う場合に必要な回路です。センサの出力信号をアナログ回路によって処理し、ADC(Analog to Digital Converter)を介して、デジタル信号にして、その後はデジタル信号として処理することが一般的です。
MSMにはADC(Analog to Digital Converter)専用のICを搭載しています。また、MSMをアナログモードで動作させた際には、マイコン(ESP32)のI/O(ADC)を使って信号を読み込むことができます。共に「電圧」の信号が対象です。
これらのADC回路にアナログ信号(センサ出力)を入力する際には、ADCの入力範囲とセンサの出力範囲の関係を考えます。①センサの出力範囲がADCの入力範囲よりも大きな場合は、電圧分圧回路を用いて、ADCの入力範囲内に収めることが必要です。②センサの出力範囲がADCの入力範囲に比べて小さすぎる場合、下図に示すように間に増幅回路を設けて、ADCの入力範囲を十分に使えるようにすることが必要です。小さすぎるままだと、ADC回路の分解能力を有効に使うことができなくなります。③センサ出力範囲とADCの入力範囲がずれる場合(図の下)は、間にオフセット回路を挿入して、ADC回路の入力範囲にセンサの出力範囲が収まるようにします。
アナログ信号の処理
①抵抗分圧回路
センサの出力電圧範囲がADCの入力範囲を超える場合、抵抗分圧回路を用いて、センサの出力電圧範囲がADCの入力範囲内に収まるようにします。回路は、下図のように抵抗を2本使用します。
抵抗分圧回路(2本の抵抗を使った回路)から考えると、センサの出力がVin、ADCへの入力がVoutに相当します。センサ出力、ADCの入力電圧を、それぞれ、Vin、 Voutとすると、以下の式が成り立ちます。
Vout=R2/(R1+R2)Vin
Vinが0~5V、Voutが0~3.3Vの場合、
Vin / Vout = 3.3 / 5 ≒2 / 3 = R2 / (R1+R2)
R2=2、R1+R2=3
∴ R1=1
となり、R2は、R1の約2倍の抵抗が、必要となります。
抵抗分圧回路における出力電圧は用いる抵抗の抵抗値の比だけで決まります。理論だけで言うと、1Ω:2Ω、1MΩ:2MΩ、等の組み合わせでも良いことになります。しかしながら、例えば、1Ω:2Ωとすると、抵抗分圧回路自体に流れる電流は、Voutが5Vの時、1.6Aとなり、センサ自体の出力能力を上回るほどの大きな電流が流れてしまい、センサ自体のドライブ能力を超え(センサから必要な電流を流せない)、センサの出力素子を破壊してしまう可能性が大きくなります。また、逆に1MΩ:2MΩなど、非常に大きな抵抗値とすると、ADCを十分にドライブすることができなくなります(ADCが必要とする電荷[電流]を短時間で流せない)。
以上のことから、センサのドライブ能力の範囲内で、かつ、ADCを十分ドライブできるように、実回路では、R1, R2ともに数10kΩ程度の抵抗器を用います。具体的には、この事例では、R1 = 5 kΩ、R2 = 10 kΩを使用すれば良いでしょう。
アナログ機器の0~10V出力を、0~3.3VのマイコンADCに接続する際のR1,R2は、以下のようになります。
図2.0~10Vを0~3.3Vに変換する場合の抵抗分圧回路
Vinが10V、Voutが3.3Vの場合、上記(1)式に当てはめると
Vout / Vin = 3.3 / 10 ≒1 / 3 = R2 / (R1+R2)
R2=1、R1+R2=3
∴ R1=2
R1=10 kΩとすると、R2=5 kΩとなります。
②信号増幅回路
信号増幅回路・オフセット回路・バッファ回路(後述)にはOPアンプ(オペアンプ)を用います。OPアンプには、2つの入力端子があり、その回路構成によって、反転増幅回路・非反転増幅回路になります。下図の左上が一般的な反転増幅回路です。増幅率は、R1とR2との比率で決まります。 オフセット回路は、下図の右上のようにOPアンプの+入力端子に対して、オフセット電圧(Vref)を入力します。下図のシーソーの支点がオフセット電圧、支点からのそれぞれの斜辺長さ(シーソーの板の長さ)の比が増幅率に相当します。
反転増幅回路の増幅率とオフセット電圧との関係は、下図の右下のようなシーソーのような関係になります。オフセット電圧で、無入力時の出力電圧が決まり、入力信号が増えると出力信号が減るという反転した関係になりますので、ADCでデジタル信号(数値)として取り込んだ後、マイコン内で演算した後、後段へ出力すると良いでしょう。
図3. OPアンプ
OPアンプは、入力インピーダンスが非常に高く、また増幅利得も大きいため、センサ回路には適したICです。下記の回路は、OPアンプの代表的な回路で、非反転増幅回路と呼ばれます。この回路の増幅度は、抵抗R1とR2の値で決定されこの抵抗を適切に決めることにより、信号増幅回路や、バッファ回路(利得0 dB)となります。
図4.非反転増幅回路(出典:フリー百科事典「ウィキペディア(Wikipedia)」
③オフセット回路
出力電圧をオフセット(レベルシフト)する場合は、差動増幅回路で構成します。
オフセット回路は、センサーの出力が、±1.0 Vなどのように、R-MSMの読み込めない範囲に出力が存在する場合、R-MSMが読み取り可能な電圧範囲に変換する場合に使用します。
下図は、OPアンプの差動増幅回路を用いたオフセット回路です。赤破線の右側が差動増幅回路です。左半分の回路はレベルシフトする電圧を安定化させるために、次項で説明するボルテージフォロワ回路を用いています。下記回路で、
R1=R3=10kΩ : R2=R4=50kΩ
で増幅度は、
R2/R1=R4/R3=5.0(倍)
となります。差動増幅回路では、OPアンプの反転入力と非反転入力の電圧差を入力となるので、反転入力側の電圧を調節することで電圧差を広げるのに必要な電圧(=レベルシフト電圧/増幅度)を入力します。
下図の例では、レベルシフトを1.5Vとしているので、負側電源電圧(VCC-)を分圧し、-0.3Vを反転入力側に引加しています。これにより出力側では、1.5Vレベルシフトすることになります。
図5.オフセット(レベルシフト)回路
④バッファ回路(緩衝増幅回路、ボルテージフォロア回路)
センサとバッファ回路との関係を下図に示します。例えば、抵抗値変化型のセンサを使う場合、下図の左上や左下のように基準になる抵抗と直列にして使います。外界からの影響により抵抗値が変化することで、出力(抵抗との接点)が変化します。これを、次段の回路(増幅回路など)に接続するのですが、次段の回路特性が前段のセンサ回路側へ影響を及ぼし、センサ出力が変化する場合があります。このような、次段の状態を前段の回路(センサ)に及ぼさないようにするために用いるのがバッファ回路です。
上述したADC専用ICでは、前段に影響を及ぼさないように設計されているので、バッファ回路を設ける必要はまずありません。
図6. センサとバッファ回路との関係
以上が「電圧」の信号に対する回路です。次は「電流」の信号について説明します。
電流信号の取り扱いは、以下にのべるように、I-V変換回路(電流電圧変換回路)を用いて、電圧信号にして、それ以降は電圧信号として処理します。
⑤I-V変換回路(4-20mA出力の対応)
センサーや制御機器の中には、電流の大きさで出力するものがあります。一般的に4-20mAの範囲で出力される機器が多いです。電流出力はノイズ耐性が良いので、配線が長くなる場合には有効な方法です。また、断線した場合、電流が流れなくなるので、出力側の機器の故障(断線)の発見が容易です。
R-MSMに入力する場合、センサや機器の出力電流を電圧に変換する必要があります。つまり、I/Oとして電流電圧変換回路(I-V変換回路)を追加します。具体的には、R-MSMの入力端子とGND端子の間に、抵抗を接続し、基本的には最大出力電流の20 mA 時に抵抗の両端に3.3 V の電圧が発生するような抵抗値をえらび、接続します。このような用途の抵抗をシャント抵抗と呼びます。応用として、センサ側の出力が、10mAまで出力されないならば、MSMのADCの入力幅を最大限使えるように抵抗値を設定します。その後、具体的な計測値への変換は、PDHのNode-REDのフローで行います。
例えば、オームの法則より、接続する抵抗は下記の様になります。
図7.I-V変換回路(4-20mA出力の対応)
I-V変換用の抵抗(シャント抵抗)は、温度特性の良い(温度依存が少ない)金属皮膜抵抗をつかい、必ずR-MSMのコネクタ側近傍に接続してください。
2.アナログフィルター(LPF, HPF, Notch)
信号に、外来ノイズや特定の周波数のノイズが、乗ってしまうことがあります。また、例えば空気の温度を測る場合、測定位置の空気の流れが一様でないため、細かく変動し大きな変化が見えにくくなる場合があります。
このような場合、アナログフィルターを測定回路に挿入し、余分な周波数域の変動を減衰させてしまう方法があります。ADCで読み込み後ソフトウェアでフィルター処理を行うデジタルフィルターもありますが、アナログフィルターは、デジタルフィルターに対して、
- 入出力はリアルタイム処理 (デジタルフィルターは、処理時間の遅れが発生)
- 高周波帯域の信号に対応 (デジタルフィルターでは、高速処理が可能なプロセッサが必要)
等のメリットがあります。
アナログフィルターの種類としては一般的に、
・ローパスフィルター(LPF : Low Pass Filter)・・・ 遮断周波数より高い周波数成分の信号を遮断
・ハイパスフィルター(HPF : High Pass Filter) ・・・ 遮断周波数より低い周波数成分の信号を遮断
・ノッチフィルター (Notch Filter)・・・ 特定の周波数成分の信号を遮断
・バンドパスフィルター(BPF : Band Pass Filter) ・・・ 特定の周波数帯域成分の信号のみ通過
があります。
バンドパスフィルターは、ローパスフィルター(以降LPF)とハイパスフィルター(以降HPF)を組み合わせることで実現可能で、ここでは、LPF, HPF、Notch Filterについて説明します。
①LPF(Low-Pass Filter)
LPFは、高い周波数域、例えば 1kHz 以上に発生する不要雑音(ノイズ)を抑制するために使用します。
遮断周波数flp は、以下の図に示す式で計算可能です。実際には、遮断周波数flpと抵抗値Rまたはコンデンサ容量Cを決め、それぞれの値を決定します。
図8.LPF回路とゲイン曲線
②HPF
HPFは、低い周波数域、例えば 20Hz 以下に発生する不要雑音(ノイズ)を抑制するために使用します。
遮断周波数fhp は、以下の図に示す式で計算可能です。実際には、遮断周波数flpと抵抗値Rまたはコンデンサ容量Cを決め、それぞれの値を決定します。
図9.HPF回路とゲイン曲線
③Notch Filter
Notch Filterは、特定の周波数、例えば 50 Hzや60Hzなど電源周波数などが信号に混ざってしまった場合に発生する不要雑音(ノイズ)を抑制するために使用します。
遮断周波数fn は、以下の図に示す式で計算可能です。実際には、遮断周波数flpと抵抗値Rまたはコンデンサ容量Cを決め、それぞれの値を決定します。
図10.Notch Filter 回路とゲイン曲線
④デジタルフィルター
アナログフィルターがマイコンにデータを取り込む前に電子回路として組み込むのに対して、デジタルフィルターは、信号をマイコンに取り込んだ後、プログラム上でフィルター機能(信号処理)を適用するフィルターを言います。
移動平均処理によるノイズフィルタ、スパイク性のノイズ除去のためにメディアンフィルタ、等が定番です。マイコンの処理能力に余裕があれば適用されることをご検討ください。
3.ON/OFF入力回路(機械式接点:チャタリング防止回路、長押し検出回路)
機械式接点スイッチ(俗にうスイッチ)は、回路を接続(close)して電気を流す状態にしたり、回路を切断(open)して流れている電気を遮断する機能を持った電子部品です。広義では、接続/切断(ON/OFF)を検出するセンサともいえます。この章では、機械的な特性を知り、その対応をするための回路技術について説明します。
もちろん、信号をマイコンに取り込んだ後の信号処理で同等のことは可能です。なぜ、このような信号処理が必要なのか、プログラミングする前に物理現象として理解しておくことが重要です。
①チャタリング防止回路
機械式接点(この章で扱うスイッチや機械式リレー)では、接点が開閉する際に、接点部分が何度も飛び跳ね、電気的に詳細に見ると、何度もON/OFFを繰り返した後状態を変化させます。この現象をチャタリングと言います。つまり、下図に示すように、理想的なスイッチの1回の動作に対して、実際のスイッチでは、意図せず、接点を何度も押してしまうことになります。
例えば、1回しかボタンを押していないのに、カウンターが2,3進むことがあります。これらの現象はチャタリングによるものと考えられます。
このチャタリングによる誤入力を防止するための回路が、チャタリング防止回路です。
<接点を接続する場合の動き>
<接点を解放する場合の動き>
上の図では接点の接触が安定しない期間をギザギザの波形で示していますが、機械的にボタンが押し下げられていく中で、接点同士が触れ合って導通を開始しようとしても接点を押される圧力が不足している微小な時間に不安定なタイミングがあります。接点の信号は第一段階として簡単なCR回路を組み込んで、充電カーブと放電カーブにより急峻な変化をしないように処理します。次に、第2段階としてシュミットトリガバッファという素子でチャタリングを取り除きます。
下記に、抵抗R,コンデンサC,および、シュミットリガIC(後述)を使ったチャタリング防止回路の例を示します。具体的な部品としては、R=10~100kΩ, C=0.1μF, LS7414(シュミットトリガIC)で構成します。LS0000とはロジックICの総称で用途に応じた互換品が市販されているので最適な物を選択してください。また、図中の抵抗、コンデンサの値は参考です。目的の動作に合うように調整してください。
回路例1:CRとシュミットトリガを使用したチャタリング防止回路
また、抵抗Rと2入力のNANDを2個(RSフリップフロップ)を次に示します。R=10~100kΩ、LS7400(2入力NAND)で構成します。
回路例2:RSフリップフロップを使用したチャタリング防止回路
シュミットトリガ素子について
このページで使用している「シュミットトリガ」という素子(IC)は、入力の変化に対して出力がL-Hになるしきい値(ア)と、逆にH-Lになるしきい値(イ)が異なるような特性の素子です。値としては(ア)>(イ)です。
入力電圧が上がっていき「しきい値L-H(ア)」を超えたところで出力はHに変化しますが、その後入力電圧が下がって元の「しきい値L-H(ア)」を下回っても出力は変化せず、さらに入力電圧が下がって「しきい値L-H(イ)」を下回ったところでようやく出力がLに変化します。このような、往路と復路とで閾値が異なる特性を「ヒステリシス」と呼びます。
この特性(ヒステリシス)を利用した身近な物としては、防犯灯(常夜灯)のON/OFF制御があげられます。明るさが閾値付近の場合に、点灯消灯を繰り返してしまわないようにするためです。
<チャタリング除去の信号処理>
②長押し検出回路
長押し検出とは、上記のスイッチを、ある一定の時間(例えば1秒)以上押し続けたことを検出して、初めて入力信号として取り込む回路です。
用途としては、操作者が誤ってスイッチに触れてしまった場合に入力信号が入ることを防ぐために用います。また、普段行わない操作に入るためのモード切り替えのために、長押しした時にモード切り替えを行うような用途にも用いることができます。
下図の緑色の曲線は、ボタンを押している時のシュミットトリガの入力端子の電圧変化を示しています。ボタンを押し続けることで電位が上昇し、閾値を超えたところで、ONとして認識します。閾値を超えるまでにボタンを離すと、ONの認識は行わず、電圧は瞬時に降下し、初期状態に戻ります。ここでは例として抵抗とコンデンサの値を掲載しています。47KΩと22uFの組み合わせで約1秒の長押しで動作します。放電用ダイオードの先に接続している1KΩの抵抗はボタンを離した時にコンデンサにチャージされた電荷を放出する際の電流の通り道になりますので、一度ボタンを押して次にボタンを押されるまで素早く電荷を放出するために低めの値に設定しています。
回路例:ボタンの長押し検出回路
③マイクロコントローラーへのON/OFF入力
マイクロコントローラーのGPIOポートを入力に設定してボタンの操作を取得する場合、次の点にも注意が必要です。
1.下図のように入力ポートにボタンを接続してボタンを押した時にHighまたはLowの信号を読み取らせる場合、ボタンを押している間は良いのですが、ボタンを離している時は入力ポートに何も接続されていない状態となります。この場合、入力端子は不定となるため出力は少しのノイズ等でも誤動作を起こす原因となってしまいます。
2.基本的に、入力端子は抵抗でプルアップ、またはプルダウンの回路を構成します。このように接続する事で入力ポートの信号が安定し、誤動作を防ぐことができます。
この回路(特に上図右)は、ICチップのリセットボタンの回路に、よく用いられます。数10kΩの抵抗を用いてください。
3.マイクロコントローラの種類やポートによっては、マイクロコントローラ内部で内蔵プルアップ/内蔵プルダウンの抵抗を利用することができます。この場合も、マイクロコントローラのデータシートを確認し、対象のポートでプルダウン/プルアップが使えるかを確認したうえで、ソフトウェアで有効化して利用します。
例えば、R-MSMセンサモジュールで使用しているESP32では、45Kohmの内蔵プルアップ/内蔵プルダウン抵抗が利用できるポートが用意されています。
I2Cなどのデジタル通信で使用するポートについても同様の考え方が必要になります。
この設定は、例えばRaspberry Pi上で動作するNode-REDの場合、下図のように入力に使用するGPIO inノードにプルアップ/プルダウン/または「なし」を選択する項目があります。
「なし」を選択した場合は、このポートに外部から接続する素子側でプルアップ/プルダウン相当の処置がされているか、そうでなければ外部にプルアップまたはプルダウン抵抗を接続するなどの対応が必要です。
いずれにしても、ボタンのみをポートに接続した場合は最初に述べたチャタリングの影響でボタンを1回押しただけなのに2~3回押したような挙動をすることがあります。この場合はソフトウェアによるチャタリング除去を行うことで回路部品を減らして安定した動作ができるようになります。Raspberry Pi のGPIO inノードでは、デバウンス時間の設定があり、その期間のチャタリングの影響を避けることができます。
4.コンパレータ回路
コンパレータは、入力端子に加えられた2つの電圧を比較して、その大小に応じて出力を切り替える回路です。例えば、温度や光などの物理量を電圧に変換した信号を入力として、ある基準値(Vref)を超えたかどうかを判定することができます。コンパレータは、センシングシステムの入力部分に使われることが多く、アナログ信号をデジタル信号に変換する役割を果たします。
オペアンプとコンパレータの図記号は同じで、共に差動入力・単一出力の増幅回路ですが、その動作原理や用途には違いがあります。電圧値を比較してデジタル信号にする目的の場合は、コンパレータとして設計された部品を使用してください。
・オペアンプは、負帰還をかけて線形領域で動作させることで、入力信号の増幅やフィルタリングなどのアナログ信号処理を行います。
・コンパレータは、帰還をかけず開放ループで動作させることで入力信号の大小を比較してデジタル信号に変換します。
下記の回路例では、LM393コンパレータICの(+)端子に入力信号を加え、(-)端子には可変抵抗器で調整可能な基準電圧(Vref)を加えています。
入力端子のインピーダンスは高く設定されているので被測定回路への影響を少なくすることができます。
この回路構成では非反転出力のため、入力信号がVrefより高くなると出力はHighに、低くなるとLowに振り切れます。
上記の回路例で使用したLM393は、コンパレータの一種で、2つのコンパレータが1つのICに入っています。
他にもいろいろな品種がありますので、目的に合わせて選択してください。
LM393の特徴には、以下のようなものがあります。
・電源電圧範囲が2V~36Vと広い。
・入力電圧範囲がGND(0V)から電源電圧まで使用できる。
・出力形式はオープンコレクタ。
・消費電流が少ない(0.8mA)
・応答速度が速い(1.3μs)
LM393を使う場合の注意点は、以下のようなものがあります。
・出力段がオープンコレクタのため、プルアップ抵抗を入れる必要がある。
・入力電圧が電源電圧に近い場合は、飽和電圧のため出力が不安定になる可能性がある。
・ヒステリシス特性が無いため入力電圧がノイズによって微小に変化する場合は、出力がチャタリングする可能性がある。
・高速動作をする場合は、配線の長さや容量性負荷に注意する必要がある。
入力信号によっては上記の回路ではヒステリシス特性がないことによって不都合が発生する場合もあります。
そのような場合には出力から入力端子に外部フィードバック抵抗を設けることでヒステリシス特性を持たせることもできます。リンクの資料を参考に、ご使用になる対象に合わせて定数を設定してください。この場合は部品点数が増えて回路構成が複雑になる事や、入力インピーダンスが低下する事を考えると最初からヒステリシス特性をもったコンパレータICを選択する事も有力な候補です。
参考:ヒステリシス特性付きコンパレータの例:MAX9016
手軽にコンパレータ回路を使用したい場合は、周辺回路と共にモジュール化された商品も市販されています。