第十三回 トランジスタ

第十三回 トランジスタ

電子工作創作表現(2019/10/4)

スライドPDF

後期の方針

  • もう少し踏み込んだ制御について
      
  • 具体的な部品やライブラリを使います
後期では、もう少し具体的な部品やライブラリを使った制御についてやっていきます。
前期は電子回路のベーシックな所を触ったという感じなので、後期はもう少し色々なことができるモジュールやライブラリを紹介していきます。
ただ、そうなってくると回路自体1個2~3000円したり、Arduinoに実装するだけで90分終わってしまうので、授業中全員に触ってもらうのが申し訳ないんですが難しくなってきます。

お試しデバイス

  • 講義で扱った参考部品を研究室に置いてもらうようにします

  • 「借りる→触る→自分で作ってみる」をやってみてください。

なので、講義中に扱ったデバイスについてはサンプル的に作ったものを研究室に置いてもらうことにしようと思っています。
興味があるもの、作品として使ってみたいものを授業後に借りてもらって、実際に動かしてみて良さそうだったら自分でそれを見ながら同じ物を作ってみる、という仕組みにしますので、試してみてください。

トランジスタを使う

photo

  • Arduinoから流せる電気は、5V20mA(=0.1W)程度
     
  • モーターやパワーLEDを使おうとすると電力不足
ということで今回はトランジスタについてやっていきます。ArduinoにはデジタルIOピンがあって、そこから5Vの電気信号をオンオフできるというところまでは前期でやりました。しかしこの出力は電気としては微弱です。小さなLEDくらいなら光らせることができますが、小さなLEDくらいしか光らせることができません。

プログラムで強い電気をオン・オフするためには、他からより多くの電気を引っ張ってくる必要があるわけですが、それを可能にするのがトランジスタです。

電流を増幅する

shield

  • 基本的なトランジスタは3本線

  • 1本から大きな電気を持ってきて、もう1本に流す

  • 残りの1本をArduinoなどにつないで、流す量を指示する

基本的には3本の線があり、2本の間を大きな電流が流れるようになっています。流れる量は残りのもう1本にArduinoから流す電気によって決定されるので、トランジスタを使えばArduinoから大きな電流をコントロールすることができるというわけです。

今回はトランジスタの2SC3851を使って200mA流れるLEDをサンプルとして用意しました。

コレクタ・エミッタ・ベース(NPN型の場合)

  • 必要な電流を集める端子なのでコレクタ(Collector)
     
  • 集めた電流を放出する端子なのでエミッタ(Emitter)
     
  • Arduinoから電気を送るベース(Base)
3つの端子にはコレクタ・エミッタ・ベースという名前が付いています。電気を集める線なのでコレクター、電気を放出する線なのでエミッター、ベースはちょっと関連付けしづらいですが、コレクタとエミッタさえ覚えれば消去法でどの線を繋ぐべきかわかると思います。

図のように接続をして、VCCとコレクタの間、もしくはエミッタとGNDの間に負荷となるモーターやLEDを繋ぎます。

流す電流量を決める

  • Arduinoから流す電流の数百倍の電流が流れる。
     
  • 倍率はトランジスタの種類で決まるが、計算が面倒

transistor_model

コレクタからエミッタに抜けていく電流の量は、Arduinoからベースに流れる電流と、トランジスタの増幅率で決まります。図の中ではArduinoに1kΩがついていておおよそ20mAが流れるので、2SC3851のIc-Vce特性では800mA弱までポテンシャルとしては流れます。

ただこれはザックリとした計算で、厳密に計算しようとするとベース側とエミッタ側の抵抗値、電圧を踏まえた上で計算しなくてはいけません。

十分な倍率を取り、抵抗で制限する

  • ベース電流の数十~数百倍の電流を流せるが、抵抗を使ってそれ以下に抑えることができる
     
  • 電流を多めに流すようにして、あとは抵抗で電流を必要な量に制限する
ただ作品制作でそこまで厳密にやる必要も無いので、ざっくりと十分大きな電流値を確保したら抵抗等で電流を落として使うという考え方がやりやすいと思います。
サンプルでは5Vに対して7.5Ω(15Ωを並列つなぎ)の抵抗を入れておよそ200mAが流れるようにしています。

サンプルコード

  • 接続したら、ベース電流に電気を流すだけ
     
  • digitalWrite()もしくはanalogWrite()で制御する
サンプルコードも以下に記載しておきます。6番ピンにつないでいるので、digitalWriteもしくはanalogWriteで電気を流すだけです。つけっぱなしになるとだんだん熱くなってくるので、試す時は気を付けてください。
void setup() {
  pinMode(6, OUTPUT);
}

void loop() {
  analogWrite(6, max(0, sin(millis() / 300.0) * 255));
}

オーソドックスなトランジスタ

  • 今日紹介したのは「NPN型バイポーラトランジスタ」
     
  • 2SC1815:定番中の定番。150mAくらいまでの時はこれがおススメ
     
  • 2SC3851:より大きな電流用で、定格は4A。長時間運用の際は熱に注意。
今回紹介したのは、NPN型バイポーラトランジスタというタイプです。PNP型や、電界効果トランジスタ、通称FETと呼ばれるトランジスタもあるので、購入する際は気を付けてみてください。
NPN型の中にもたくさん種類がありますが、自分が普段使うのも大体2~3種類です。ちょっとだけ電流を上げたくて小さく収めたい時は2SC1815、もう少し大きい電流を流したい時にはサンプルで使用した2SC3851を使うなど、で十分対応可能だと思います。

更に大きい数アンペアクラスのモーターやLEDを動かす時には専用のドライバを使った方が良いと思いますので、調べてみたり個別に聞いてみたりしてください。