見出し画像

microbit勉強会 自習テキスト 【その2】

オンやる×サイこみゅ!リアルイベント「サイバー大学生、ゆるっとe運動会やるってよ」ではIT系オンライン大学にちなんで小型ハードウェアmicro:bitを使ってミニ運動会を楽しむ予定です。
こちらの記事ではmicro:bitについて機能や使い方などより理解するため、卒業生(組込屋先生)を中心にコミュニティ内限定で開催している「microbit勉強会」用に作成された”第二弾”自作テキストを書き起こしたもののをご紹介していきます。
※まだ、第一弾を読んでいない方はぜひこちらから、microbit勉強会 自習テキスト 【その1】をごらんください!


はじめに

どうも。組込屋(@yyatsuo)です。

前回に引き続きmicrobitの外の回路を動かす方法についてテキストで解説していこうと思います。今回は誰もが一度は耳にしたことがあるであろうトランジスタという部品の話をしていきます。かなり面倒な話をしますけど、ここでトランジスタの使い方がわかると工作の幅がグッと広がるので頑張ってついてきてくださいね。

前回はだらだらっと説明してしまったのですが、今回は文字が多くなるため章立てしてみました。ちょっとは読みやすくなっていると良いのですが。

では早速はじめていきましょう!
部品をお持ちでない方は読み物としてお楽しみください。

【必要なもの】

  • microbit

  • NPN型トランジスタ
    ※たとえば2SC1815 や 8050 トランジスタなどがよく使われます

  • DCモーター(130モーターなど)

  • ダイオード

  • ブレッドボード

  • GPIO拡張ボード

なぜトランジスタが必要なのか?

前回はP0端子からLEDをドライブする方法について勉強しました。ところである部品を動かすことをドライブするとか駆動するといいます。この言い方はちょっとカッコイイので使いこなせるようになりましょう。で、我々の目的はモーターをドライブすることでしたね。さてどうすればいいのでしょうか?普通に考えればこうですよね。ごく自然な発想です。

図1

こんな方法もあります。これを自力で思いつける人は電子工作の素養があるか、ちょっとひねくれてるかのどちらか、あるいは両方です。

図2

P0端子のデジタル出力が1の時は3.3Vが出力されるため電源の3.3Vとの電位差がなくなりモーターは動きません。逆に端子が0の時は0Vになって電位差が生まれます。するとモーターに電流が流れる、という仕組みになっています。

余談ですが、これを「吸い込み」でP0端子を使うなどと呼びます。端子の使い方としては「出力」なのですが電流はmicrobit側に向かって吸い込まれるように流れていきますよね。

吸い込みの逆、つまり図1の使い方を「吐き出し」と言ったりもしますがこの言い方はなぜかあまり使われないような気がします。

さて、このどちらかの方法で動けば話は早いのですがそう簡単じゃないわけです。

ここでmicrobitのデータシートを確認してみましょう。
Edge Connector & micro:bit pinout
このページのmicrobit GPIO capabilityという項目を見てください。

ところでGPIOというのはGeneral Purpose Input/Output の略です。日本語だと汎用入出力とか言ったりもしますが長いのでGPIOと呼ぶ人の方が多いです。読み方はそのまま「ジーピーアイオー」です。microbitのP0、P1、P2は典型的なGPIO端子です。

こういうのを見せられるとわけがわからなくて頭が痛くなりますね。必要な情報だけ拾い読みしてみましょう。

探しているのはこの表の Max source current from IO pin という項目です。5mAと書かれています。どういうことかというとGPIOが吐き出しで使える最大の電流は5mAに制限されていますよ。ということです。 

もうひとつ Max sink current into IO pin も 5mA と書かれています。これは逆にGPIOに吸い込ませる最大の電流は5mAにしてくださいね。ということになります。

さて、ここでアレっ?と思った人もいるかもしれません。私はこの表を見たときにちょっと焦りました。

前回のLチカではP0端子から15mAを引っ張ろうとしていたのですが、実は5mAで制限されていたわけですね。データシートをちゃんと見ないで、普通のマイコンなら50mAくらい使えるはずだから大丈夫だろうと思って調べなかった誰かさんのせいです。

それで前回のLEDの実験は問題ないかというと厳密には問題あるんですけど、実際にはほぼ問題なかったりするんですね。どっちやねん。

ここで自己正当化のために前回の最後にちょっとだけ説明しかけた順電圧の話をします。

LEDの抵抗はご存知の通りほぼゼロなのですが、電流が通過するときなぜか電圧が下がります。これを順電圧降下と呼びます。抵抗がゼロなのに電圧が下がるというのはちょっと不思議ですが説明しはじめるとまた長くなるのでそういうものだと思ってください。ここは今日のメインテーマじゃないんです…

で、この順電圧降下というやつは部品の個体差や温度でばらつく性質がありますが、そういうこまかいことをまるっと無視すると、一般的なLEDの順電圧はだいたい2Vと言われています。3.3V回路では無視して良い大きさじゃありません。

もしテスターをお持ちでしたらLEDのアノードとカソードで実際に電圧がどれくらい変わるのか測ってみることをおすすめします。

てなわけで、本来であれば電流値の計算をするときに電圧からこの2Vを引かないといけないのです。ではもう一度Lチカをやった時の電流値を計算してみましょう。

P0端子の出力電圧3.3Vから順電圧の2Vを引きます。
オームの法則はもう説明しなくても大丈夫ですよね?

(3.3V - 2V) / 220Ω = 0.0059A ≒ 6mA

ということで15mAくらいとか説明しつつ実はもっと少ない6mAしか流れていませんでした。

ちょっと5mAはオーバーしていますがまぁこれくらいならOKです。

神経質な人は300Ωくらいにしておいた方が精神衛生上良いかもしれませんが、220Ωで使い続けたところでmicrobitが壊れるなんてことはまずないでしょう。

……思わぬところで脇道に逸れてしまいましたが話をモーターに戻します。

いまドライブしようとしているモーターはDCモーターブラシ付モーターという種類です。電子工作だとステッピングモーターとかサーボモーターに並んでよく使われる3大モーター(と、勝手に命名)のうちの1つです。

いまから使うのはそのブラシ付モーターのなかでもとくに130モーターという愛称で呼ばれているモーターです。界隈ではマブチのFA-130RAとその互換品のことをひっくるめて130モーターと呼びます。小学校の教材で使われるモーターやミニ四駆をはじめとしたおもちゃのモーターもこの規格で作られていますので誰もが一度は目にしたことがあるはずです。

このマブチのFA-130RAのデータシートを見てみましょう。わたしの手元にあるのはこれまた仕様不明な互換品ですが、本家とだいたい似たような仕様になっていると想定します。

こういう勝手な想定で痛い目を見ることはよくありますが、それも電子工作の醍醐味と割り切りましょう。割り切れなければ中華製の安い部品には手を出さない方が吉です。

この表のNO LOAD (=無負荷)のところを見てください。1.5Vだと0.20A(=200mA)、3Vだと0.15A(=150mA)となっていますね。NO LOAD CURRENTとはモーターの軸に何も負荷がかからない状態で回した時に流れる電流のことなのですが、とにかくLEDとは必要な電流の桁が違うことがわかると思います。

なので直接P0端子に繋いでもモーターは動かないわけです。150mA必要だといっているとこに5mA流しても動かなそうなことはなんとなくわかりますよね。

そこで今日の本題であるトランジスタの話に入ります。ということで、ここまでが導入部分でした。いや~~~長かった…

もう飽きちゃったかもしれませんがもう少し辛抱してください。この話が終わらないと回路が組めませんので。

そんなわけでここからトランジスタの話をしたいと思います。トランジスタを使うことでこのGPIOポートの電流制限を突破できるわけです。トランジスタは半導体産業勃興のきっかけになったすごい発明品なんですよ!

トランジスタって何?

みなさんはトランジスタってご存知ですか?名前だけは知っていても実際にどういうものか知らないって人が多いんじゃないかと思います。

トランジスタといっても様々なタイプのものがありますが、電子工作でよく使われるのは半円筒に3本の足がついているこういうタイプのもので、バイポーラ型と呼ばれるタイプです。他にも電解効果型とか色々ありますが、そのあたりはご自身で調べてみてください。

回路図記号はこうです。

回路図記号

トランジスタには極性の違いでNPNPNPの2種類があります。

一般的に使われるのはほぼNPN型です。あえてPNP型を使う理由も利点もほぼ無いのでPNP型のことは忘れてしまいましょう。

見てわかる通り、この部品の特徴は足が三本あることですね。それぞれの端子の役割から B(ベース)、C(コレクタ)、E(エミッタ)という名前がついています。

日本では伝統的にバイポーラ型NPNトランジスタといえばTOSHIBAの2SC1815!と言われるほどド定番として長らく使われてきました。惜しまれながらも10年ほど前にディスコン(業界のビジネススラングで製造停止という意味です)になっちゃいましたが、互換品が様々なメーカーで製造されています。この互換品をC1815と総称することがあります。

この2SC1815、ディスコンが決まった時に流通在庫を大量購入していまだに余らせちゃってる人はたぶん私だけではないと思います。

奇しくも今月、TOSHIBAが上場廃止しますね。栄枯盛衰。またひとつの時代が終わってしまいました。

ということでAliExpressなどの海外通販の隆盛も手伝って、ここ10年でSS8050という別系統のNPNトランジスタが新定番として台頭してきていて、海外の製品や電子工作キットなどでよく見かけます。この系統の互換品をS8050または単に8050と総称することがあります。

この代表的な2種類のトランジスタ、どちらが良いとか悪いとかは特に無いのですが、面倒なことに足の並び順(ピン配列とかピン配とか言います)がちょっと違うのです。

 
8050系のデータシートから抜粋。ピン配は左から E B C 
ちなみにTO-92は品番ではなく外形の規格です。

C1815系のデータシートから抜粋。ピン配は左から E C B
ちなみにTO-92は品番ではなく外形の規格です。

なのでトランジスタを使うときはまずデータシートを探すようにしてみてください。もしデータシートが無ければ部品に印刷してある品番からC1815系なのかS8050系なのかを見るようにしてください。

さらに面倒なことにC1815系の名前がついているのにS8050系のピン配などという厄介な部品まであるそうですよ。

で、このトランジスタってどんな部品なの?という話ですが、一般的には「増幅作用」だの「スイッチング作用」だのと説明されることが多いです。

小難しい言い方をしていますが、使い方としてはそんなに難しい部品ではありません。

B-E間にちょろっと電流を流すとその何倍もの大きな電流がC-E間に流れます。
これがトランジスタの本質です。

記号の矢印はダイオードなので、ちょろっと流してあげる電流の向きだと思っておけばOKです。忘れちゃった人のために記号を再掲しておきますね。

回路図記号(再掲)

トランジスタの使い方

「ちょろっと電流を流す」をどう実現するのかというと、もうお分かりですね。
LEDと同じで電流制限抵抗をつけてやれば良いのです。

典型的な回路だとこんな感じで組みます。

ポートの出力がLo (0) の場合、B-E間には電流が流れないためC-E間に流せる最大電流は0になります。つまり、何も起こりません。

ポートの出力がHi (1) の場合、B-E間に電流が流れます。さて、B-E間の電圧をVBEと呼ぶのですが、このVBEは一定で、現在主流のシリコンで作られているトランジスタの場合はだいたい0.7Vで計算すればOKということになっています。

microbit P0が3.3VでVBEが0.7V、E端子側の電圧はGNDで0Vですので、抵抗Rの両端にかかっている電圧は3.3Vと0.7Vになるので、電位差は3.3-0.7 = 2.6Vということになります。

R1を1kΩ = 1000Ω だとしてみましょう。トランジスタはB-E間に流れる電流は

I= (3.3V-0.7V) / 1000Ω = 0.0026A = 2.6 mA

2.6mAですね。

で、たとえばこのトランジスタの増幅率(=hfeと呼びます)が 100 と仮定すると、C-E間に流せる最大電流は 2.6.mAの100倍の270mA となります。なので、P0端子をHi (1) にすることでモーターが5V電源から回転に必要な電流を引っ張ってくることが可能になります。

この増幅率 hfe というのがなかなかやっかいで、部品や温度でばらつきます。このばらつきは結構大きく、データシートには増幅率は70~700などと書かれています。

1812系でも少しお高いトランジスタになると、だいたいの増幅率でこまかくランクわけされているため、ばらつきはもっと少なくなります。またトランジスタによってはtyp値(typical値=直訳すれば典型値、いわゆる代表値)が決められています。データシートがあるやつはそれを参考にしてもいいのですが、素性不明なやつはtyp値すらよくわからんという問題があります。まぁ測ればいいんですけどね。

運良くデータシートがついていたとしても肝心のtyp値が空欄ってこともありますが笑

参考までに、8050系のトランジスタの増幅率は、どんなものでも 85~300 の範囲に収まるらしいと言われています。また、回路設計の本にはだいたい100で考えておけばOKなどと書かれていたりします。

実際に使ってみよう

お待たせいたしました。

ということでようやく回路が組めますね。実際にモーターを回すための回路がこちらになります。トランジスタのC端子側に回路を作りましたが特に深い意味はありません。E端子側に回路を作ることももちろん可能です。作図ソフトの関係で抵抗が旧JIS記号になっていたり、トランジスタが丸で囲まれていなかったりしますがお許しください。

ではこれをブレッドボード上に配置してみましょう。ダイオードの極性に気を付けてください。このダイオードに関しては後ほど説明します。ちなみに私、ブレッドボードが苦手で必ず一回は繋ぎ間違えたりします。これ作ったときもダイオードを一個燃やしました…

プログラムは前回の使いまわしです。これでAボタンを押すとモーターがまわるはずです。

フリーホイールダイオード

さて、なんの説明もなく突然あらわれたダイオードですが、回路を保護する目的で入れています。このダイオードがないとトランジスタが壊れる可能性があるわけです。ちょっと専門的に言うと、このダイオードを「フリーホイールダイオード」と言います。

一応説明しますが概要だけ… つまらない話になりますので流し読み推奨です。読み飛ばしやすいように一段下げておきますね。

DCモーターの中身がコイルであることはご存知かと思います。このコイルはインダクタとも呼ぶわけですが、こいつは流れる電流によって形成される磁場にエネルギーを蓄える性質があります。で、このインダクタというのは電流の変化を嫌うという性質も持っています。

このあたりって、実は中学校でやってるはずなんですけどなぜかほとんどの人は忘れてしまっていると思います。ファラデーの電磁誘導の法則とか覚えてますか?ファラデーの法則、アンペールの法則、レンツの法則、右ネジの法則、左手の法則とか、、、電流と磁界に関してはいろいろな法則がありましたね。それらが関係するお話です。

インダクタは自身に流れている電流が減るとそれに抵抗するため磁場に蓄えたエネルギーで高い電圧を発生させて、電流の変化を打ち消そうとします。これを自己誘導、誘導起電力、逆起電力などと呼びます。

モーターを止めるとき、インダクタ(つまりモーターの中のコイルですね)に流れる電流はほぼ一瞬でゼロになります。そのため時間あたりの電流変化率は無限大になるわけです。そうするとインダクタが頑張って電圧を上げるため、その電圧でトランジスタが壊れるわけです。このときに発生する電圧ですが、条件によっては瞬間的に数万ボルトになる場合もあると言われています。

そこで、モーターと平行に逆向きにトランジスタを入れてあげます。このダイオードが逆起電力に対する対策となります。

こうすることによってトランジスタがオフになった後も黄色矢印方向に電流が流せるため、インダクタに蓄えられたエネルギーをゆっくり(数百ミリ秒とかですけど)モーター自身で消費することができます。電流の変化率を下げることで電圧の急激な上昇を防ぐわけです。

以上、説明終わり。

インダクタ(コイル)が入っている部品を使うときは平行逆向きにダイオードを入れる、と覚えておいてください。

お疲れ様でした。

つまらない説明ばかりになってしまいましたがトランジスタの使い方はそんなに難しくないですね。これでやっとモーターを回すことができました!

次回予告?

最後に残念なお知らせです。

実はこのトランジスタは小信号用トランジスタといってモーターを動かすような用途は想定してないんですね。実際動かせはするんですけど、ちょっと無理のある使い方だということは知っておいてください。(※)

通常、モーターをドライブするにはリレーやFETやMOSFETなどが使用されます。FETは基本的にトランジスタと同じ方法で使用できますので、次回はリレーの話をしたいと思います。

次回は今回と同じ回路を使ってPWMの説明をします。さらにこの回路を発展させてリレーを使ったモーターのドライブ方法をご紹介したいと思います。リレーもまた応用範囲が広くていろいろと使い勝手の良い部品ですのでぜひご期待ください!

リレーは単純明快なので説明も今回より短く済むはずです。

※調べてみると8050系のトランジスタを使用したモータードライバモジュールというものがあるらしいのでそんなに無茶な使い方じゃないのかもしれません。わたしは小信号用トランジスタでモーターを回すのは良くないと教わったのですが…

オンやる×サイこみゅ!リアルイベント「サイバー大学生、ゆるっとe運動会やるってよ」公式LP ※鋭意製作中


この記事が気に入ったらサポートをしてみませんか?