スポンサーリンク
ものづくり・DIY

トランジスタのスイッチ回路|Arduinoでモーターや多くのLEDを動かす、ベース抵抗の決め方

モーターを動かす例とダイオード

なぜダイオードが必要か

モーターやリレーの中にはコイルがあります。コイルは電流の変化を嫌う性質があり、トランジスタで電流を止めた瞬間に、電流を流し続けようとして高い電圧を発生させます。これを逆起電力といいます。この電圧はトランジスタのコレクタにかかるので、耐圧を超えるとトランジスタが壊れることがあります。

スポンサーリンク
小型モーターとブレッドボードと電池ボックス
モーターは別の電源で動かすと安定する

そこで、モーターと並列にダイオードをつなぎます。トランジスタがオフになった瞬間、コイルの電流はこのダイオードを通って回り続け、モーターの中で消費されます。これをフライバックダイオードや還流ダイオードと呼びます。

向き

ダイオードは、普段は電流が流れない向きでつなぎます。

  • カソード(帯のある側)を、負荷の電源のプラス側に。
  • アノード(帯のない側)を、トランジスタのコレクタ側に。

向きを逆にすると、トランジスタがオンになった瞬間にダイオードを通って大きな電流が流れ、ショートに近い状態になります。電源を入れる前に、必ず確かめます。

ダイオードには、モーターの電流以上を流せる物を選びます。小信号用の小さなダイオードではなく、整流用ダイオードやショットキーバリアダイオードがよく使われます。

起動時の電流に注意

モーターが止まった状態から動き出す瞬間には、回っているときの数倍の電流が流れます。軸が止められた状態でも同じです。「定格100mAのモーターだから100mAのトランジスタでよい」とは考えず、止まった状態の電流(データシートの「ストール電流」)か、その見当をもとに、余裕を持って部品を選びます。

小型のDCモーターでは、起動時に1Aを超えることもあります。このような場合、小信号用のトランジスタでは足りないので、MOSFETやモータードライバを使います。

電源を分ける

モーターの電流の変動やノイズは、Arduinoの動作を不安定にすることがあります。Arduinoが勝手にリセットされる場合は、電源の電圧が下がっている可能性があります。

対策は次のとおりです。

  • モーターの電源とArduinoの電源を分け、GNDだけを共通にする。
  • GNDの配線は、モーターの大きな電流がArduinoのGNDを通らないように引き回す。
  • 電源の近くに、電解コンデンサとセラミックコンデンサを入れる。
モーターをつなぐ前の確認(ダイオードの帯が電源のプラス側、GNDが共通になっている、起動時の電流を見込んだ、ベース抵抗が入っている、モーターの電源を分けた)
通電前に一つずつ指差しする。
スポンサーリンク

プログラムの書き方

オンとオフ

回路がスイッチなので、プログラムは LEDの点滅 と同じです。

const int controlPin = 9;  // ベース抵抗につないだピン

void setup() {
  pinMode(controlPin, OUTPUT);
  digitalWrite(controlPin, LOW);  // 最初はオフにする
}

void loop() {
  digitalWrite(controlPin, HIGH);  // オン
  delay(2000);
  digitalWrite(controlPin, LOW);   // オフ
  delay(2000);
}

setup() の中で、最初に LOW を書いておくと、オフから始まることがはっきりします。

PWMで速さを変える

analogWrite() を使うと、オンとオフを高速に切り替えて、平均の電力を変えられます。これがPWMです。Arduino Unoでは、ピン番号の横に「~」の印があるピンで使えます。

const int controlPin = 9;

void setup() {
  pinMode(controlPin, OUTPUT);
}

void loop() {
  // 少しずつ速くする
  for (int duty = 80; duty <= 255; duty += 5) {
    analogWrite(controlPin, duty);
    delay(50);
  }
  delay(1000);
  analogWrite(controlPin, 0);  // 止める
  delay(2000);
}

モーターは、値が小さいと動き出せずに、うなるだけになることがあります。止まった状態で電流だけが流れるので、低い値を長く続けないようにします。上の例で80から始めているのはそのためですが、適切な値はモーターによって違います。

PWMでも、トランジスタはオンかオフのどちらかなので、基本的に発熱は増えません。ただし切り替えの瞬間に少し熱が出ます。高速な切り替えが必要なときは、専用のドライバを使います。

スポンサーリンク

逆転はできない

この回路で変えられるのは、回す・止める・速さまでです。逆転させるには、電流の向きを変えるHブリッジという回路が必要です。手作りするより、モータードライバICを使うのが確実です。

MOSFET・リレーとの使い分け

同じ「スイッチ」の役割を持つ部品には、ほかにMOSFETとリレーがあります。

部品 動かす方法 得意なこと 苦手なこと
バイポーラトランジスタ ベース電流 小さな負荷、安い、簡単 大電流でベース電流が増える
MOSFET ゲート電圧 大電流、PWM、発熱が少ない 3.3Vや5Vで動く品の選択が必要
リレー コイルの電流 回路を電気的に分ける 動作音、寿命、高速な切り替え

MOSFETを選ぶとき

MOSFETはゲートの電圧で動くので、定常の電流がほとんど流れず、ピンの負担がありません。数百mAから数Aを扱うなら、こちらが有力です。

注意点は、ゲートの電圧です。データシートに書かれた「ゲートしきい値電圧」は、電流が流れ始める電圧で、十分にオンになる電圧ではありません。ドレイン・ソース間のオン抵抗(RDS(on))が、どのゲート電圧で規定されているかを確かめます。5Vや3.3Vで規定された「ロジックレベル」の品を選びます。

リレーを選ぶとき

リレーは電磁石で接点を動かす部品で、制御側と負荷側が電気的に分かれます。ただしコイルの電流が大きいので、Arduinoのピンで直接は動かせず、やはりトランジスタとダイオードが必要です。音がするうえ接点に寿命があるので、速い切り替えには向きません。

電流で選ぶ部品の目安(100mA前後まで、数百mA以上、正転と逆転、回路を分けたい)
数字はおおよその考え方。

よくある失敗と確かめ方

動かないとき

症状 考えられる原因 確かめること
負荷が全く動かない GNDが共通でない、足の並びの間違い GNDの配線、データシートの足の図
負荷が弱い、暗い ベース電流の不足 コレクタとエミッタ間の電圧
オフにならない トランジスタの破損、足の間違い 部品を外して単体で測る
Arduinoがリセットする 電源の電圧が下がる 電源を分ける、コンデンサを入れる
トランジスタが熱い 飽和していない、電流が大きい すぐ電源を切り、計算を見直す
スポンサーリンク

テスターで確かめる手順

  1. Arduinoのピンを HIGH のままにして止める。
  2. ベースとエミッタの間の電圧を測る。0.7〜0.9Vほどが正常の目安。
  3. コレクタとエミッタの間の電圧を測る。0.1〜0.3Vなら飽和している。
  4. 1V以上残っているときは、ベース抵抗を小さくするか、ベース電流の大きい部品に替える。

熱いトランジスタには触れず、電源を切ってから、冷めるのを待ちます。指で確かめる方法はやけどの原因になります。部品が焦げたにおいや、変色があれば、その部品は使わずに交換します。

回路が固まったら、ユニバーサル基板への組み替えでしっかりした形にできます。振動するモーターの回路では、ブレッドボードのままだと接触不良が起こりやすいためです。

まとめ

トランジスタは、ピンの小さな電流で、別の電源の大きな電流を制御する部品です。スイッチとして使うときは、負荷とGNDの間に入れ、ベース抵抗を入れて飽和させます。抵抗値は、負荷の電流の10〜20分の1をベース電流の目標にして、(ピン電圧 − 0.7V) ÷ ベース電流で求めます。

モーターにはフライバックダイオードを忘れず、起動時の大きな電流を見込みます。数百mAを超えるなら、MOSFETやモータードライバに切り替えます。

最初の一歩としては、手持ちの汎用NPNトランジスタと5Vの電源で、LEDを3本並列に点ける回路を組んでみてください。テスターでコレクタとエミッタの間の電圧を測り、0.2V前後になっていれば成功です。飽和した状態を数字で確かめられると、モーターの回路に進むときも自信を持って計算できるようになります。

よくある質問

ベース抵抗はどのくらいの値にすればよいですか?

負荷の電流の10〜20分の1を目標のベース電流にし、ピンの電圧からベースとエミッタ間の約0.7Vを引いて、その電流で割ると求められます。100mAの負荷を5Vのピンで動かすなら、470Ω〜820Ωが目安です。ベース電流がマイコンのピンの許容範囲に収まることも確かめます。

トランジスタのベース抵抗を省略してもよいですか?

省略しないでください。ベースとエミッタの間はダイオードと同じ性質なので、抵抗がないとピンから大きな電流が流れて、マイコンとトランジスタの両方を傷めるおそれがあります。

モーターのフライバックダイオードの向きはどちらですか?

モーターと並列に、普段は電流が流れない向きでつなぎます。カソード(帯のある側)を電源のプラス側に、アノードをトランジスタのコレクタ側に接続します。逆につなぐと電源がショートに近い状態になるので、通電前によく確かめます。

トランジスタが熱くなるのはなぜですか?

ベース電流が足りずに飽和していないか、流している電流が大きすぎる可能性があります。電圧が残ったまま電流が流れると、その積が熱になります。電源を切り、コレクタとエミッタ間の電圧を確かめて、ベース抵抗や部品の選択を見直します。

家庭用の100Vの機器をトランジスタで制御できますか?

この記事の回路は低電圧の直流に限った内容で、交流100Vには使えません。感電や火災の危険があるので、交流100Vを自作の回路で扱うことはおすすめしません。安全認証を受けた市販の機器を使ってください。

コメント

まだコメントはありません。最初の感想をどうぞ。

個人情報(本名・住所・電話番号など)やリンクの書き込みはご遠慮ください。内容によっては表示しないことがあります。プライバシーポリシー

スポンサーリンク
  1. 秋の戸口に並ぶかぼちゃの明かりとかぶ、麦束
  2. 資料を手に落ち着いて話し合う二人
  3. ノートパソコンと資料、外付け記憶装置がある机
  4. 冬の木で越冬する卵のうやミノムシ、テントウムシ
  5. 青い折り鶴と三角に折った紙、無地の折り紙