~トランジスタを学ぶ(その2)~を理解して頂いたと思います。
では、本来の目的にもう一歩近づきます。
《マイコンで電子スイッチを実現する》というモノです。
ちょっと今回は、長くなります。(初級編)という前提ですが、少し踏み込んでプロの領域まで片足位は踏み込んでみます。
大した事では有りません。丁寧に説明します。

因みに、《マイコンで電子スイッチを実現する》としていますが、これはラズパイ等でも同じです。

では始めます。
まず、マイコン(ラズパイも同様)のポートの中身を理解します。
マイコンのポートの事をGPIOと言います。General Purpose Input/Outputの略です。
日本語にすれば《汎用入出力》と言ったところです。

マイコンのポートとは、入力にする事も、出力にする事も出来ます。
これはプログラムの中で決めます。所謂、属性の設定みたいなモノです。プログラムの最初の所で設定します。
だから、入力なのか出力なのか? 使うのか使わないのか?も最初に設定部があり、それを経由してプログラムは走ります。
トランジスタによる電子スイッチを実現する場合には、GPIOは《出力》として使用しますので、その様に設定してください。

ラズパイでLinuxベースで動かしているソフトウェアエンジニアの方々の界隈では『Lチカ』という言葉があります。
以前は一体何の話なのか?と思ってました。どうやら、「LEDをチカチカさせる」の略の様です。
一方、マイコンでファーム開発(組込設計)をやってるエンジニアにとってはとても簡単な事なのですが、ラズパイ系では違う様です。
ラズパイの世界では、GPIOを使ってH/L制御するのはとても(技術的・精神的)ハードルがあると聞いた事もあります。
なので、ラズパイ系の方は頑張ってGPIOポートを出力制御できるところまでは、独自で乗り越えてください。

基本は、マイコンベースでの説明で進めます。
GPIOポートを出力として使用する場合の内部回路を簡潔に描いてみました(下図)。

マイコンのプログラムで《GPIO_出力》からHigh又はLowを出力する内部の仕組みはこの様になっています。
High側のスイッチ(SW1)とLow側のスイッチ(SW2)のどちらをONにして、OFFにするのかというダケです。
状態を表にしています。High側とLow側のSWはどちらのSWをONにして、もう一つをOFFにするのか!と言うことです。

High出力の場合、SW1:ON/SW2:OFF
Low出力の場合、SW2:ON/SW1:OFF

これはプログラムでHigh/Lowを決めれば、マイコン内部の出力制御の回路が自動的にやりますので、不安無しです。
プログラムで決めればよいだけです。

出力は《GPIO_出力》ポートになります。
SW1をONにしたら、出力ポートは、5.0vに繋がります。※SW2はOFF
SW2をONにしたら、出力ポートは、0.0v(GND)に繋がります。※SW1はOFF

High出力をプログラムで命令=出力制御が自動で、SW1:ON/SW2:OFF=GPIO出力:High=5.0v
Low出力をプログラムで命令=出力制御が自動的に、SW2:ON/SW1:OFF=GPIO出力:Low=0.0v(GND)

大体分かると思いますが、
H出力=High=電源電圧(ココでは5.0v)
L出力=Low=GND電圧(=0.0v)
です。
 

この表中に、『High-Z出力』というのがありますね。これはちょっと気になると思います。
我々は「ハイインピー出力」と呼んでます。『ハイ・インピーダンス出力』の略語になります。
※Rは抵抗ですが、中級編で出そうと思っているインピーダンス抵抗の概念がZ(Ω)となります。そのZです。
これは上図で言うと、SW1とSW2が共にOFFの状態です。

これがなぜ「ハイ・インピーダンスなのか?」と疑問の方も居られるでしょう。
これは、SW1の電源側にも、SW2のGND(0v)側にも繋がっていない=∞Ωの抵抗で繋がっている。
 ※この考え方は以前にも使ったと思います。『繋がっていない』=『∞Ωで繋がっている』という考え方。
「∞Ωで電源側とGND側に繋がっている」事から「ハイ(∞)・インピーダンス(Ω)出力」という事です。

もうちょい踏み込んで大事な話もあるのですが、この段階ではこの位の理解で良いです。

 

ここで、ちょっと面倒クサイ事を整理しとかないと、疑問が残るはずです。
「High出力なのかLow出力なのか」という事なんですが、電流の流れを点線で追加しました(下図)。
High出力は電流を《GPIO出力ポート》から出力しています。しかし、
Low出力は電流を《GPIO出力ポート》からマイコンの中に入力しています。
ここで若干混乱する方も居ると思うので、ちゃんと整理しておきます。

GPIOは『General Purpose Input/Output』の略でした。
このGPIOのIOは『Input/Output』ですので、『入出力』です。
まず、この時点での入力?出力?という分岐が有ります。
入力ポートとしての使用:《A/Dコンバータ》、《ポートにH/Lどちらが来てるのか判定》、etc➡状態電圧を検知
出力ポートとしての使用:《外部にH/Lを見せる》➡電圧を外に見せる。
と言うことになります。

では、目的の第一歩である、マイコンとトランジスタ回路とを結合してみましょう(下図)。

ここまでの解説を理解した方はもうこの回路も判ると思います。
トランジスタをONする為に必要なB(ベース)に入る《5v》をGPIO_出力が受け持っています。
SW1がONならば、基本回路そのままです。

そして、SW1がOFFでSW2がONならば、R4の左側はGNDになり、B~E間は0.7vを作れません。
※R4の左側が0v(GND)で、E(エミッタ)も0v(GND)ですから、無理です。
これはトランジスタにベース電流が流れず、コレクタ電流も流れませんので、トランジスタがOFFとなります。

GPIO_出力がH(5.0v)かL(0.0v/GND)かで、トランジスタにコレクタ電流が流れる(ON)か、流れないか(OFF)かをコントロールしています。
これが、トランジスタスイッチを実現したことになります。
基本はこれでOKの筈です。

ただし、ツマンナイ回路でもあります。

より実用的な方法としてLED(発光ダイオード)をON/OFFしてみましょう。
まさに、ラズパイでは『Lチカ』です。
回路は以下のようになります。

これまでの知識をフル活用してこの回路は出来ています。
⑪の資料中では、「R5に電流が流れるか・流れないか」という実にツマラナイ回路でしたw
では、R5をLED(発光ダイオード)に変えて、それに電流を流すか・流さないかという風にしました。
これは面白そうです。

単純に、R5をLEDにしてもダメです。Vf=3.1vでしたので、トランジスタ(Q7)がONするとV残(v)が計算上でますね。
だから、電流制限(決定)抵抗は必須です。
V残(v)=1.9vですので、それをR7で電流決めて上げれば、LEDに流したい電流値を決定できます。
これは大丈夫ですね。

これは余りハードルが高く無いと思います。これまでの知識の集約でできますよね。

ちょっとここで、マイコンのポート出力の所について復習しておきます。

ちょっと、SW1とSW2について改めて考えてみると、このSW1/SW2こそが実はトランジスタスイッチなのです。
実際、ここはトランジスタスイッチに成っています。
※ちょっと早いですが、この中のトランジスタは後に解説予定のFET(Field Effect Transistor)というトランジスタです。
まぁ、似たようなもんだと思っておいてくださいw

すると、地頭の良い人は気付く筈です。
「なぜ内部にトランジスタスイッチがあるのに、わざわざ外にトランジスタをわざわざ付けないと行けないのか?」
という疑問です。

その思いを、実際に描いてみました(下図) 《他案》とします。

別にこれでも良さそうに見えます。
コレはコレで回路的には成立していると思いませんか?
実際、成立しています。問題は回路的には無いんです。
ただし、別の視点で問題があるのです。
これはちょっと《中級》な内容なのですが、頑張って理解してみましょう。

このマイコンの内部のGPIOポートに使われている上側のSWと下側のSW。
※SW=スイッチ
『微小のトランジスタ』と前に書きました。
どの位『微小』かというと、もの凄く微小で、電流を殆ど流せないのです。
標準的な理解では、『1mA以下』が一般的です。
昔のマイコンは、GPIOポートの内幾つかを『大電流ポート』として特別に準備しているモノが結構在りました。
10mAや20mAといった電流を流せる特別に準備した専用ポートです。最近はちょっと減ってきた感じです。
在るには在ります。

実際に、マイコンの仕様書を見てみましょう(ここが中級)。
私共が良く使う、NordicSemiconductor社のBLEチップnRF52840。
「無線チップじゃないか!」と言う人も居るとは思いますが、実はそれは間違いで、マイコンです。
マイコンにBLEの機能が追加されているICなんです。だからマイコンです。

該当する部分を抜粋してみました。
ここで注目するのは、
IOLとIOHです。※文字フォントが小さく出来ませんので、図を参照ください。
 ・IOL:Lを出力(O)した時の吸い込める電流値
 ・IOH:Hを出力(O)した時の吐き出せる電流値
という意味です。

仕様書によれば、Typ(標準)で、2mAになってますね。(max)では4mAとなっています。
「じゃあ、最大で4mA吐き出せたり・吸い込んだりできる」んだから4mA行けるという事では在りません。
こう言う場合は、Typ(標準)の2mA以内で使うのがマナーであり、信頼性を担保する設計という事です。
※実際には4mAで設計しても巧く行くとは思います。メーカーもマージン取ってますから。
 しかし、マナーとしては使わないのがエンジニアとしての正しい姿です。

オマケの情報ですが、上段半分の所は出力電圧の規格です。
コレ観ると、
VOH(出力H時の出力電圧):Min規格としてはVDD-0.4(v)以上はでます。って事に成ってますね。
5.0vならば5.0vがでるというワケではないって事です。これは要注意事項です。そう理解しておきます。
※まぁ、大体ちゃんとVDD(ここでは5v)がでますけどねw

そうそう、1つ忘れてました。LED(青色)の仕様書もちゃんと見てみましょう。以下の様に成ってます。

仕様書上では、電流を20mA流す前提での仕様が表記されています。
しかしこれは20mA流しなさい!という事ではないのです。
実際に電流をどの位流したいのか!は貴方(私)の意志でしたよね。
本当に実験してみました。
すると、20mAでも5mAでも余り変わらずかなり明るい状態でした。
4mAはちょっと5mAとの違いが分かります。ならば、一番効率が良いのは5mAと判断しました。
なので、仕様書では20mAの時のデータが書かれてますが、私個人の意志として5mAで充分だと決断しました。
なので、5mA流したいという意図で、電流制限抵抗を計算すれば抵抗値がすぐ求められますね。

はい、5mAにするにはR8=380Ωとなりました。
しかし、点灯させるには、GPIO_出力をLowにすれば良いはずです。
すると、この時内部のトランジスタスイッチのSW2には5mAが流れ込みます。

Nordicの仕様書では、たしか2mA(Typ)でした。Maxでも4mAまでの制限です。
するとLow時には5.0mAがGPIO_出力ポートに流れ込むことになります。
これは『マイコンが壊れる』という事になってしまいます。

如何でしょうか、仕様書をじっくり読んで、設計しておかないとこう言う風になってマイコンを壊してしまいます。
なので、この『他案』は、ハードウェアの実力規格上、やっては成らない回路という事になるわけです。

ただ、この《他案》を考えられた人は、トランジスタスイッチの回路が良く分かって来ていると言えます。
そのアイディアに結びついた事が素晴らしいです。
前にも書きましたが、『巧く行かない理由と根拠を理解し納得すれば、巧く行く回路が判る』という事。当にこの事です。

すると、マイコン内部のSWを使うとリスクが多く、壊す可能性が在るわけです。
しかし、外のトランジスタを追加すれば、マイコンの内部仕様を意識せずLEDを点灯・点滅させられるという事になります。

ここで遅ればせながら、トランジスタのIbとIcの関係に一定の式が在る事を公開します。
《Ic=hfe×Ib》
という関係が有るのです。
言葉で書けば、
《トランジスタをONすると、Ibのhfe倍のIcが流れる》という事です。
漸く、ここら辺の仕組みが判られたと思います。

大体ですが、hfeは20~200位です。だいたいですw
「凄く大雑把で広い幅で納得行かない」方の居られる筈ですw

しかし、こんな感じで実際に大雑把なのです。そして、テキトーですw
そして、テキトーで充分なんですw

というのも、hfeも電源電圧・流す電流値・温度とかでもの凄く変わるのです。
「じゃぁ参考にならない!」と感じると思います。

ではどう納得するのか?という話なんですが、

流したいIc(コレクタ電流)は決めますよね。そして、最低のhfeになると想定して(トランジスタ毎に違います)、
Ib=Ic/hfe
以上のベース電流を流し込んでおけば大丈夫!!って理解なのです。
Ic:5mA
hfe:最低の20と想定する。
するとIb=5mA/20=0.25mAとなります。

ちゃんとONする!には0.25mAよりも大きなIbを流しとこう!と思うと、
Ib=0.5mAにしておけば、Ic=10mA/hfe20(最低)は流せますから充分だ!という考えで済ませられます。
hfeが最低の20だと想定して、さらにベース電流を2倍の0.5mAにしとけば余裕タップリ!という設計です。
実際、こんな感じのいい加減な根拠で決めるんです。
あり得ないかもしれませんが、これは凄く論理的なアプローチなのです。ここら辺の按分や寛容が判らないと電気回路設計が出来ませんw

世の中《杓子定規》なルール主義者や基準主義者には、ロクな奴が居ませんがw それと同じだと思ってくださいw
信頼性を確保した、いい加減で確実な設計手法が重要でして、こう言う勘所と寛容性が必要なんですwww 
ホントにそうなんです。プロが言うので間違い無いですw

ここら辺も何度も繰り返して、各ステップを納得してみてください。

まぁ、こうやって改めてみますと、
少ないベース電流で大電流を制御している、《トランジスタ・スイッチ》が実現出来た!と思いませんか?
これで一定の目標は達したと思います。
如何でしょうか?
 

SNS SHARE