電圧/ハイ・インピーダンス/短絡(ショート)
ここで話が変わりますが、電圧についての話です。
CPUで扱うデジタル回路では、電圧が高い(high)か低い(low)かの2つの状態の組み合わせだけによって情報を表現します。 5Vを電源とする回路の場合は、0Vの領域はLow、5Vの領域はHighとなります。簡単にLowを0、Highを1として表記する場合もあります(Low:1, High:0にすることもあり)。 電流が流れている、いないで0,1を表現するのではなく、電圧の高い、低いで0,1を表現することになります。 もちろん0VぴったりがLow、5VぴったりがHighというわけでもなく、ある程度電圧値の上下は許容してHigh、Lowを認識すべきですが、 2.5Vのような間の電圧値をMiddleとして、Low、Middle、Highの3つなどには通常しません。2.5VはHighとする場合が多いでしょう。 いずれにしてもHighかLowか白黒ハッキリさせないといけません。
図1-6の回路ですが、左側は途中に1つの抵抗を置いただけの回路です。電圧は抵抗より上側が5V(High)下側が0V(Low)になります。 今抵抗が1kΩですので、電流は5mAということになります。当たり前ですが、この抵抗を別の抵抗値のものに取り換えたとしても電圧は変わりません。 抵抗の上は5V、下は0Vです。勿論 抵抗値が上がればその分電流値は小さくなります。実は電流値の大小、その両極端を作れるのが右側のスイッチと考えることができます。 抵抗値を上げていくと電流は小さくなり最後には流れなくなり、ちょうどスイッチを切った状態(=ハイ・インピーダンスな状態と言います)になります。 逆に抵抗値をどんどん下げていくと、最後には右側のスイッチを入れた状態、つまり短絡(ショート)した状態になります。 ショートした状態は前にも書いてきた通りしてはいけない状態です。この状態を作ってしまったら負けです。ショートすると多くの場合どこかの部品が壊れたり、 場合によっては破裂したりもするでしょう。 右側の回路のスイッチを入れるとシミュレーターはストップしてしまいます。 デジタル回路を扱う場合HighとLow以外に、このハイ・インピーダンスとショートの状態もあることが何気に重要だったりします。 (正しい回路ではショートの状態はでてきません。)
図1-6 High、Low、絶縁、短絡 (左: 抵抗を入れた回路、右: スイッチを入れた回路)
電子部品にもHighとLowの他に、ハイインピーダンスを出力できる「3ステートバッファ(スリーステートバッファ)」というものがあります。 これは物理スイッチのような使い方をするための部品です。例えば、A回路とB回路を繋げた回路があったとして、回路同士を切り離す(=ハイインピーダンスにする)機能がほしいときに 間に3ステートバッファを入れるといった使い方が考えられます。
図1-7の回路ですが、一番左側は2つの抵抗があり、それぞれの上下に電圧計を置いてみました。今両方とも抵抗値が1kΩで同じなので、 両方とも2.5Vを示しています。勿論 上の抵抗値を大きくすれば、上の抵抗の電位差は大きく、その分下の電位差は小さくなります。 抵抗値でそれぞれの電位差は上下しますが、2箇所の電位差を足すと必ず5Vになるのはいいですよね。 では、左から2番目の回路で「抵抗の前後」と「スイッチの前後」で電圧計を使って測るとそれぞれ何ボルトになるでしょうか? スイッチをオンにしているときとオフにしているとき、「抵抗器前後の電位差」と「スイッチ前後の電位差」は、それぞれいくつになるのでしょうか?
中学校の理科では「電流計は回路に直列につないで計測し、電圧計は回路に並列につないで計測する」と習います。 電圧計はその場(一点)の電圧を測っているわけではありません。2点間の電圧の差を測るものです。 電位差は相対値であることも忘れてはいけません。プラス(電源)側の電圧値を5V、マイナス(Gnd)側を0Vとしていますが、プラス(電源)側を0Vとしても一向に構わないわけです。 そのときはマイナス(Gnd)側は-5Vということになります。しかしどのようにしても、上端と下端の電位差は5Vということでこれは変わりません!
左から2番目の回路図ですが、スイッチをオンしたときの電位差は分かりやすいと思います。抵抗の前後が5Vでスイッチの前後は電位差0Vです。 スイッチを切った場合はどうでしょう? ぼんやり考えると「抵抗の前後の電位差」は、抵抗があるのだからやっぱり電位差5Vっていう気がしませんか? 私は電子回路を覚える前はそう思ってしまいました。 私自身電圧を正しく理解してなかったのですね。答えは電位差0Vです。そして切ってある「スイッチ前後の電位差」が5Vになります。 抵抗とスイッチの間、ここが電気が流れているとき電圧値が0Vなのに、流れてないときは5Vに上がるという なんか当初違和感がありました。 でも今は「スイッチ切ったとき=ハイ・インピーダンス=超巨大抵抗値と考えれば当たり前か。そもそも電流流れてないからスイッチより上全体が 5Vになるよな」と思えるようになりました。 ここで重要なのはデジタル回路を考えるときは、電位差を追うのではなく、その位置の電圧値を考えるようにするということです。 つまりシミュレータの(緑や灰色の)色を考えるようにすると理解がしやすいです。
図1-7 抵抗やスイッチを2つにした回路
図1-7の一番右のスイッチ2つの回路図についてです。上のスイッチだけ閉じて下は開けると、下のスイッチまでが5V(緑)その下が0V(灰色)になります。下のスイッチだけを閉じて上を開けると、上のスイッチまでが5Vでその下が0Vになります。両方閉じたらやってはいけない短絡です。 ではスイッチを両方開けたらどうなるでしょう?上のスイッチまでが5Vで、下のスイッチより下は0Vはその通りです。 では「上下スイッチの間」の宙ぶらりん領域はどうでしょうか?シミュレーターでは灰色になっていますが、 実際にはここは何Vになるのか分かりません。コンデンサーのように電気を貯められると仮定すれば、最後まで繋がっていたほうの電圧に等しくなりそうですが、 短い導線ではどうなるかわかりません。シミュレーションでなく実際でもこの宙ぶらりん部分は手を近づけたりすると静電気の影響で簡単に電圧が上下したり、 周りに影響されやすい不安定な電圧値になります。
実はこの宙ぶらりん、トランジスタのベースと物理スイッチの間にも同じことが言えます。これまで示してきたバイポーラトランジスタではベース・エミッタ間に 電流を流すか流さないかでオンオフを制御するので、さほど問題にならないのですが、よく使われる集積回路ではMOSFET(モスエフティーピー・モスフェット)と呼ばれる 素子(バイポーラに対しユニポーラトランジスタといいます)が使われます。MOSFETではスイッチに当たる部分をゲートと言いますが、ここに電圧を与えるだけで電流の流れをオンオフできる素子です。 電流を流す必要がありません。逆に電流を流す必要がないため、ゲートとスイッチの間を宙ぶらりんにしておくと、動作が不安定になります。 宙ぶらりんの部分に手を近づけるだけで、電流が流れだしたり止まったりということが起こりだします。

これを避けるにはどうすればよいでしょうか? 宙ぶらりん状態を避けて、スイッチが切れている状態でも5V(High)か0V(Low)かの電圧の初期値を与えてあげればオーケーです