目次
ESP32でモーターを駆動する
wak-tech Advent Calender 4日目です。一人です。
今日はESP32でモーターを駆動させます。
ので、今回は主にトランジスタの使い方の紹介になります。
ESP32の購入などはこちらの記事で紹介しています。
動いている様子
トランジスタの使い方
トランジスタはご存知でしょうか。半導体で難しそうと思うかもしれません。
簡単に言ってしまえば電気で動くスイッチです。これがすべての本質です。
今回使うトランジスタを見てみましょう。
トランジスタ 2SC1815GR 60V150mA
秋月電子様のホームページより
3本足が生えていますね。これを回路図で書くと
こうなります。これは、実質下のスイッチと同じです。
ベースに電圧をかけることで、スイッチが押されてコレクタ-エミッタと呼ばれる2つの足が導通します。
つまり、使い方としてはこうです。
- コレクタの先にモーターなどをつなぐ
- エミッタを電源のー(GND)に繋ぐ
- ベースをマイコンのピンに繋ぐ
これで、マイコンのピンをHIGH,LOWにするだけでスイッチングできます。
何故トランジスタを使う必要があるのか?
ただしこれだけではトランジスタを使う理由にはなりません。マイコンのピンに直列でモーターをつないだ方が早いですよね…??
ですが、マイコンのピンには電流制限があります。定格電流というものですね。今回使用するESP32の1つのピンから出せる電流の最大値は現在のところ40mAです。この程度の電流ではモーターは回せません。
そこで、トランジスタの増幅作用を使います。増幅作用とは、小さな電流で大きな電流を制御できるというもの。
例えば今回使う2sc1815というトランジスタのデータシートによればhFE(電流増幅率)が100程度。これはつまりベースに1mAかければコレクタ-エミッタ間に100mA流せるということになります。
回路で書くと
こうです。面倒だったのでESP02の方を使ってしまいました。
ESP32、02ではピンの電圧が3.3Vになっています。IO4がHIGHの時、ベースに流れ込む電流は3.3kΩの抵抗を挟んだ場合、1mAになりますね。
これを流すだけで、モーターが繋がっている方の回路の100mAをオンにできます。少ない電流で大きな電流をオンオフできることから増幅作用と呼ばれています。
100mAに制限している理由は、2SC1815の定格があるためです。
データシートの各定格値を見てみましょう。
コレクタ電流を見てください。150mA以上はこのトランジスタには流せないようです。モーターの抵抗値が分からない場合は、トランジスタを守るためにあえて高い抵抗を挟んで電流を制限しましょう。
また、ベース電流も要注意です。ベース電流はマイコンから出てくる電流で、上図では1mAしかないのでOK。間に抵抗を挟み忘れるとそのままGNDに繋がっているので50mAなどすぐに超えてトランジスタが燃えます。
さらに電流が流せるトランジスタはないのか
このトランジスタ2sc1815はパワーLED等の電子工作用途には最適で安価なためよく使われています。ですが大きなモーターや光源用LEDでは当然150mAでは足りません。
そのため、部品サイズは大きくなりますが様々な定格を持つトランジスタがあります。特にマイコンなどから制御する場合はFETというトランジスタの仲間がおすすめです。いずれFETを使った記事も書きます。
MOSFET FKV575 50V75A
こちらのFETでは最大75Aもの電流を流せます。
回路
さて本題に戻りましょう。今回はESP32からモーターを動かすのが目標でした。正直大きなモーターは150mAでは回らなかったので、少し小さめのドローンに使われるようなモーターを駆動します。
ソースコード(コピペで動く)
void setup() {
// put your setup code here, to run once:
pinMode(26,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
digitalWrite(26,HIGH);
delay(1000);
digitalWrite(26,LOW);
}
ただ26ピンを1秒おきにオンオフしているだけです。いわゆるLチカのモーター版でしょうか。
最後に
このようにトランジスタを使えばマイコンから大電流が操作できます。それこそソリッドステートリレーを使えば、マイコンからAC100Vの電子機器のオンオフができます。これもいずれやりたいですね。
twitterで新着記事が自動通知されるようになっているのでフォローしていただけると喜びます。
ご覧いただきありがとうございました!
FET 勉強しています
モーターもおもしろそうだなあ
ドローンは無理だが
arduino でモーターのスピードを変えて 物を浮かせるぐらいの制御をやりたいなあ