BBC Micro:bitとトランジスタの記事で、マイクロビットとトランジスタでDCモータのGeekServo 9G Motor-Redを回してみようと試みたが回らなかった。
電気回路とマイクロビットを含めたマイコンの理解を深め、改めて挑戦してみた。
先に結果を載せておくと、
無事、DCモータを回す事が出来た。
マイクロビット、トランジスタとDCモータは上の図のように設置した。
NPN型トランジスタのベースにマイクロビットのGPIO 0 ピンを付け、途中に4.7kΩの抵抗をかました。
DCモータの電源はマイクロビットの3.3Vから供給する事にし、途中に抵抗はかまさない。
トランジスタ3電流増幅作用の記事で用いた図のLEDの箇所をDCモータに置き換えて説明を記載する。
トランジスタとDCモータ間(コネクタ-エミット間)では、今回のDCモータが3.3Vで動作するということで、電圧はそのままで良いという判断をして抵抗器は設置しなかった。
ベースに設置した4.7kΩの抵抗は、いつも話題に挙げているラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作 作る、動かす、しくみがわかる! - ブルーバックスシリーズの特設ページの応用演習のPDFを参考にし、DCモータに100mAに増幅された電流信号を流すことを目標にした。
100mAはギリギリの電流になるが、大きな値の電流を流すのは怖いのでギリギリにした
今回使用したトランジスタは2SC1815L-GRであり、増幅率hFEは200だとする。
ベースに流した電流を増幅する場合、トランジスタのベースとエミッタ間で0.6Vの電圧を必要とすることを考慮に入れる必要があるらしい。
これらの内容を踏まえた上でのマイクロビット-ベース間の抵抗R2は下記の計算で導いた。
R2 = (マイクロビットのGPIO 0 ピンの電圧 - ベース-エミット間の電圧) / (目標の電流 / 増幅率hFE)
R2 = (3.3 - 0.6) / (0.100 / 200)
R2 = 2.7 / (0.1 / 200) = 5400 = 5.4kΩ
※電流信号分のアンペアは考慮に入れなくてよいのか?
DCモータは電流が100mAよりも大きくても問題ないため、4.7kΩの抵抗器を用いることにした。
マイクロビットの方のコードは下記の通り
from microbit import * pin1.write_digital(0) while True: if button_a.is_pressed(): pin0.write_digital(1) if button_b.is_pressed(): pin0.write_digital(0)
この結果は記事の途中に挿入した動画の通り。
実際に動作したことを見れたことによって、トランジスタの理解が少し進んだような気がした。