マイコン周辺のハードウェア基本回路【初心者・未経験者必見】
マイコンの入出力回路を取り扱うのに必須の基礎知識をまとめています。
目次
電気回路とオームの法則
マイコン周辺で使用する電気回路は直流回路ですのでそれほど難しくなく、オームの法則を知っていれば理解できるものです。ただし、教科書に記載している回路とは多少表記の仕方が違うためまず慣れる必要はあります。
回路は当然すべてつながっているのですが、表記では電源電圧とグランド(GND)を分離した略図で表記しています。電源電圧から何らかの回路(負荷)を通ってグランド(GND)に戻っていくのを連続で繰り返しています。
下図左が教科書などにある回路図というより配線図です。実際の回路を扱う上ではグランド(GND)の考えが必要となり、下図真ん中の形になります。実際の図面ではこれを簡略化して下図右のように表します。
ここでグランド(GND)という概念がでてきました。マイコン回路ではグランド(GND)は回路の基準電位となります。電位とは基準に対して電気的にどれくらい高いか低いかを表すもので単位はVです。2点の電位の差を電位差あるいは電圧といいます。
電源電圧などはこのグランド(GND)の基準電位に対する電位差のことですので、グランド(GND)の電位を基準値0Vと定義するとわかりやすいです。ただし、グランドの電位は絶対的な電位0Vではなくあくまで基準値としての相対的な0Vであることを頭のすみに置いておいてください。
グランドとかアースといった概念はとても奥が深いのですが、実際のマイコン周辺の回路設計においては実用的な機器を構成するためにはとても重要なポイントです。
マイコン周辺の回路図では電源とグランドを分離して表記することが多いです。マイコンはデジタル回路なので電気信号は電源電圧レベルのVdd(デジタル回路での一般表記)とグランドレベルのVss(デジタル回路での一般表記)かのどちらかです。また、デジタル論理では信号レベルがVddの場合1またはHレベル(High)で、Vssの場合0またはLレベル(Low)であるといいます。
分圧回路
簡略化した回路では抵抗による分圧も理解しやすいでしょう。
デジタル基本回路
次のデジタル基本回路で動作を見てみましょう。
基本回路1では電源側(Vdd)に負荷抵抗Rが、グランド側(Vss)にスイッチが接続した構成です。スイッチON/OFFの状態で回路中間点の電位がどのように変化するでしょうか。
スイッチがOFFの場合は負荷抵抗には電流は流れません。したがって抵抗の両端には電圧はかかっておらず中間点の電位は電源電圧と同じです。つまり1(Vdd)です。スイッチがONになると負荷抵抗に電流が流れ中間点はスイッチのグランド側(Vss)と等電位になります。つまり0(Vss)です。
基本回路2では基本回路1の負荷抵抗とスイッチの位置が入れ替わった回路です。基本回路1と同様に動作をたどってみるとスイッチがOFFでは中間点の電位は0(Vss)、スイッチがONでは中間点の電位は1(Vdd)となります。
電気回路では負荷抵抗Rというものが必要です。上図の場合、負荷がなければスイッチをONにした瞬間に短絡(ショート)してしまいます。負荷Rの値は下記「入力プルアップ・プルダウン回路」で解説しています。
汎用入力で使われる回路
マイコンの入力ポートは端子に入力された0か1の信号を読み取る機能をもっています。
0か1の信号はそれぞれグランドレベルVssと電源電圧レベルVddです。
下記の二股スイッチによる回路がデジタル入力を簡易的に表したものです。
電源電圧側で入力1(Vdd)、グランド側で入力0(Vss)となります。
入力プルアップ・プルダウン回路
実際マイコンに入力として接続されるものにはセンサー出力やスイッチの接点などでそのままでは電圧を発生しないものがあり、電源直結の二股スイッチのように接続するだけで入力ポートに0と1の信号を直接与えられません。このような場合はどうすればよいでしょうか。
入力としてスイッチあるいはセンサー出力の一方がグランドレベルVssであるシンク出力タイプ(コラム1参照)を接続する場合、スイッチONでは入力ポート状態は0となりますが、なにもしない状態、つまりスイッチOFFではどこにもつながっていないため入力は不定(浮いている:フローティング)の状態です。
スイッチOFFのときに入力ポート状態を1とするためにはプルアップ抵抗を使用します。プルアップ抵抗があると入力が何もない状態でも入力ポートへの状態は1に確定されます。
入力としてスイッチあるいはセンサー出力の一方が電源レベルVddであるソース出力タイプ(コラム1参照)を接続する場合、スイッチONでは入力ポート状態は1となりますが、なにもしない状態、つまりスイッチOFFではどこにもつながっていないため入力は不定(浮いている:フローティング)の状態です。
スイッチOFFのときに入力ポート状態を0とするためにはプルダウン抵抗を使用します。プルダウン抵抗があると入力が何もない状態でも入力ポートへの状態は0に確定されます。
プルアップ・プルダウンの抵抗値は300Ωから100kΩくらいのもので本来はこの値は適当にきめるものではないのですが一般的に10kΩ程度をなんとなく使用している人も多いと思います。
値が大きいと負荷に流れる電流は小さいために消費電力は小さくなる利点があります。ただし値が大きすぎると小さな電流でも抵抗器で電圧降下が発生してしまうために、入力電圧はVddより下がります。
マイコン入力はC-MOSで構成された回路で高インピーダンス(コラム2参照)といって電流は発生しにくいためにこの電圧降下は考えなくてもよいので大きめの値でも大丈夫です。ただし、大きすぎると微小な電流の変化で電圧降下の変化分が大きく増幅されるかたちになるのでノイズの影響を受けやすいともいわれます。入力インピーダンスは入力抵抗のようなものでマイコンの仕様書で確認できます。
マイコン以外の回路ではプルアップ・プルダウン抵抗値は次段の回路に必要な駆動電流を考慮して決めます。駆動電流が小さすぎると動作しない部品もあるからです。最終的には抵抗値はバランスを考えて決定すればよいのですが、他で実際に使用されているものを参考するのがよいと思います。
シンクとソースについて
入力側:ソース入力は負荷が電圧源に接続しているタイプで、シンク入力は負荷がグランドに接続しているタイプです。
出力側:ソース出力は電源レベルの出力(PNPトランジスタなど)でシンク入力に接続し、シンク出力はグランドレベルの出力(NPNトランジスタなど)でソース入力に接続します。
インピーダンスとは交流も含めた回路おける抵抗(電流の流れにくさ)です。コイルやコンデンサは周波数によってインピーダンス(電流の流れにくさ)が変わります。専門的になりますが、位相というものも変化します。周波数が大きくなるとコイルではインピーダンスは大きくなり、コンデンサでは逆に小さくなります。直流回路では抵抗そのものです。
汎用出力で使われる回路
マイコンの出力はC-MOSとよばれる半導体のスイッチング素子で構成されています。C-MOSの動作を説明するまえに半導体のスイッチング素子について考察してみましょう。
半導体スイッチの基本はトランジスタです。トランジスタは微小な信号を増幅して大きな信号にする増幅器として使われてきましたがマイコンを始めとするデジタルの世界ではスイッチの役割で使用します。
トランジスタはベースB、コレクタC、エミッタEなる3つの端子で構成されています。ここでは下図に示すNPN型トランジスタで話をすすめます。
ベースBに適当な負荷抵抗を介してベース電流IBを流すとコレクタCからエミッタEにコレクタ電流ICが流れます。ベース電流IBに対してコレクタ電流ICは数100倍になることがあります。トランジスタが増幅器とよばれる理由はこの微小な電流IBを大きな電流ICに電流を増幅するからです。(ただし大きな電流を流すコレクタにはそれ相当の電源を接続している必要があります。)
微小なベース電流IBを細かくコントロールするとその大きさに比例してコレクタ電流ICも比例します。ベース電流IBがあるところまで達するとコレクタ電流ICは頭打ちとなってそれ以上は大きくなりません。これを飽和したといいます。
アナログ回路の増幅器では飽和するまでが大事なのですが、スイッチとしてのトランジスタはこの飽和した状態でコレクタCとエミッタEが導通の状態を使用します。つまり、ベース電流IB=0でIC=0 のトランジスタOFF状態、ベース電流IBがONにするためのしきい値ION以上でトランジスタON状態の2通りを使用します。
トランジスタはベース電流IBによりON/OFFを切り替える電流駆動のスイッチになるのです。
スイッチとしてのMOSFET
これまでは半導体スイッチの基本であるトランジスタで説明してきました。
実際にマイコンのスイッチにはトランジスタのかわりにMOSFET(電界効果トランジスタ)が使用されています。
トランジスタが電流を増幅する電流駆動のスイッチであるのに対して、MOSFETはゲートに電圧をかけると抵抗値が変化する電圧駆動のスイッチであるものだと理解してください。
MOSFETのゲート入力インピーダンスは高いために駆動電圧をかけても電流はほとんど流れません。つまり消費電力が小さくマイコン内部のスイッチとしてはこちらの方が集積回路として効率がよいのです。
マイコン用スイッチとしてMOSFETはトランジスタより有利ではあるのですが、静電気には弱い特性なのが欠点です。マイコンが静電気には弱いICであるのはMOSFETで構成されているからです。
トランジスタとMOSFETは特性の差はあれ半導体スイッチとしての動作はほぼ同じものとしての理解でよいと思います。マイコンに使用されている回路はMOSFETですので今後はこちらで話をすすめていきます。
プッシュプル出力(電圧出力)・オープンドレイン出力
マイコン汎用出力ポートは1(High)か0(Low)の情報を出力します。
プッシュプル出力タイプと呼ばれているものはデータ1を出力するときに、出力ピンが1(High)、データ0を出力するときには出力ピンは0(Low)のどちらかの電圧レベルを出力します。
対して、オープンドレイン出力では出力データが0のとき出力ピンは0(Low)となるのですが、出力データが1では出力ピンは電圧不定の浮いた状態のタイプです。
汎用出力ではこの2種類が利用できますので、用途に合わせて選択します。
トランジスタの場合はオープンコレクタ出力といいます。
CMOSによる出力構成回路
プッシュプル出力回路
マイコンの出力回路はMOSFETのP型であるP-MOSとN型であるN-MOSを対称に構成したC-MOS(Complementary MOS)回路で構成されています。マイコン出力が1(High)のときはP-MOSがONとなり対称のN-MOSはOFFとなります。マイコン出力が0(Low)のときはP-MOSがOFFとなり対称のN-MOSはONとなります。つまり、プッシュプル出力の回路です。
C-MOSプッシュプル出力回路に負荷としてLEDをシンク接続した回路の動作を確認してみます。
マイコン出力が1(High)であるとP-MOSはONになり電源Vddに接続します。N-MOSはOFFになって切断されます。その結果、出力ピンは1(High)となるためLEDには電流が流れ点灯します。
マイコン出力が0(Low)であるとP-MOSはOFFになり電源Vddとは切断されます。N-MOSはONになってグランドVssに接続されます。その結果、出力ピンは0(Low)となるためLEDは両端がVssに接続したことなり消灯します。
C-MOSプッシュプル出力回路に負荷としてLEDをソース接続した回路の動作を確認してみます。
マイコン出力が0(Low)であるとN-MOS はONになりグランドVssに接続します。P-MOSはOFFになって切断されます。その結果、出力ピンは0(Low)となるためLEDには電流が流れ点灯します。
マイコン出力が1(High)であるとN-MOSはOFFになりグランドVssとは切断されます。P-MOSはONになって電源Vddに接続されます。その結果、出力ピンは1(High)となるためLEDは両端がVddに接続したことなり電流が流れないため消灯します。
オープンドレイン出力回路
出力にオープンドレインを選択した場合はP-MOSが無効で使用されないと考えればよいです。
このため、マイコン出力が1(High)であるとN-MOSもOFFで出力ピンはどこにも接続されていない浮いた状態となります。マイコン出力が0(Low)であるとN-MOS はONになりグランドVssに接続するため出力ピンは0(Low)となります。
出力インターフェース
トランジスタをつかったインターフェース
マイコンの出力ポートはC-MOSで構成されている回路です。このC-MOSの出力ピンには許容可能な最大電流が決められています。STM32マイコンの場合は各ポート単位で8mAまでとしておいてください。
負荷に流れる電流がLEDのように小さいものならば出力ピンに直接接続して使うことができますが、出力で駆動したい負荷(出力につないで使いたい負荷)はLEDのような小さな駆動電流で機能する抵抗負荷ばかりではありません。
例えば、リレー、モーターのような誘導負荷やヒーターのような駆動電流の大きな負荷などがあります。また、一つ当たりの負荷容量が小さいLEDの場合でも個数が多い場合はマイコンの許容電流を超えてしまいます。
このような場合は、マイコンと負荷の間にインターフェース回路を設けて駆動します。
トランジスタをインターフェースとしてLEDを駆動する回路を見てみましょう。マイコン出力ポートが1(High)のとき、トランジスタにベース電流が流れONとなり導通します。その結果LEDに電流が流れONします。
トランジスタには電流増幅機能がありますのでベース電流に対して負荷LEDに流せるコレクタ電流は電源容量で許される限り大きなものが流せます。つまり、ベース電流は小さいものですむためマイコンの許容電流を気にせず負荷電流を流せるようになります。
フォトカプラをつかったインターフェース
マイコン出力にフォトカプラというインターフェースを介して負荷を駆動する回路を見てみましょう。
フォトカプラは入力側と出力側が電気的に絶縁している素子です。入力側の電源と出力側の電源を別のものにすることで、負荷側で発生したノイズを分離してマイコンの誤作動を防ぐことが可能です。
フォトカプラは入力側の発光ダイオードを駆動して、出力側のフォトトランジスタをON/OFFするスイッチです。出力側トランジスタの許容範囲で負荷を駆動することができます。
フォトカプラによる出力インターフェースではマイコン出力によりフォトカプラ発光ダイオードを駆動して出力トランジスタをONにします。駆動電流IFは抵抗器Rによりを調整します。
フォトカプラによる入力インターフェースでは外部スイッチ等によりフォトカプラ発光ダイオードを駆動して出力トランジスタをONにします。駆動電流IFは抵抗器Rにより調整します。
トランジスタをインターフェースとした場合と似ていますが、フォトカプラは入力と出力が電気的に絶縁しているところが異なります。フォトカプラの仕様にもよりますがトランジスタの場合に比べて電流増幅率はそれほど大きくありませんので選定時には仕様書で負荷電流をよく調べる必要があります。
産業機器ではセンサー類などの入出力機器とマイコンとは電源を分離して使うこと多いです。高価なセンサーなどの機器側の電源とマイコン側の電源はノイズなどの影響を考慮して分離して使うのが鉄則です。
機械制御に特化した組み込み機器の一種であるPLC(Programable Logic Controller)では出力タイプはトランジスタ、リレーなどがあるのですが、内部のマイコンとはフォトカプラで分離しておりノイズに対して堅牢なシステムとなっています。
図ではフォトカプラを介してリレーを駆動している回路です。リレーは入力コイルに与える電圧・電流信号により接点の開閉をおこなうものです。プログラムで自動的にスイッチを切り替えるなどの電気回路ではリレーを使うと便利です。
リレー入力のコイルは誘導負荷というもので逆起電力が発生するために、マイコン出力で直接駆動することはできません。そこで、フォトカプラを介してリレーを駆動します。図では動作を説明するための簡略図で、実際にはコイルで発生する逆起電力のための保護ダイオードなどが必要です。
リレーは有接点と呼ばれ、負荷側の接点を機械的にON/OFFします。そのため、接点の消耗があり、開閉数に応じて交換する必要があります。この機械的に構成されたリレーに対して半導体で構成された無接点リレーがSSR(Solid State Relay)です。機械的な接点ではないため、動作速度が速い、接点が摩耗しないなどの特徴があり、ヒーターなどの制御によく使われます。
フォトカプラを使った設計の詳細は「組み込みハードウェア設計」で解説しています。
専用ICを使ったインターフェース
DCモーター、ステッピングモーターなどを制御する場合、トランジスタなどの半導体スイッチを組み合わせた回路を構成して駆動するのですが、すべて機能がワンパッケージに内蔵された専用ドライバーICを使用するのが便利で構成部品も少なく、性能およびコスト面で有利です。
ドライバーICの入力側は各ドライバーの仕様に合わせたものを与えればよいだけです。実際の開発にあたっては対象のモーター仕様が決まり次第、性能、価格そして流通性(取得のしやすさ)を踏まえて市販のドライバーICを選択します。
マイコン保護ダイオード
マイコンのIOポートには保護ダイオードが内蔵されていますが、これはクランプ回路と呼ばれています。信号の過電圧(サージ電圧など)や静電気放電(ESD)などから回路を保護します。
ダイオードが図のような構成であることで、IOポートの信号電圧はVss(GND)からVdd(電源電圧)の範囲をこえたものであっても範囲内に制限されます。
スイッチについて(モーメンタリ・オルタネイト)
操作用スイッチの動作にはモーメンタリとオルタネイトの2種類があります。
モーメンタリ動作 :
モーメンタリはスイッチのボタンを押している間だけ、ON状態になりボタンから手を離すとOFF状態に戻ります。モーメンタリ”Momentary”は「一時的」や「瞬間的」といった意味です。
オルタネイト動作 :
オルタネイトはボタンを一度押すとON状態になり、手を放してもON状態を保持します。もう一度ボタンを押すとOFF状態になります。自己保持タイプのスイッチといいます。オルタネート“Alternate”とは「交互」や「かわるがわる」といった意味です。
マイコンの入力ピンに接続するスイッチはモーメンタリ動作するタイプであれば、カウンタ、タイマーと組み合わせていろいろな機能をもたせることができるようになります。