船舶海洋情報学
IoT機器の構成

ネットワーク

九州大学 工学府海洋システム工学専攻 講義資料 担当：木村

09. GPIOとデジタル回路

マイクロコントローラ （機器制御用コンピュータ）

有線LAN
無線LAN

GPIO (General Purpose Input Output)

中身：CMOSロジック回路
アクチュエータリレー
モータドライバ
ブザー
リモコン
…

センサ

光センサ
磁気センサ
温度センサ
距離センサ
…

I/Oインターフェース
どのように接続したら良いか？

マイコンを構成するCMOSロジック回路

NANDロジックを複数組み合わせることで他のロジックを全て実現できるマイコンを構成するCMOSロジック回路
NANDゲートの組み合わせで記憶回路を構成

・STがLのとき：
入力DがそのままQになる（データのロード）・STがHのとき：
入力Dに関係なくデータを保持

ＲＳラッチ回路（メモリー）CMOSロジックIC

・電源（ 3～5.5V)

マイコンのＧＰＩＯは、電源とＧＮＤをロジックＩＣと共用すれば（理屈上は）信号線をそのまま接続できるが、・GND（ ０V)

GPIOは入力・出力どちらでもソフトウエアで設定可能であるため、何らかのトラブルによりGBIOの出力がロジックＩＣの・電源（ 3～5.5V)出力と接続され、値が競合すると素子がショートして壊れるので、1kΩ程度の抵抗を介して接続したほうが安全

出力端子の並列接続はショートの危険ありNG

抵抗１kΩ

ＧＰＩＯ・GND（ ０V)

市販のNANDゲートIC

マイコンやロジックICへの信号入力
ＣＭＯＳロジック回路の性質より、入力信号が中途半端な電圧にならないよう注意する必要がある【プルアップ・プルダウン】
特に、入力端子に何も接続していない状態はハイインピーダンス状態であり、ノイズによって電圧が不安定に変動する。
この状態が長時間続くと無駄な電力を消費するだけでなく、最悪の場合、素子の破壊につながる。
これを回避するためには、入力端子に抵抗(10KΩくらい)を介して電源あるいはGNDに接続して電圧を安定させる。
この処理は、電源に接続するときプルアップ、GNDに接続するときプルダウンと呼ばれる【センサからの信号電圧の整形】
センサが直接出力する信号は、場合によっては中途半端な電圧になっている。
この電圧が情報として大事な場合は、AD変換によって電圧を数ビット分の離散信号へ変換してからデジタル回路へ入力する（後述）。
センサのON／OFFが重要な場合には、中途半端な電圧を電源電圧かGNDのどちらかへ強制的に変換する処理をしてからデジタル回路へ入力する。
この処理を行うには「シュミットトリガ」と呼ばれる機能を持つICを使う。
入力信号をシュミットトリガで処理するICとして 74HC14 や 4584B がある

メカニカルセンサの例

GPIOへのセンサの接続例（デジタル）
磁気センサMRSS21
信号がロジックＩＣ対応の出力になっている→GPIOへ直結可能

Ｖｃｃ（3.3Ｖ）

磁気センサ

Out
GND

ラズパイの電源電圧以上の信号出力電圧そのままだと壊れるので抵抗とダイオードを接続

電源電圧が異なるので別途用意

Ｖｃｃ（12Ｖ）

光電センサ

Out

抵抗１kΩ

GND

反射型光電センサOMRON EE-SY672
光センサの信号がロジックＩＣ対応の出力になっている→GPIOへ直結可能

ＧＮＤは必ずマイコン側と共有

アナログセンサの接続
アナログ信号そのままではデジタル回路に接続できない→ ＡＤ変換

3.3V
Ｖｃｃ（5Ｖ）

測距センサ

Out
GND
GND

測距センサ：
距離→電圧へ変換

最大出力電圧が3.3V以下なので3.3V系のＡＤコンバータが使える

ADコンバータ
アナログ信号をデジタル変換

SPIシリアル通信

マイコンとアクチュエータの接続（１）【発光ダイオード（LED）のＯＮ／ＯＦＦ】
マイコンや通常の論理ICの出力電流は数十mA程度しかないので、直接駆動できるのはLED程度である。
OUTがHのとき
LEDが点灯3.3V

OUTがLのとき
LEDが点灯

LED

抵抗１kΩ

ＩＣ内部

抵抗１kΩ

LED
ＩＣ内部

GND

OUTがLのとき
LEDが点灯ＩＣ内部
OUTがLのとき
LEDが点灯

LED

3.3V
LED

オープンコレクタ

3.3V

抵抗１kΩ

抵抗１kΩ
ＩＣ内部

通常のC-MOS ICの出力へ接続する場合
上記の２通りのパターンが可能

ICの出力が「オープンドレイン」またはオープンコレクタ」と表示されている場合は、上記の接続しか動作しない

マイコンとアクチュエータの接続（２）【リレーや電熱線、ソレノイド、直流モータのＯＮ／ＯＦＦ】
マイコンや通常の論理ICの出力電流は数十mA程度しかないので、直接駆動できるのはLED程度である。
リレーのコイルやモーターを駆動するためには、大電流を流せるスイッチング素子を使って増幅する。
このような電力制御用途では、電圧によってＯＮ／ＯＦＦの制御が可能な「パワーＭＯＳＦＥＴ」と呼ばれるトランジスタが主流である。
パワーＭＯＳＦＥＴにはＮ型とＰ型があり、回路構成に制約がある。
N型MOSFETとしては2SK2231や2SK3142, 2SK2956などが使える。
P型MOSFETとしては2SJ377, 2SJ471がある。
以下に回路例を示す。負荷は必ずトランジスタのドレイン（Ｄ）側に接続（そうしないとなぜかゲート電圧×電流分の損失が発生）
誘導性負荷のON/OFF時のサージ対策

パワーＭＯＳＦＥＴトランジスタ
選定にあたり注意すべきスペックは（１）最大定格電流（２）ゲート電圧：
スイッチＯＮにするのに必要な電圧（３）ＯＮ抵抗：ＯＮの状態でトランジスタの持つ抵抗値マイコンとアクチュエータの接続（３）【交流信号の切り替えや、電気的に絶縁が必要な回路のＯＮ／ＯＦＦ】
MOSFETを用いてスイッチングする場合、その性質上電源のGNDを共通にしなければなならい制約がある。
すると、アナログ交流信号のスイッチングや、コンデンサを直列や並列に並び替えるためのスイッチとして使用できない。
また、負荷の駆動電圧がマイコンの駆動電圧より低いような特殊な場合、パワーMOSFETの回路では駆動できない。
このように制御信号との電気的絶縁を保ったままでスイッチングを行うには、機械的なリレーを使えば可能だが、応答速度や高い信頼性が必要な場合には、PhotoMOSリレーという便利な半導体がある。
以下は例として松下電工のPhotoMOSリレーAQV212 (負荷電圧60V, 負荷電流350mA, ON抵抗0.83Ω, LED電流5mA)を挙げる：

発光ダイオードを点灯する回路と同じもっとパワー（電流容量）が必要な場合は左図のAQZ202(60V, 3A, 0.11Ω,1mA)がお勧めマイコンとアクチュエータの接続（４）【直流モーターの正逆転・速度制御】
MOSFETやPhotoMOSリレーをHブリッジ状に構成するのが一般的
マイコン

RA0, RA1, RA2, RA3 全て0 を出力するとモータの端子電極は開放されフリー回転する。
RA0とRA2を1，RA1とRA3を0にするとモータは正回転、
RA0とRA2を0，RA1とRA3を1にするとモータは逆回転、
RA0とRA1を0，RA2とRA3を1にするとモータの端子電極はショート状態になってブレーキがかかる。
【注意】RA0とRA3を同時に1にしたり、あるいはRA1とRA2を同時に1にするとモーターの電源がショートして素子が破壊されるので、絶対にこのような値を出力しないこと
もっと安価で安全なモータドライブ専用ＩＣがメーカー各社から供給されているので、これを利用するほうが良い。（TA8428Kなど）

モーターの回転速度を変えるには、モータに流れる電流を調節すれば良い。
上記の回路で行うには、ＰＷＭ（pulse width modulation: パルス幅変調）と呼ばれる方法を用いる。
これは一定間隔でスイッチをON／OFFし、そのON／OFFの時間幅の比率を変える操作を行うものである。左にPWMの例を示す：

マイコンとアクチュエータの接続（４）ON【直流モーターの正逆転・速度制御】
MOSFETやPhotoMOSリレーをHブリッジ状に構成するのが一般的
ON

マイコン

RA0, RA1, RA2, RA3 全て0 を出力するとモータの端子電極は開放されフリー回転する。
ON
RA0とRA2を1，RA1とRA3を0にするとモータは正回転、
RA0とRA2を0，RA1とRA3を1にするとモータは逆回転、
RA0とRA1を0，RA2とRA3を1にするとモータの端子電極はショート状態になってブレーキがかかる。
【注意】RA0とRA3を同時に1にしたり、あるいはRA1とRA2を同時に1にするとモーターの電源がショートして素子が破壊されるので、絶対にこのような値を出力しないこと
もっと安価で安全なモータドライブ専用ＩＣがメーカー各社から供給されているので、これを利用するほうが良い。（TA8428Kなど）

ON

モーターの回転速度を変えるには、モータに流れる電流を調節すれば良い。
上記の回路で行うには、ＰＷＭ（pulse width modulation: パルス幅変調）と呼ばれる方法を用いる。
これは一定間隔でスイッチをON／OFFし、そのON／OFFの時間幅の比率を変える操作を行うものである。左にPWMの例を示す：

マイコンとアクチュエータの接続（４）【直流モーターの正逆転・速度制御】
MOSFETやPhotoMOSリレーをHブリッジ状に構成するのが一般的

ON
ON
マイコン

RA0, RA1, RA2, RA3 全て0 を出力するとモータの端子電極は開放されフリー回転する。
RA0とRA2を1，RA1とRA3を0にするとモータは正回転、
RA0とRA2を0，RA1とRA3を1にするとモータは逆回転、
ON
RA0とRA1を0，RA2とRA3を1にするとモータの端子電極はショート状態になってブレーキがかかる。
【注意】RA0とRA3を同時に1にしたり、あるいはRA1とRA2を同時に1にするとモーターの電源がショートして素子が破壊されるので、絶対にこのような値を出力しないこと
もっと安価で安全なモータドライブ専用ＩＣがメーカー各社から供給されているので、これを利用するほうが良い。（TA8428Kなど）

ON

モーターの回転速度を変えるには、モータに流れる電流を調節すれば良い。
上記の回路で行うには、ＰＷＭ（pulse width modulation: パルス幅変調）と呼ばれる方法を用いる。
これは一定間隔でスイッチをON／OFFし、そのON／OFFの時間幅の比率を変える操作を行うものである。左にPWMの例を示す：

マイコンとアクチュエータの接続（４）【直流モーターの正逆転・速度制御】
MOSFETやPhotoMOSリレーをHブリッジ状に構成するのが一般的
マイコン

RA0, RA1, RA2, RA3 全て0 を出力するとモータの端子電極は開放されフリー回転する。
ON
RA0とRA2を1，RA1とRA3を0にするとモータは正回転、
RA0とRA2を0，RA1とRA3を1にするとモータは逆回転、
ON
RA0とRA1を0，RA2とRA3を1にするとモータの端子電極はショート状態になってブレーキがかかる。
【注意】RA0とRA3を同時に1にしたり、あるいはRA1とRA2を同時に1にするとモーターの電源がショートして素子が破壊されるので、絶対にこのような値を出力しないこともっと安価で安全なモータドライブ専用ＩＣがメーカー各社から供給されているので、これを利用するほうが良い。（TA8428Kなど）

ONON

モーターの回転速度を変えるには、モータに流れる電流を調節すれば良い。
上記の回路で行うには、ＰＷＭ（pulse width modulation: パルス幅変調）と呼ばれる方法を用いる。
これは一定間隔でスイッチをON／OFFし、そのON／OFFの時間幅の比率を変える操作を行うものである。左にPWMの例を示す：

マイコンとアクチュエータの接続（５）【ステッピングモータ（パルスモータ）の制御】
ステッピングモータは、与えたパルス分だけ正確な角度で回転するモーター。無限回転が可能で、信頼性が高く、電気的ノイズも発生しない。
また停止時にホールディングトルクを発生するのでブレーキが不要などの利点がある。
反面、オープンループ制御であるため、脱調などで同期が外れた場合は正確な位置制御ができなくなるので、補正のための工夫を付加する必要がある。またＤＣモータに比べると電力損失が非常に大きく、単位重量あたりのパワーも数分の一程度であるなどの欠点がある。
バッテリー駆動の移動機器などには不向きだが、プリンタやCDプレイヤーのヘッド移動モータなど電力損失があまり問題にならないような据え置き型機器によく組み込まれる。

マイコンとの接続は、先のＤＣモータドライブ回路を２つ使用して左図のようにコイルを駆動する。

シリアル通信による接続
Ｖｃｃ（3.3Ｖ）

センサ
データ

Ｖｃｃ（3.3Ｖ）

センサ

マイコン

クロックセンサ
マイコン
GND

センサ

GND

センサ

センサ
センサ
センサ

センサ
マイコンとセンサやアクチュエータをシリアル信号線で接続すると配線本数が劇的に減少

センサ

センサ

通信速度によって幅が決まる

センサ

マイコンに接続するセンサやアクチュエータが増えると、GPIOのポートが不足しケーブルの重量も負担になってくる

最初の読み込みは信号立下りから3/2幅後それ以降のみ込みは１幅毎クロック信号でタイミングを合わせてデータを送受信する（同期式）
Ｉ２Ｃ方式やＳＰＩ方式がよく用いられる通信速度を決めることによりクロック信号を使わず送受信する方式（調歩同期式）もある

まとめ （１） マイクロコントローラのGPIOとセンサやアクチュエータと接続：I/Oインターフェース（２） マイコンを構成するC-MOS IC： 0Vの信号を0, 電源電圧の信号を1として処理（３） ロジックＩＣ： NANDゲート・ NORゲート（４） NANDゲートの組み合わせ：メモリー（５） マイコンやロジックICへの信号入力：プルアップ／プルダウン／シュミットトリガによる信号整形／ＡＤ変換（６） マイコンやロジックＩＣとアクチュエータの接続： オープンドレインに注意／ドレイン側に負荷（７） モータドライブ： Ｈブリッジ／ＰＷＭ／ステッピングモータ（８） シリアル通信： I2C／SPI

課題：
NANDゲートより構成されるRSラッチ回路を参考にして、押しボタン２個のうちONのボタンを押すとLEDが点灯し、ボタンを離しても点灯状態を保持し、OFFのボタンを押すとLEDがOFFになり、ボタンを離してもLEDがOFFの状態を保持するような回路を設計し、市販のNANDゲートＩＣを使用した場合の回路図を描け。
電源として乾電池２コ直列の３Ｖを用いて、市販のゲートＩＣの電源への配線も考慮すること。

RSフリップフロップ
S(セット)H→LでQ→H
R（リセット） H → L で Q → L

この部分の動作（RSフリップフロップ）を利用する
ボタンを押すと0V, 離すと電源電圧となる信号を発生させるには？